Exemplo n.º 1
0
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
Exemplo n.º 2
0
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