-
Notifications
You must be signed in to change notification settings - Fork 51
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
QuantumCliffordJuMPExt: compute the minimum distance of QLDPC using Mixed Integer Programming #439
base: master
Are you sure you want to change the base?
Conversation
…ixed Integer Programming (MIP)
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #439 +/- ##
==========================================
+ Coverage 82.82% 83.42% +0.60%
==========================================
Files 70 73 +3
Lines 4651 4808 +157
==========================================
+ Hits 3852 4011 +159
+ Misses 799 797 -2 ☔ View full report in Codecov by Sentry. |
Please help review this PR, thank you :) Thanks to GNU for open-souring GLPK. I have tested all the instances of 2bga codes using Possible Future TODOs include:
|
This is really interesting and deserving of a bounty. Regrettably there are a few merge conflicts related to the doc fixes in an earlier PR. Could you fix those? I also probably would suggest looking into a slightly different API, or at least some easier way to support independent solvers. But that can be discussed after the first round of review. |
That's a great suggestion
From A̶s̶ a̶ f̶u̶t̶u̶r̶e̶ T̶O̶D̶O̶:̶ C̶e̶r̶t̶a̶i̶n̶ M̶L̶E̶ d̶e̶c̶o̶d̶e̶r̶s̶ r̶e̶q̶u̶i̶r̶e̶ M̶I̶P̶ s̶o̶l̶v̶e̶r̶s̶ a̶s̶ w̶e̶l̶l̶. T̶h̶i̶s̶ w̶e̶e̶k̶, [̶C̶o̶r̶r̶e̶l̶a̶t̶e̶d̶ d̶e̶c̶o̶d̶i̶n̶g̶ o̶f̶ l̶o̶g̶i̶c̶a̶l̶ a̶l̶g̶o̶r̶i̶t̶h̶m̶s̶ w̶i̶t̶h̶ t̶r̶a̶n̶s̶v̶e̶r̶s̶a̶l̶ g̶a̶t̶e̶]̶(̶h̶t̶t̶p̶s̶:̶//a̶r̶x̶i̶v̶.o̶r̶g̶/p̶d̶f̶/2̶4̶0̶3̶.0̶3̶2̶7̶2̶)̶ a̶p̶p̶e̶a̶r̶e̶d̶ o̶n̶ a̶r̶X̶i̶v̶, a̶n̶d̶ i̶t̶ u̶s̶e̶d̶ M̶L̶E̶ d̶e̶c̶o̶d̶e̶r̶ t̶h̶a̶t̶ u̶s̶e̶ M̶I̶P̶ a̶p̶p̶r̶o̶a̶c̶h̶. T̶h̶i̶s̶ p̶a̶p̶e̶r̶ r̶e̶f̶e̶r̶e̶n̶c̶e̶s̶ t̶h̶e̶ s̶a̶m̶e̶ 2̶0̶1̶1̶ p̶a̶p̶e̶r̶ t̶h̶a̶t̶ i̶n̶t̶r̶o̶d̶u̶c̶e̶d̶ t̶h̶e̶s̶e̶ M̶L̶E̶ d̶e̶c̶o̶d̶e̶r̶s̶ u̶s̶i̶n̶g̶ m̶i̶x̶e̶d̶-̶i̶n̶t̶e̶g̶e̶r̶-̶p̶r̶o̶g̶r̶a̶m̶. The MLE decoder if we implement it using Linear Programming approach is 1000x slower than Chromobius and 300x slower than NN decoder (Reference), so I don't think that going within LP formulation (MLE decoders using LP) approach sounds appealing. We can allow to user to select from these solvers (based on recent trends):
Edit: HiGHS solver will continue to get improvements for MIP problems: |
…KP to tests to extension was not properly callled
Thank you very much for your valuable feedback. The code is now independent of any specific MIP solver. I chose I have not added Regarding multi-threading, I look forward to hearing your thoughts and suggestions regarding the API. Thank you once again! |
I turned this PR into draft to add a better error message for non-CSS codes. This was inspired from a totally random but useful thought. Apologies I turned the PR into draft. A Future TODO would be to add more documentation about two new use cases for MIP solvers from latest papers. The algorithm by default calculates the minimum Hamming weight So, testing is somewhat stringent in |
…throw error when calculating distance of generally non-CSS codes
Please help review this PR, thank you! |
Thank you once again for this helpful insight. After some more introspection, I am turning this back to draft status. This is because today, I came across the latest JuMP discourse post and insightful comment by Oscar: Let the user choose which solver to use. There is no need to add it to the Project.toml. Adding solvers to the Project.toml means that every user installs all of the solvers, even if they never end up using them, and it runs into license issues like the one you are experiencing. This reminded me of your insightful comment. I think this is what you meant by "easier way to support independent solvers"! It seems that I didn't understood it correctly. Currently, I have I added Based on the insights gathered, the user can decide which solver to pass as My apologies for the mistake! I'm glad that your insightful comment reminded me of this! |
The implementation is now independent of solvers, both closed source or open source MIP solvers can now be used! This PR is now ready for review, Thank you! |
This PR implements the Mixed Integer programming (MIP) approach to compute the minimum distance of QLDPC using GNU's Linear Programming Kit. This method is used by Panteleev and Kalachev and by Bravyi et. al.. The latter reference mentioned that this MIP approach was originally developed in 2011 and used in this reference
This PR allows the users to compute the minimum distance with ease and also provide the necessary documentation along with the relevant modern usecases. The tests have been conducted in #435
ILP/MILP methods: https://quantumcomputing.stackexchange.com/questions/37289/compute-the-exact-minimum-distance-of-a-qecc-with-integer-linear-programming-met
P.S. Mixed Integer Programming (MIP) or mixed integer linear program refer to same thing in the literature, in this context.
Edit: