Untitled
unknown
plain_text
10 months ago
2.0 kB
2
Indexable
#Compute a random basis to use for sending randomSendBasisCircuit = QuantumCircuit(1,1) randomSendBasisCircuit.x(0) randomSendBasisCircuit.barrier() randomSendBasisCircuit.h(0) randomSendBasisCircuit.barrier() randomSendBasisCircuit.measure(0,0) randomSendBasisCompiledCircuit = transpile(randomSendBasisCircuit, simulator) job = simulator.run(randomSendBasisCompiledCircuit, shots = 1) result = job.result() counts = result.get_counts(randomSendBasisCompiledCircuit) if("1" in counts.keys()): sendBasis = 1 else: sendBasis = 0 print("Send Basis = " + str(sendBasis)) #Compute a random basis to use for receiving randomRecvBasisCircuit = QuantumCircuit(1,1) randomRecvBasisCircuit.x(0) randomRecvBasisCircuit.barrier() randomRecvBasisCircuit.h(0) randomRecvBasisCircuit.barrier() randomRecvBasisCircuit.measure(0,0) randomRecvBasisCompiledCircuit = transpile(randomRecvBasisCircuit, simulator) job = simulator.run(randomRecvBasisCompiledCircuit, shots = 1) result = job.result() counts = result.get_counts(randomRecvBasisCompiledCircuit) if("1" in counts.keys()): recvBasis = 1 else: recvBasis = 0 print("Receive Basis = " + str(recvBasis)) #Quantum Send commCircuit = QuantumCircuit(1,1) if(bitToSend==1): commCircuit.x(0) if(sendBasis==1): commCircuit.h(0) # Change the basis #Quantum Receive if(recvBasis==1): commCircuit.h(0) # HH = I. So this will reverse the earlier basis change commCircuit.measure(0,0) commCompiledCircuit = transpile(commCircuit, simulator) job = simulator.run(commCompiledCircuit, shots = 1) result = job.result() counts = result.get_counts(commCompiledCircuit) if("1" in counts.keys()): recvBit = 1 else: recvBit = 0 #If the basis are the same, the received bit should be the same as the sent bit if(sendBasis==recvBasis): print("Sent Bit = "+str(bitToSend)+" Received Bit = "+str(recvBit)) else: print("Bit was lost because basis didn't match")
Editor is loading...
Leave a Comment