def makeCircuit3(n, edges, cedges, gammasbetas, p): ans = ClassicalRegister(n) sol = QuantumRegister(n) QAOA = QuantumCircuit(sol, ans) for i in range(n): QAOA.h(i) QAOA.barrier() for j in range(p): for i in range(n): QAOA.u1(-gammasbetas[j], i) for edge in cedges: k = edge[0] l = edge[1] #warum scheint das vorzeichen hier egal zu sein? QAOA.cu1(2 * gammasbetas[j], l, k) #warum beta und nicht 2*beta? QAOA.barrier() QAOA.rx(-2 * gammasbetas[p + j], range(n)) QAOA.barrier() return QAOA
def makeCircuit1(n, edges, cedges, gammasbetas, p): ans = ClassicalRegister(n) sol = QuantumRegister(n) QAOA = QuantumCircuit(sol, ans) for i in range(n): QAOA.h(i) for j in range(p): for i in range(n): QAOA.rz(0.5 * gammasbetas[j], i) for edge in cedges: k = edge[0] l = edge[1] QAOA.rz(-0.5 * gammasbetas[j], k) QAOA.rz(-0.5 * gammasbetas[j], l) QAOA.cx(k, l) QAOA.rz(0.5 * gammasbetas[j], l) QAOA.cx(k, l) QAOA.rx(gammasbetas[p + j], range(n)) return QAOA