QAOA

Here we generate and optimize pattern for QAOA circuit. You can run this code on your browser with mybinder.org - click the badge below.

https://mybinder.org/badge_logo.svg
from graphix import Circuit
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt

n = 4
xi = np.random.rand(6)
theta = np.random.rand(4)
g = nx.complete_graph(n)
circuit = Circuit(n)
for i, (u, v) in enumerate(g.edges):
    circuit.cnot(u, v)
    circuit.rz(v, xi[i])
    circuit.cnot(u, v)
for v in g.nodes:
    circuit.rx(v, theta[v])

transpile and get the graph state

pattern = circuit.transpile()
pattern.standardize()
pattern.shift_signals()
pattern.draw_graph(flow_from_pattern=False)
qaoa
Flow detected in the graph.

perform Pauli measurements and plot the new (minimal) graph to perform the same quantum computation

pattern.perform_pauli_measurements()
pattern.draw_graph(flow_from_pattern=False)
qaoa
Gflow detected in the graph. (flow not detected)

finally, simulate the QAOA circuit

out_state = pattern.simulate_pattern()
state = circuit.simulate_statevector()
print("overlap of states: ", np.abs(np.dot(state.psi.flatten().conjugate(), out_state.psi.flatten())))
# sphinx_gallery_thumbnail_number = 2
overlap of states:  0.9999999999999999

Total running time of the script: ( 0 minutes 1.249 seconds)

Gallery generated by Sphinx-Gallery