Квантовая телепортация
Квантовая телепортация#
Автор(ы):
Пожалуй, пришло время познакомиться с квантовой телепортацией.
Часто вижу в новостях “телепортировали кубит”, “телепортировали электрон”. Но это лишь игра слов… Рассмотрим два запутанных электрона – первый находится у вас, а второй у вашего друга. И под телепортацией подразумевается вот что: вы, используя допустимую операцию, изменяете состояние своего электрона, и второй (запутанный с ним), также изменит свое состояние (в соответствии с примененной операцией). Вам остается лишь выбрать допустимую операцию.
Давайте сейчас посмотрим на состояния Белла (Bell states). Прошу:
Это четыре всадника квантовой запутанности. И у них есть много преимуществ: используют всего два кубита, их легко получить… А что нам еще нужно? Дальше в примере мы воспользуемся одним из этих состояний.
Теперь работаем в терминах квантовой теории информации – это сильно поможет с пониманием остальных тем нашего с вами курса.
Итак, квантовая телепортация будет проводиться двумя персонами – Алисой и Бобом, из которых первые два кубита контролируются Алисой, а третий – Бобом. Алиса хочет передать Бобу закодированное сообщение (отождествляемое с квантовым состоянием): \( |\psi\rangle = \alpha|0\rangle + \beta|1\rangle \)
Изначально, вся система из трех кубитов будет иметь следующее состояние: \( |\psi_{0}\rangle = |\psi\rangle|0\rangle|0\rangle \). Т.е. первый кубит находится в состоянии \( |\psi\rangle \), которое затем будет передаваться с помощью второго кубита на третий.
Алиса и Боб
Первые два шага являются подготовительными. Поэтому Боб находится рядом и ждет, пока Алиса проведет необходимые операции.
Алиса применяет гейт Адамара ко второму кубиту:
\[ |\psi_{1}\rangle = (I \otimes H \otimes I)|\psi_{0}\rangle = (I \otimes H \otimes I) |\psi\rangle|0\rangle|0\rangle = \frac{1}{\sqrt{2}}|\psi\rangle(|0\rangle + |1\rangle)|0\rangle \]Далее Алиса использует гейт CNOT для того, чтобы запутать второй кубит с третьим:
\[ |\psi_{2}\rangle = (I \otimes CNOT(2,3))|\psi_{1}\rangle =\]\[(I \otimes CNOT(2,3))\frac{1}{\sqrt{2}}|\psi\rangle(|0\rangle + |1\rangle)|0\rangle = \frac{1}{\sqrt{2}}|\psi\rangle(|0\rangle|0\rangle + |1\rangle|1\rangle)\]Алиса и Боб
Теперь состояния готовы. Сейчас Боб, забрав третий кубит с собой, отправляется по своим делам. И Алиса, в случае необходимости, сможет передать ему послание.
Алиса применяет CNOT между первым и вторым кубитами. Вспоминая, что \( |\psi\rangle = \alpha|0\rangle + \beta|1\rangle \):
\[|\psi_{3}\rangle = (CNOT(1, 2) \otimes I)|\psi_{2}\rangle =\]\[(CNOT(1, 2) \otimes I)\frac{1}{\sqrt{2}}(\alpha|0\rangle + \beta|1\rangle)(|00\rangle + |11\rangle) =\]\[ = \frac{1}{\sqrt{2}}[\alpha(|000\rangle + |011\rangle) + \beta(|110\rangle + |101\rangle)] \]Алиса применяет гейт Адамара на своем первом кубите:
\[ |\psi_4\rangle = (H \otimes I \otimes I)|\psi_{3}\rangle = \]\[\frac{1}{2} [|00\rangle(\alpha|0\rangle + \beta|1\rangle) +\]\[ |01\rangle(\alpha|1\rangle + \beta|0\rangle)+ \]\[ |10\rangle(\alpha|0\rangle - \beta|1\rangle)+ \]\[ |11\rangle(\alpha|1\rangle - \beta|0\rangle)] \]Внимание
Видно, что в каждой строчке у нас получаются разные состояния, по первым двум кубитам мы можем определить, в каком будет третий. Обратите внимание на общий множитель \(\frac{1}{2}\) в первой строчке, не пропустите.
Алисе нужно теперь измерить первые 2 кубита и станет ясно, в какое из четырех состояний перейдет кубит Боба:
\[\begin{split} \begin{array} {|r|r|} \hline 00 & \alpha|0\rangle + \beta|1\rangle \\ \hline 01 & \alpha|1\rangle + \beta|0\rangle \\ \hline 10 & \alpha|0\rangle - \beta|1\rangle \\ \hline 11 & \alpha|1\rangle - \beta|0\rangle \\ \hline \end{array} \end{split}\]В зависимости от полученных по классическому каналу данных, Боб должен применить одну из операций для того, чтобы восстановить исходное состояние:
Одним из ограничений квантовой телепортации является необходимость передать результаты измерений первых двух кубитов от Алисы к Бобу по классическому каналу (5 шаг). Поэтому весь протокол выполняется не быстрее скорости света.
Приведем данную схему:
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
# создаем необходимые регистры
qr = QuantumRegister(3, name="q")
crz = ClassicalRegister(1, name="crz")
crx = ClassicalRegister(1, name="crx")
# создаем схему
qc = QuantumCircuit(qr, crz, crx)
# Шаг 1
qc.h(qr[1])
# Шаг 2
qc.cx(qr[1], qr[2])
# Шаг 3
qc.cx(qr[0], qr[1])
# Шаг 4
qc.h(qr[0])
# Шаг 5 - измеряются 2 кубита Алисы, чтобы передать результат Бобу
qc.measure(qr[0], crz)
qc.measure(qr[1], crx)
# Шаг 6 - применяются гейт X и гейт Z в завиимости от того, какое из измерений дает результат 1.
qc.x(qr[2]).c_if(crx, 1)
qc.z(qr[2]).c_if(crz, 1)
qc.draw()
┌───┐┌─┐ q_0: ────────────■──┤ H ├┤M├────────────── ┌───┐ ┌─┴─┐└┬─┬┘└╥┘ q_1: ┤ H ├──■──┤ X ├─┤M├──╫─────────────── └───┘┌─┴─┐└───┘ └╥┘ ║ ┌───┐ ┌───┐ q_2: ─────┤ X ├───────╫───╫──┤ X ├──┤ Z ├─ └───┘ ║ ║ └─╥─┘ └─╥─┘ ║ ║ ║ ┌──╨──┐ crz: 1/═════════════════╬═══╩════╬═══╡ = 1 ╞ ║ 0 ┌──╨──┐└─────┘ crx: 1/═════════════════╩═════╡ = 1 ╞═══════ 0 └─────┘