Exemplo n.º 1
0
def main():

    print("== hadamard gate ==")

    print("** one-way quantum computing")

    # graph state
    qs_oneway = QState(5)
    qs_oneway.h(1).h(2).h(3).h(4)
    qs_oneway.cz(0, 1).cz(1, 2).cz(2, 3).cz(3, 4)

    # measurement
    qs_oneway.mx([0], shots=1)
    qs_oneway.my([1], shots=1)
    qs_oneway.my([2], shots=1)
    qs_oneway.my([3], shots=1)

    # result state
    qs_oneway.show([4])

    print("** conventianal quantum gate")

    qs_gate = QState(1)
    qs_gate.h(0)
    qs_gate.show()
Exemplo n.º 2
0
 def test_mx(self):
     """test 'mx' (for bell state)
     """
     qs = QState(qubit_num=2).h(0).cx(0, 1)
     md = qs.mx(shots=10)
     self.assertEqual(md.frq[0] + md.frq[3], 10)
     self.assertEqual(md.frq[1], 0)
     self.assertEqual(md.frq[2], 0)
Exemplo n.º 3
0
def quantum_strategy(trials=1000):

    win_cnt = 0
    for _ in range(trials):

        # random bits by Charlie (x,y)
        x = random.randint(0,1)
        y = random.randint(0,1)

        # make entangled 2 qubits (one for Alice and another for Bob)
        qs = QState(2).h(0).cx(0,1)
        
        # response by Alice (a)
        if x == 0:
            # measurement of Z-basis (= Ry(0.0)-basis)
            sa = qs.m([0], shots=1, angle=0.0, phase=0.0).lst
            if sa == 0:
                a = 0
            else:
                a = 1
        else:
            # measurement of X-basis (or Ry(0.5*PI)-basis)
            sa = qs.mx([0], shots=1).lst
            # sa = qs.m([0], shots=1, angle=0.5, phase=0.0).lst
            if sa == 0:
                a = 0
            else:
                a = 1

        # response by Bob (b)
        if y == 0:
            # measurement of Ry(0.25*PI)-basis
            sb = qs.m([1], shots=1, angle=0.25, phase=0.0).lst
            if sb == 0:
                b = 0
            else:
                b = 1
        else:
            # measurement of Ry(-0.25*PI)-basis
            sb = qs.m([1], shots=1, angle=-0.25, phase=0.0).lst
            if sb == 0:
                b = 0
            else:
                b = 1

        # count up if win
        if (x and y) == (a+b)%2:
            win_cnt += 1
            
    print("== result of quantum strategy (trials:{0:d}) ==".format(trials))
    print("* win prob. = ", win_cnt/trials)
Exemplo n.º 4
0
def main():

    print("== CNOT gate ==")

    print("** one-way quantum computing")

    # graph state
    qs_oneway = QState(15)
    qs_oneway.h(0)
    qs_oneway.h(1).h(2).h(3).h(4).h(5).h(6).h(7)
    qs_oneway.h(9).h(10).h(11).h(12).h(13).h(14)
    qs_oneway.cz(0, 1).cz(1, 2).cz(2, 3).cz(3, 4).cz(4, 5).cz(5, 6)
    qs_oneway.cz(3, 7).cz(7, 11)
    qs_oneway.cz(8, 9).cz(9, 10).cz(10, 11).cz(11, 12).cz(12, 13).cz(13, 14)

    # measurement
    qs_oneway.mx([0], shots=1)
    qs_oneway.my([1], shots=1)
    qs_oneway.my([2], shots=1)
    qs_oneway.my([3], shots=1)
    qs_oneway.my([4], shots=1)
    qs_oneway.my([5], shots=1)
    qs_oneway.my([7], shots=1)
    qs_oneway.mx([8], shots=1)
    qs_oneway.mx([9], shots=1)
    qs_oneway.mx([10], shots=1)
    qs_oneway.my([11], shots=1)
    qs_oneway.mx([12], shots=1)
    qs_oneway.mx([13], shots=1)

    qs_oneway.show([6, 14])

    print("** conventianal quantum gate")

    qs_gate = QState(2)
    qs_gate.h(0)
    qs_gate.cx(0, 1)
    qs_gate.show()
Exemplo n.º 5
0
        return result_logical


if __name__ == '__main__':

    shots = 1000
    alpha, beta, gamma = random.uniform(0, 1), random.uniform(
        0, 1), random.uniform(0, 1)
    print("- alpha, beta, gamma = {:.4f}, {:.4f}, {:.4f}".format(
        alpha, beta, gamma))

    dat_left = CreateRegister(5)
    dat_right = CreateRegister(5)
    bnd = CreateRegister(1)
    anc = CreateRegister(1)
    qubit_num = InitRegister(dat_left, dat_right, bnd, anc)

    qs_logical = QStateLogical(qubit_num=qubit_num).set_register(
        dat_left, dat_right, bnd, anc)
    qs_logical.initialize(alpha=alpha, beta=beta, gamma=gamma)

    mval = qs_logical.split()
    print("- measured value =", mval)

    result_logical = qs_logical.measure(shots=shots)
    print("- actual =", result_logical)

    qs = QState(qubit_num=1).u3(0, alpha=alpha, beta=beta, gamma=gamma)
    result = qs.mx(shots=shots)
    print("- expect =", result.frequency)
Exemplo n.º 6
0

if __name__ == '__main__':

    alpha, beta, gamma = random.uniform(0, 1), random.uniform(
        0, 1), random.uniform(0, 1)
    meas = random.choice(['X', 'Z'])
    shots = 10000

    print("- alpha, beta, gamma = ", alpha, beta, gamma)
    print("- measure {}".format(meas))
    print("- shots =", shots)

    dat = CreateRegister(11)
    anc = CreateRegister(1)
    qubit_num = InitRegister(dat, anc)
    qs_logical = QStateLogical(qubit_num).set_register(dat, anc).initialize(
        alpha, beta, gamma)

    qs = QState(qubit_num=1).u3(0, alpha=alpha, beta=beta, gamma=gamma)

    if meas == 'X':
        result_actual = qs_logical.Mx(shots=shots)
        result_expect = qs.mx(shots=shots).frequency
    elif meas == 'Z':
        result_actual = qs_logical.Mz(shots=shots)
        result_expect = qs.mz(shots=shots).frequency

    print("- actual =", result_actual)
    print("- expect =", result_expect)