Skip to content

Instantly share code, notes, and snippets.

@splch
Last active November 16, 2020 06:43
Show Gist options
  • Save splch/7ed69d1c962a3b5aa3a57cf7d96414e2 to your computer and use it in GitHub Desktop.
Save splch/7ed69d1c962a3b5aa3a57cf7d96414e2 to your computer and use it in GitHub Desktop.
Circuit for Quantum Teleportation
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.7/site-packages/qiskit/providers/ibmq/ibmqfactory.py:192: UserWarning: Timestamps in IBMQ backend properties, jobs, and job results are all now in local time instead of UTC.\n",
" warnings.warn('Timestamps in IBMQ backend properties, jobs, and job results '\n"
]
}
],
"source": [
"%matplotlib inline\n",
"# Importing standard Qiskit libraries and configuring account\n",
"from qiskit import QuantumCircuit, QuantumRegister, ClassicalRegister, execute, Aer, IBMQ\n",
"from qiskit.compiler import transpile, assemble\n",
"from qiskit.tools.jupyter import *\n",
"from qiskit.visualization import *\n",
"from qiskit_textbook.tools import random_state\n",
"from qiskit.extensions import Initialize\n",
"# Loading your IBM Q account(s)\n",
"IBMQ.load_account()\n",
"backend = Aer.get_backend('qasm_simulator')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1176.11x385.28 with 1 Axes>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## SETUP\n",
"qr = QuantumRegister(3, name=\"q\") # Protocol uses 3 qubits\n",
"crz = ClassicalRegister(1, name=\"crz\") # and 2 classical registers\n",
"crx = ClassicalRegister(1, name=\"crx\")\n",
"qc = QuantumCircuit(qr, crz, crx)\n",
"\n",
"# Information to be sent \n",
"msg = random_state(1)\n",
"init_gate = Initialize(msg)\n",
"init_gate.name = 'Message'\n",
"\n",
"## STEP 0\n",
"# First, let's initialize Alice's q0\n",
"qc.append(init_gate, [0])\n",
"qc.barrier()\n",
"\n",
"## STEP 1\n",
"# Now begins the teleportation protocol\n",
"qc.h(1) # Put qubit 1 into state |+>\n",
"qc.cx(1, 2) # CNOT with 1 as control and 2 as target\n",
"qc.barrier()\n",
"\n",
"## STEP 2\n",
"# Send q1 to Alice and q2 to Bob\n",
"qc.cx(0, 1)\n",
"qc.h(0)\n",
"qc.barrier()\n",
"\n",
"## STEP 3\n",
"# Alice then sends her classical bits to Bob\n",
"qc.measure([0, 1], [0, 1])\n",
"\n",
"## STEP 4\n",
"# Bob decodes qubits\n",
"# Here we use c_if to control our gates with a classical bit instead of a qubit\n",
"qc.x(2).c_if(crx, 1) # Apply gates if the registers \n",
"qc.z(2).c_if(crz, 1) # are in the state '1'\n",
"\n",
"## STEP 5\n",
"# reverse the initialization process\n",
"qc.append(init_gate.gates_to_uncompute(), [2])\n",
"\n",
"## STEP 6\n",
"# measure the transferred qubit information\n",
"qc.add_register(ClassicalRegister(1))\n",
"qc.measure(2, 2)\n",
"\n",
"# Display the circuit\n",
"qc.draw()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"results = execute(qc, backend=backend).result()\n",
"answer = results.get_counts()\n",
"plot_histogram(answer)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment