def makeCircuit6(graph, n, edges, cedges, gammasbetas, p): cgraph = nx.complement(graph) ans = ClassicalRegister(n) sol = QuantumRegister(n) QAOA = QuantumCircuit(sol, ans) r = 2 for j in range(p): for i in range(n): QAOA.u1(-gammasbetas[j], i) for l in range(r): for i in range(n): nbrs = 0 nbs = [] for nbr in cgraph[i]: QAOA.x(nbr) nbrs += 1 nbs.append(nbr) nbs.append(i) if (nbrs != 0): #gate = MCMT(RXGate(gammasbetas[p+j]/r),nbrs ,1) gate = MCMT(RXGate(2 * gammasbetas[l + j] / r), nbrs, 1) QAOA.append(gate, nbs) else: #QAOA.rx(gammasbetas[p+j]/r,i) QAOA.rx(2 * gammasbetas[l + j] / r, i) for nbr in cgraph[i]: QAOA.x(nbr) return QAOA
def makeCircuit9(graph, n, edges, cedges, gammasbetas, p, orderings): cgraph = nx.complement(graph) ans = ClassicalRegister(n) sol = QuantumRegister(n) QAOA = QuantumCircuit(sol, ans) for j in range(p): if (j != 0): for i in range(n): QAOA.u1(-gammasbetas[j - 1], i) QAOA.barrier() for i in orderings[j]: nbrs = 0 nbs = [] for nbr in cgraph[i]: QAOA.x(nbr) nbrs += 1 nbs.append(nbr) nbs.append(i) if (nbrs != 0): gate = MCMT(RXGate(2 * gammasbetas[p - 1 + j]), nbrs, 1) QAOA.append(gate, nbs) else: QAOA.rx(2 * gammasbetas[p - 1 + j], i) for nbr in cgraph[i]: QAOA.x(nbr) QAOA.barrier() return QAOA
def makeCircuit8(graph, n, edges, cedges, gammasbetas, p, orderings): cgraph = nx.complement(graph) ans = ClassicalRegister(n) sol = QuantumRegister(n) QAOA = QuantumCircuit(sol, ans) k = 1 #dickestate for i in range(n - 1, n - k - 1, -1): QAOA.x(i) for l in range(n, k, -1): scs(l, k, QAOA, n) for l in range(k, 1, -1): scs(l, l - 1, QAOA, n) for j in range(p): for i in range(n): QAOA.u1(-gammasbetas[j], i) for i in orderings[j]: nbrs = 0 nbs = [] for nbr in cgraph[i]: QAOA.x(nbr) nbrs += 1 nbs.append(nbr) nbs.append(i) if (nbrs != 0): gate = MCMT(RXGate(gammasbetas[p + j]), nbrs, 1) QAOA.append(gate, nbs) else: QAOA.rx(gammasbetas[p + j], i) for nbr in cgraph[i]: QAOA.x(nbr) return QAOA
def makeCircuit5(graph, n, edges, cedges, gammasbetas, p): cgraph = nx.complement(graph) ans = ClassicalRegister(n) sol = QuantumRegister(n) QAOA = QuantumCircuit(sol, ans) k = 1 #dickestate for i in range(n - 1, n - k - 1, -1): QAOA.x(i) for l in range(n, k, -1): scs(l, k, QAOA, n) for l in range(k, 1, -1): scs(l, l - 1, QAOA, n) #mixer and phaseseparation for j in range(p): for i in range(n): QAOA.u1(-gammasbetas[j], i) for i in range(n): nbrs = 0 nbs = [] for nbr in cgraph[i]: QAOA.x(nbr) nbrs += 1 nbs.append(nbr) nbs.append(i) if (nbrs != 0): gate = MCMT(RXGate(gammasbetas[p + j]), nbrs, 1) QAOA.append(gate, nbs) #else: #warum habe ich das ausgeklammert? Testen ob es besser ist? #QAOA.rx(gammasbetas[p+j],i) for nbr in cgraph[i]: QAOA.x(nbr) return QAOA