Graph Entanglement Extraction
Konrad Szymański, Lina Vandré, Otfried Gühne
Abstract
Prerequisites This software was written in Mathematica and in Python 3 using Jupiter notbook. The following python packages are required: numpy, networkx, functools, graphstates, weightedgraphstates, utils, matplotlib, tqdm, math, operator, itertools, pickle, qutip, random, os, time, IPython Installation Download the repository snapshot attached as a .zip file, unpack it and install the needed Python packages. Since updating files on Zenodo is not supported, possible changes will be published on https://gitlab.com/kjsz/graph-entanglement-extraction. Usage The Mathematica code simulates performance of noisy measurements. The calculation_example.nb (rendered to the .pdf file) showcases symbolic calculations involving graph states (and, more importantly, noisy ensembles of them) --- measurement, postselection, and entanglement properties of reduced post-measurement states. Figures of the paper can be reproduced using the files figure_*. The Python code implements (optionally weighted) graph state creation and manipulation in full Hilbert space description. Most of the code is based on qutip routines, and graphs are specified as networkx objects; the resulting states (and ensembles) are encapsulated into GraphState / GraphStateEnsemble (graphstates.py) and WeightedGraphState/WeightedGraphStateEnsemble (weightedgraphstates.py) classes for easier manipulation, as qutip does not natively support ensembles (only density operators, which are too inefficient in this simulations). The above code is used in the .ipynb notebooks reproducing the figures of the paper.