-
Notifications
You must be signed in to change notification settings - Fork 18
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 local complementation function to EGraph
class 📌👥
#71
Comments
EGraph
classEGraph
class 👥
EGraph
class 👥EGraph
class 📌👥
Hi, I would be interested in working on this. Would require some time though to study the linked papers in more detail. |
Hi @JLenssen, great! :) |
What would be the expected call signature? @staticmethod
def is_lc_equivalent(graph1: "EGraph", graph2:"EGraph"):
pass # relevant implementation of the algorithm
# or
def is_lc_equivalent(self, graph2:"EGraph"):
pass # relevant implementation of the algorithm |
Hello : ) I am here from UnitaryHack and have been trying to prototype an algorithm for this the past couple days! I have made some fair progress, but still have some issues. Excuse me if this is not the best place to ask, but I am hoping to get in touch with any others interested in working on this together or just share some insights. @isolatedinformation @JLenssen I couldn't find you in the UnitaryFund discord. No obligation of course, but feel free to find me on discord @smtsjhr or elsewhere. |
Hi @isolatedinformation, thanks for your question! :) The static method signature might be better @staticmethod
def is_lc_equivalent(graph1: "EGraph", graph2:"EGraph"):
pass # relevant implementation of the algorithm |
Is there some doc available behind the concept of |
Hey @isolatedinformation ! Technically LC equivalence (where the 'C' stands for complementation) is a property of the graph that underlies an EGraph. Therefore, it should work with any EGraph, including one that corresponds to a macronized lattice. But what does it mean in practice? If you interpret an EGraph as a qubit graph state, equivalence via local complementation on the underlying graph implies equivalence under Clifford gates on the graph state. This is one of the benefits of having such a method. In FlamingPy, graph states corresponding to QEC codes are represented by (non-macronized) EGraphs, so the above interpretation goes through. Macronized graphs, however, are an intermediate object used to model specific architectures and apply CV-level noise to the QEC code. Therefore, while they can also be interpreted as qubit graph states in a limited sense, there is not as much utility in the LC check method. (More concretely, a macronode EGraph will just be a collection of 'dumbbells' o-o that are completely disconnected from one another. Therefore the only LC equivalent graphs will just be those with local permutations of the nodes). tl;dr The LC equivalence check should work for any EGraph, including a macronode graph (and I don't think the implementation will change), but it will have limited utility in this case. For a little more on macronodes, have a look at this ref from our README: DOI:10.1103/prxquantum.2.040353. |
Hi @isolatedinformation! If you are interested, the concept of macronodes was introduced in this paper (arXiv) by the architecture team from Xanadu. However, you don't have to worry about it in this PR/issue because the equivalence under local complementation should be a property of the EDIT: also have a look at @ilan-tz's reply which is a bit more elaborate 🐎 |
Thanks guys! This is useful. It clears what the domain of the inputs will be. |
This issue simply requests the function to return a boolean I would like to inquire if there is any interest or utility in enhancing this functions design requirements to also return the relevant Local Clifford? If so, we can go even further and express this Local Clifford in various relevant ways. For instance, the Local Clifford can be given as a single global operator acting on all qubits, or a list of single qubit Local Cliffords -- the tensor product of which yields the global operator. Whether or not this additional functionality is desired in the public method, the info provided by the Local Clifford when it exists could still be useful for testing purposes. |
@smtsjhr Yes, that would be great! Since the algorithm is constructive, it's not too much work and can have a host of benefits (like testing as you mentioned). Thanks for sharing the idea 💡 For the others in this thread (@isolatedinformation, @JLenssen): to keep it fair, this is not a must for the completion of this challenge. However, it is definitely nice to have it in your implementation. |
This issue has been tagged for a bounty during unitaryHACK.
Task
Check if two graph states are equivalent under local Clifford gates (equivalently, if their underlying graphs are equivalent through a sequence of local complementations -- see here).
To do so, you should:
is_lc_equivalent()
method to theEGraph
class that compares twoEGraph
objects. This method should be capable of checking if the two graphs represented byEGraph
can be related by a sequence of local complementations, and should returnTrue
orFalse
accordingly.Explanation
It would be a good feature to compare two different graph states and determine if they are equivalent under local Clifford operations. This function would be capable of identifying as equivalent, e.g., a
complete_graph
state and astar_graph
state with the same number of qubits.Requirements
The text was updated successfully, but these errors were encountered: