TeamGraphix / graphix

measurement-based quantum computing (MBQC) compiler and simulator
https://graphix.readthedocs.io
Apache License 2.0
62 stars 21 forks source link

Improve testing of Open graph to pattern conversions #196

Open wlcsm opened 2 months ago

wlcsm commented 2 months ago

Currently we only test converting Open graphs to (OpenGraph.to_pattern()) and from (OpenGraph.from_pattern()) patterns with a couple of handcrafted examples in tests/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.

pafloxy commented 2 months ago

How are you planning to generate the open-graphs ?

wlcsm commented 2 months ago

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