Квантовая телепортация#

Автор(ы):

Пожалуй, пришло время познакомиться с квантовой телепортацией.

Часто вижу в новостях “телепортировали кубит”, “телепортировали электрон”. Но это лишь игра слов… Рассмотрим два запутанных электрона – первый находится у вас, а второй у вашего друга. И под телепортацией подразумевается вот что: вы, используя допустимую операцию, изменяете состояние своего электрона, и второй (запутанный с ним), также изменит свое состояние (в соответствии с примененной операцией). Вам остается лишь выбрать допустимую операцию.

Давайте сейчас посмотрим на состояния Белла (Bell states). Прошу:

(11)#|β00=12(|00+|11)
|β01=12(|01+|10)
|β10=12(|00|11)
|β11=12(|01|10)

Это четыре всадника квантовой запутанности. И у них есть много преимуществ: используют всего два кубита, их легко получить… А что нам еще нужно? Дальше в примере мы воспользуемся одним из этих состояний.

Теперь работаем в терминах квантовой теории информации – это сильно поможет с пониманием остальных тем нашего с вами курса.

Итак, квантовая телепортация будет проводиться двумя персонами – Алисой и Бобом, из которых первые два кубита контролируются Алисой, а третий – Бобом. Алиса хочет передать Бобу закодированное сообщение (отождествляемое с квантовым состоянием): |ψ=α|0+β|1

Изначально, вся система из трех кубитов будет иметь следующее состояние: |ψ0=|ψ|0|0. Т.е. первый кубит находится в состоянии |ψ, которое затем будет передаваться с помощью второго кубита на третий.

Алиса и Боб

Первые два шага являются подготовительными. Поэтому Боб находится рядом и ждет, пока Алиса проведет необходимые операции.

  1. Алиса применяет гейт Адамара ко второму кубиту:

    |ψ1=(IHI)|ψ0=(IHI)|ψ|0|0=12|ψ(|0+|1)|0
  2. Далее Алиса использует гейт CNOT для того, чтобы запутать второй кубит с третьим:

    |ψ2=(ICNOT(2,3))|ψ1=
    (ICNOT(2,3))12|ψ(|0+|1)|0=12|ψ(|0|0+|1|1)

    Алиса и Боб

    Теперь состояния готовы. Сейчас Боб, забрав третий кубит с собой, отправляется по своим делам. И Алиса, в случае необходимости, сможет передать ему послание.

  3. Алиса применяет CNOT между первым и вторым кубитами. Вспоминая, что |ψ=α|0+β|1:

    |ψ3=(CNOT(1,2)I)|ψ2=
    (CNOT(1,2)I)12(α|0+β|1)(|00+|11)=
    =12[α(|000+|011)+β(|110+|101)]
  4. Алиса применяет гейт Адамара на своем первом кубите:

    |ψ4=(HII)|ψ3=
    12[|00(α|0+β|1)+
    |01(α|1+β|0)+
    |10(α|0β|1)+
    |11(α|1β|0)]

    Внимание

    Видно, что в каждой строчке у нас получаются разные состояния, по первым двум кубитам мы можем определить, в каком будет третий. Обратите внимание на общий множитель 12 в первой строчке, не пропустите.

  5. Алисе нужно теперь измерить первые 2 кубита и станет ясно, в какое из четырех состояний перейдет кубит Боба:

    00α|0+β|101α|1+β|010α|0β|111α|1β|0
  6. В зависимости от полученных по классическому каналу данных, Боб должен применить одну из операций для того, чтобы восстановить исходное состояние:

00I01X10Z11ZX

Одним из ограничений квантовой телепортации является необходимость передать результаты измерений первых двух кубитов от Алисы к Бобу по классическому каналу (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     └─────┘       

Лекция и реализация квантовой телепортации в Qiskit