-
Notifications
You must be signed in to change notification settings - Fork 57
Add Zykov and Christofides Algorithms for Chromatic Number #491
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Zykov and Christofides Algorithms for Chromatic Number #491
Conversation
4c77fee
to
101c55d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks pretty reasonable to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This generally looks good, mod some comments. If you're able to address the comments, that'd be great
4db0f0c
to
0af7fc2
Compare
@james-d-mitchell I've made the requested changes based on our discussion yesterday, let me know if you have any further comments. |
We should either update this PR and merge it, or close it. |
Style changes from review Duplicate tests already included Add outline for Byskov algorithm Add function to find three colourable subgraphs Moved three colourable processing to before Byskov Added declaration for Byskovs Handled Special case for three vertices and no maximal independent sets Wasn't actually getting the complement of the independent set Create category isDigraphAlgorithm and sub-category isDigraphColouringAlgorithm Will be used to distinguish different colouring algorithms that are available. Add Bound Global objects for Digraph Colouring Algorithms Update original functions to use new method selection Update test for new method selection Forgot to subtract set before getting the induced subgraph Remove from extreme test as it is far too large for these tests Move tests that are too slow Special case was not needed Add loop checks to Lawler and Byskov Algorithms Remove Extreme Tests Add standard tests that will run in a reasonable amount of time Not all chromatic number tests were duplicated, as some would use too much memory or take too long Fix formatting More formatting issues Should be the last one Added Documentation Misc Comments Make label match docs Optimise away the subdigraph use Remove another copy Fix lawler issues Optimise Byskov clarify todo Revert to using induced subdigraph Fix some linting Missed a few Fix Indent Add method selection objects for Zykov Initial algorithm skeleton Fill in the rest Forgot about edge direction Documentation Start adaptation for pruned trees Simplify logic Add tests for Zykov Add filters and method objects for Christofides Initialise variable for Christofides Update comments Initial version of Christofides implemented. Fixed a few syntax errors Fix calculation of MIS Remove debug print Cleanup christofides fix typo Convert to using Blists Need to benchmark to check improvement Fix formatting Missed some trailing whitespace Restart attempt at in place zykov Revert to just copying In place is more hassle than it's worth Remove redundant extra check Use new function for Christofides Fix merge issues Add vertex ordering to Zykov Add Christofides test Optimise clique finder used Fix lint remove duplicate bib Update for new method selection Fix test output Update Docs Remove unused reference Fix spelling mistake
Add additional explanation to Zykov Improve vertex picking for Zykov Simplify vertex picking for Christofides
2a8b694
to
9235546
Compare
Thanks! |
Add Zykov and Christofides Algorithms for Chromatic Number. This builds on the previous pull request #382 to add two additional algorithms for calculating the Chromatic Number. These use the same method selection as the existing implementations, and so are simply additional options to use.