qiskit-community / prototype-qrao

Quantum random access optimization prototype
https://arxiv.org/abs/2111.03167
Apache License 2.0
27 stars 15 forks source link

Create 03_evaluating_performance.ipynb #28

Open areeq-hasan opened 2 years ago

areeq-hasan commented 2 years ago

Summary

In this notebook, we evaluate the performance of QRAO by determining how closely it approximates the exact solution to MaxCut for 100 random 3-regular graphs. We also compare the performance of QRAO used with two different rounding schemes. In the process, we reproduce the main results of the paper (i.e. Fig. 1).

Details and comments

Running the magic rounding QRAO for a 40-node graph instance takes a while on my machine, so I've set the quantum instance that performs magic rounding to only do 1 shot. We can adjust this easily if necessary. Adding a section to the notebook that analyzes magic rounding QRAO performance (both approximation ratio and execution time) as a function of the number of shots of the rounding quantum instance could be also be interesting.

garrison commented 2 years ago

Preview here

garrison commented 2 years ago

This looks pretty good already.

After reviewing the Diátaxis framework's distinction between tutorials and how-to guides, I actually now think this should be placed in the how-tos directory. (I was unsure where it belonged before reading this.)

The other important thing to get a handle on is the performance, so that we can continue to regularly run all notebooks as integration tests (using treon). I'm beginning to investigate this.

garrison commented 2 years ago

I mentioned in #21:

We will probably begin by parameterizing the various basis rotations, so that a single circuit can be sent to the primitives, along with various parameter sets.

One might reasonably hypothesize that repeatedly constructing the circuits takes more time than actually running them on the simulator. If so, then parametrizing the circuits might allow us to get many more shots than 1 (as this notebook uses currently) without much additional cost, as we would only have to generate the circuit once, regardless of number of shots. It would be interesting to evaluate whether my hypothesis is indeed correct (i.e., the relevant time spent generating the circuits vs. simulating them).