Untitled
unknown
plain_text
a year ago
2.0 kB
4
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