Задание для самостоятельной работы (сентябрь–октябрь)

Содержание

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

Сверхплотное кодирование

Протокол сверхплотного кодирования (Superdense Coding, SDC) — способ передачи информации между двумя участниками с использованием запутанных частиц. В этом протоколе два участника, Алиса и Боб, могут передать два бита информации, передав всего лишь один кубит.

Протокол сверхплотного кодирования работает следующим образом:

  1. У Алисы и Боба имеется запутанная пара кубитов в состоянии \(\ket{\psi_{AB}} = \frac{1}{\sqrt{2}} \big( \ket{00}+\ket{11} \big)\) (первый кубит — Алисы, второй — Боба).
  2. Алиса проводит со своим кубитом операцию, зависящую от двух битов информации, которые она хочет передать Бобу. Например:
    • Если биты «00», Алиса не применяет никаких операций к своему кубиту.
    • Если биты «01», Алиса применяет операцию X.
    • Если биты «10», Алиса применяет операцию Z.
    • Если биты «11», Алиса применяет X, а затем Z к своему кубиту.
  3. Алиса передаёт свой кубит Бобу.
  4. После получения кубита Боб измеряет обе частицы в базисе Белла: он применяет к первому кубиту операцию Адамара \(H\), а затем измеряет оба кубита в обычном базисе.
  5. В зависимости от результата измерения Боб может восстановить оригинальную информацию, переданную Алисой.

Вы можете попробовать решить задачу в виде схемы здесь, чтобы проверить, понимаете ли вы протокол.

Задание

Напишите программу на языке Python с использованием библиотек Cirq для моделирования протокола сверхплотного кодирования (SDC). Ваша программа должна выполнять следующие шаги:

  1. Создать запутанную пару кубитов в состоянии \(\ket{\psi_{AB}}\).
  2. «Отправить» один из этих запутанных кубитов Бобу через квантовый канал (здесь происходит просто присваивание).
  3. Применить операцию к оставшемуся у Алисы кубиту на основе двух бит информации, которые она хочет передать Бобу.
  4. Измерить обе частицы и восстановить оригинальную информацию, переданную Алисой.

После того, как вы реализуете протокол, протестируйте свой протокол, создав запутанные пары кубитов, применив операции на основе информации и проверив правильность декодирования.

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

Квантовая телепортация — протокол, который позволяет передать состояние кубита по классическому каналу связи, используя запутанную пару частиц (теорема о невозможности клонирования при этом продолжает выполняться, поскольку состояние исходного кубита уничтожается — поэтому протокол называется «телепортацией»). Протокол работает следующим образом:

  1. У Алисы и Боба есть запутанная пара кубитов в состоянии \(\ket{\psi_{AB}} = \frac{1}{\sqrt{2}} \big( \ket{00}+\ket{11} \big)\).
  2. Алиса хочет передать Бобу состояние \(\ket{\phi}\) своего кубита C.
  3. Алиса применяет операцию CNOT к своей паре кубит (C и A), а затем H к кубиту C и измеряет кубиты в обычном базисе (получив два классических бита).
  4. Алиса отправляет эти два классических бита Бобу через обычный канал связи.
  5. Боб применяет операции X и Z к своему кубиту, основываясь на полученных от Алисы значениях (например, если первый бит равен 1, а второй бит равен 0, Боб применяет операцию Z к своему кубиту).
  6. В результате этих операций, состояние кубита Боба будет эквивалентно состоянию кубита Алисы до шага 3.

Задание

Напишите программу на языке Python с использованием библиотеки Cirq для моделирования протокола квантовой телепортации. Ваша программа должна выполнять следующие шаги:

  1. Создать запутанную пару кубитов в состоянии \(\ket{\psi_{AB}}\).
  2. «Отправить» один из этих запутанных кубитов Бобу через квантовый канал (здесь происходит просто присваивание).
  3. Алиса получает кубит C в произвольном (неизвестном заранее) состоянии и хочет передать его Бобу.
  4. Алиса применяет соответствующие операции к своим кубитам и измеряет их.
  5. Алиса «отправляет» эти два классических бита Бобу.
  6. Боб восстанавливает состояние кубита у себя.

BB84

BB84 (названный в честь предложивших его в 1984 году Беннетта и Брассарда) - это квантовый криптографический протокол, который используется для создания секретного ключа, общего для двух сторон, с помощью квантовой механики.

Протокол BB84 состоит из следующих шагов:

  1. Алиса генерирует случайную последовательность бит (0 или 1) и кодирует их в

состояние квантовых битов (кубитов). Для кодирования Алиса случайным образом выбирает либо базис \(\ket{0}, \ket{1}\), либо базис \(\ket{-}, \ket{+}\), где:

\begin{align*} \ket{+} &= \frac{1}{\sqrt{2}} \big( \ket{0} + \ket{1} \big)\\ \ket{-} &= \frac{1}{\sqrt{2}} \big( \ket{0} - \ket{1} \big) \end{align*}
  1. Алиса посылает эти кубиты Бобу через квантовый канал, такой как оптоволоконный кабель или свободное пространство.
  2. Боб измеряет каждый получаемый кубит в одной из двух базисов \(\ket{0}, \ket{1}\) или \(\ket{-}, \ket{+}\), выбирая используемый базис случайным образом для каждого кубита.
  3. После того как Боб получил все кубиты, Алиса и Боб обмениваются информацией о выбранных базисах, но не передают сами измеренные значения. Они делают это открытым текстом по обычному каналу связи.
  4. Алиса и Боб отбрасывают все биты, для которых они использовали разную базу измерений. Оставшиеся биты образуют их общий секретный ключ.

Основной принцип работы BB84 основан на том, что результаты измерений в квантовой механике случайны. Попытка злоумышленника подслушать переданные кубиты уничтожит их состояние, что приведет к ошибкам в ключе и выявит подслушивание.

Протокол BB84 является основой для многих современных систем квантовой криптографии и считается одним из самых важных протоколов в этой области.

Задание

Написать программу на языке Python с использованием библиотеки Cirq, моделирующую протокол BB84. Ваша программа должна содержать следующие функции:

  1. Генерация случайной последовательности бит (0 или 1) для Алисы.
  2. Кодирование этих битов в состояния кубитов с использованием случайно выбранного базиса.
  3. «Отправка» кубитов Бобу через квантовый канал, представленный как список кубитов в памяти (на самом деле, здесь ничего не происходит).
  4. Измерение каждого полученного кубита Бобом в случайном базисе.
  5. Обмен информацией о базе измерений между Алисой и Бобом через обычный канал связи.
  6. Отбрасывание всех бит, для которых Алиса и Боб использовали разную базу измерений. Оставшиеся биты образуют их общий секретный ключ.