-
Notifications
You must be signed in to change notification settings - Fork 21
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
[Bug]: Gflow finding algorithm #80
Comments
Hello @masa10-f ,
Could you maybe elaborate a bit more on this, specifically which part of the implementation you are reffering to ?
Actually I did look for efficient means of solving linear equations on GF2, but the methods I found were rather sophisticated (Gaussian Elimination ?) moreover I was not convinced if they could find all possible solutions to the set of equations either. (for the current implementatio |
Hi @pafloxy ,
I referred to the following part(graphix.gflow l.192-203).
According to Appendix D. of M. Backens et al., a precise conditional branch differs slightly from the current one. Let U be a node-set corresponding to the right-hand side of a boolean system of equations(Ax = u), that emerges when finding gflow. For each node, the precise conditional branch for U is as follows:
Moreover, the branches for "X," "Y," and "Z" should be removed since gflow does not depend on measurement angles.
Finding gflow is essentially equivalent to solving for x in the equation Ax = u, where the coefficient matrix A is typically non-square. So, I'm developing a solver for such a non-square system of equations. As you mentioned, this solver uses Gauss-Jordan elimination and column pivoting. The uncertainty of gflow appears as a kernel of the coefficient matrix A. Therefore, we can write down all possible solutions for maximally delayed gflow. While I've completed the core implementation, I'm debugging and refactoring the code. Maybe I'll push it in the next few days. |
I agree. Thanks a lot for the implementation, I will be happy to use it after you have updated it in the repo. :) |
Describe the bug
As per the proposed (expanded) gflow finding algorithm outlined in M. Backens et al., there is an issue with the current implementation within the
graphix.gflow.gflow
module.To Reproduce
For instance, consider the underlying graph provided below. While this graph possesses a gflow, the current method fails to identify it.
The root cause of this issue is that the current implementation's handling of conditional branches in measurement planes does not align with the gflow definition.
Expected behavior
One of the solutions is like,
Environment (please complete the following information):
Additional context
Currently, graphix depends on z3-solver for gflow identification. However, this dependency could be substituted with a solver tailored for boolean system of equations. Such a solver can be efficiently implemented using only numpy.
The text was updated successfully, but these errors were encountered: