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()
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)
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)
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()
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)
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)