Skip to content
forked from QAOAKit/QAOAKit

A Toolkit for Reproducible Study, Application and Verification of QAOA

License

Notifications You must be signed in to change notification settings

jon-wurtz/QAOAKit

 
 

Repository files navigation

QAOAKit: A Toolkit for Reproducible Application and Verification of QAOA

Code style: black Tests

Installation

Recommended: create an Anaconda environment

conda create -n qaoa python=3
conda activate qaoa

Note that current implementation requires significant amounts of RAM (~5GB) as it loads the entire dataset into memory. Linux and macOS are currently supported.

pip install QAOAKit
python -m QAOAKit.build_tables

Example

import networkx as nx
from qiskit.providers.aer import AerSimulator
from QAOAKit import opt_angles_for_graph, angles_to_qaoa_format
from QAOAKit.qaoa import get_maxcut_qaoa_circuit

# build graph
G = nx.star_graph(5)
# grab optimal angles
p = 3
angles = angles_to_qaoa_format(opt_angles_for_graph(G,p))
# build circuit
qc = get_maxcut_qaoa_circuit(G, angles['beta'], angles['gamma'])
qc.measure_all()
# run circuit
backend = AerSimulator()
print(backend.run(qc).result().get_counts())

Almost all counts you get should correspond to one of the two optimal MaxCut solutions for star graph: 000001 or 111110.

For graphs where no pre-optimized angles are available, the angles from "The fixed angle conjecture for QAOA on regular MaxCut graphs" (arXiv:2107.00677) will be returned.

Advanced usage

More advanced examples are available in examples folder:

Install from source

git clone https://github.com/QAOAKit/QAOAKit.git
cd QAOAKit
pip install -e .
python -m QAOAKit.build_tables
pytest

If you have an issue like "Illegal Instruction (core dumped)", you may have to force pip to recompile Nauty binaries (pip install --no-binary pynauty pynauty) or install Nauty separately: https://pallini.di.uniroma1.it/

Contributing

You should set up the linter to run before every commit.

pip install pre-commit
pre-commit install

Note that linter checks passing is a necessary condition for your contribution to be reviewed.

About

A Toolkit for Reproducible Study, Application and Verification of QAOA

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%