Open wlcsm opened 2 months ago
How are you planning to generate the open-graphs ?
Great question. I do not know. Open graphs need four items, a graph, measurements for non-output nodes, inputs and outputs. All of these could be randomised however it is very likely the resulting open graph would not have flow.
We could simply repeat the procedure enough times, checking each time whether the open graph has flow and then stop when we find one. It is not very efficient but it is simple.
Another way would be to randomly generate circuits in PyZX, then convert those to a graph using PyZX's in-built to_graph
method and then convert these to open graphs via the OpenGraph.from_pyzx_graph
method. This has the advantage of always generating an OpenGraph with flow, but the problem is that we create a reliance on the PyZX module which is supposed to be optional
Currently we only test converting Open graphs to (
OpenGraph.to_pattern()
) and from (OpenGraph.from_pattern()
) patterns with a couple of handcrafted examples intests/test_opengraph.py
.It would instead be more robust to test these methods on many randomly generated graphs and patterns (by modifying
random_objects.py
with random open graph generation), and check the results against a simulator.