Квантовые цепи и вентили — вводный курс

в 7:21, , рубрики: C#, developer, kit, open source, q#, Quantum, Блог компании Microsoft, квантовые вычисления, квантовый компьютер, кубит, математика, физика

Мы продолжаем цикл квантовых статей. Сегодня углубимся в формулы и поймем, как можно манипулировать кубитами — элементарными вычислительными единицами. Кроме того, рассмотрим принципы цепей и алгоритмов. Подробнее под катом!

Квантовые цепи и вентили — вводный курс - 1

Статьи из цикла:

  1. Квантовые вычисления и язык Q# для начинающих
  2. Введение в квантовые вычисления

Введение

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

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

Основы: квантовые состояния

Начнем с основ — с обозначений некоторых распространенных квантовых состояний, которыми мы будем впоследствии манипулировать:

Квантовые цепи и вентили — вводный курс - 2

Все они являются чистыми однокубитными состояниями, поэтому их можно представить в виде точек на сфере Блоха:

Квантовые цепи и вентили — вводный курс - 3

Теперь — четыре состояния Белла (их еще называют парами ЭПР, в честь Эйнштейна, Подольского и Розена — именно они являются авторами идей, которые впоследствии развил Белл). Это простейшие примеры квантовой запутанности двух кубитов:

Квантовые цепи и вентили — вводный курс - 4

И наконец, мы будем использовать так называемые состояния ГХЦ (Гринберга — Хорна — Цайлингера). Вот их общая форма (для n кубитов) и простейшая форма (для трех кубитов):

Квантовые цепи и вентили — вводный курс - 5

Состояния Белла и состояния ГХЦ очень важны, потому что их поведение кардинально отличается от предсказаний классической теории из-за уровня запутанности в таких системах (этот принцип «максимальной запутанности» будет рассмотрен в одной из последующих публикаций).

Основы: радианы

Углы поворота в теории квантовых вычислений измеряются в радианах. Полная окружность (360°) соответствует 2π радиан. Углы измеряются против часовой стрелки. Ниже показаны величины важнейших углов в градусах и в радианах.

Квантовые цепи и вентили — вводный курс - 6

Основы: диаграммы квантовых цепей

Перед тем как углубляться в изучение квантовых вентилей, следует изучить основы построения диаграмм квантовых цепей (это не займет много времени):

  • Время на квантовой диаграмме движется слева направо.
  • Каждому кубиту соответствует одиночная горизонтальная линия.
  • Вентили обычно обозначаются квадратами. Тип вентиля обозначается буквами или другими символами в этом квадрате (бывают и исключения из этого правила. Обычно это кубитные вентили, у которых есть классические аналоги (пример — вентиль NOT)).
  • Некоторым вентилям может соответствовать несколько элементов диаграммы (пример — вентиль NOT).
  • В результате измерения кубита все суперпозиции коллапсируют, квантовые свойства кубита исчезают, и он превращается в обычный бит. Поэтому можно считать, что измерительный элемент (показанный ниже) принимает на вход кубит и выдает классический бит. Этой операции в языке Q# соответствует команда Measure(bases: Pauli[], qubits: Qubit[]) или M(qubit: Qubit) по основанию Z.

Вот обозначения важнейших элементов:

Квантовые цепи и вентили — вводный курс - 7

Более подробная информация приводится в документации здесь и в книге М. Нильсена и И. Чанг «Квантовая информация и квантовые вычисления».

Однокубитные вентили

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

Самые элементарные однокубитные вентили — это вентили Паули X, Y и Z:

Названия Матричное представление Обозначения Представление в Q#
Вентиль Паули X, X, NOT, переключение бита, Квантовые цепи и вентили — вводный курс - 8 Квантовые цепи и вентили — вводный курс - 9 Квантовые цепи и вентили — вводный курс - 10
Квантовые цепи и вентили — вводный курс - 11
X(qubit: Qubit)
Вентиль Паули Y, Y, Квантовые цепи и вентили — вводный курс - 12 Квантовые цепи и вентили — вводный курс - 13 Квантовые цепи и вентили — вводный курс - 14 Y(qubit: Qubit)
Вентиль Паули Z, Z, переключение фазы, Квантовые цепи и вентили — вводный курс - 15 Квантовые цепи и вентили — вводный курс - 16 Квантовые цепи и вентили — вводный курс - 17 Z(qubit: Qubit)

Вентиль X очень похож на классический вентиль NOT: он преобразует |0〉 в |1〉, а |1〉 в |0〉. Эта операция эквивалентна повороту вектора на сфере Блоха вокруг оси x на π радиан (или 180°).

Вентиль Y ожидаемо соответствует повороту вектора вокруг оси y на π радиан. В результате такой операции вектор |0〉 превращается в i|1〉, а |1〉 — в -i|0〉.

Вентиль Z представляет собой особый случай вентиля фазового сдвига Квантовые цепи и вентили — вводный курс - 18 (см. ниже) при фи = π = 180°. Он соответствует повороту вектора вокруг оси z на π радиан. Вектор |0〉 он оставляет без изменений, а |1〉 преобразует в -|1〉.

Ниже работа этих преобразований проиллюстрирована с помощью сферы Блоха (ось вращения в каждом случае выделена красным; на картинку можно нажать, чтобы увеличить ее):

Квантовые цепи и вентили — вводный курс - 19

Важно отметить, что после двукратного применения одного и того же вентиля Паули к кубиту он перейдет в исходное состояние (потому что после поворота вектора на 2π радиан или 360° вокруг любой оси он перейдет в начальное положение). Как следствие,

Квантовые цепи и вентили — вводный курс - 20

Поскольку Квантовые цепи и вентили — вводный курс - 21 и т. д.,
Квантовые цепи и вентили — вводный курс - 22
Здесь II — обозначение единичной матрицы: Квантовые цепи и вентили — вводный курс - 23. Единичной называется матрица, результат умножения которой на произвольную матрицу M (II) равен матрице M: MII = IIM = M. Единичная матрица соответствует квантовой операции, которая не меняет квантовое состояние. На сфере Блоха это выглядит так:

Квантовые цепи и вентили — вводный курс - 24

Ввиду этого отношения говорят, что матрица Паули в квадрате равна единичной матрице.
Ниже приводится описание еще нескольких важных однокубитных вентилей.

Названия Матричное представление Обозначения Представление в Q#
Вентиль Адамара, H Квантовые цепи и вентили — вводный курс - 25 Квантовые цепи и вентили — вводный курс - 26 H(qubit: Qubit)
Фазовый сдвиг, Квантовые цепи и вентили — вводный курс - 27 Квантовые цепи и вентили — вводный курс - 28 Квантовые цепи и вентили — вводный курс - 29 R1(theta: Double, qubit: Qubit)
В более общем случае
R(pauli: Pauli, theta: Double, qubit: Qubit)
Фазовый сдвиг,Квантовые цепи и вентили — вводный курс - 30, S Квантовые цепи и вентили — вводный курс - 31 Квантовые цепи и вентили — вводный курс - 32 S(qubit: Qubit)
Квантовые цепи и вентили — вводный курс - 33, T Квантовые цепи и вентили — вводный курс - 34 Квантовые цепи и вентили — вводный курс - 35 T(qubit: Qubit)

Вентиль Адамара особенно важен, потому что с его помощью можно создать суперпозицию состояний |0〉 и |1〉. Эту операцию проще всего визуализировать с помощью сферы Блоха как поворот вокруг оси x на π радиан (180°) с последующим поворотом вокруг оси y (по часовой стрелке) на π/2 радиан (90°):

Квантовые цепи и вентили — вводный курс - 36

Вентиль фазового перехода представляет достаточно общую операцию, у которой есть множество полезных применений. Самые распространенные его вариации — вентили сдвига фазы на π/4, π/8 и Паули-вентиль Z, для которых параметр фи равен π/2, π/4 и π соответственно. Пример фазового сдвига Квантовые цепи и вентили — вводный курс - 37 на сфере Блоха:

Квантовые цепи и вентили — вводный курс - 38

Многокубитные вентили

Многокубитные вентили выполняют операции над двумя или более кубитами. Один из простейших примеров — вентиль SWAP:

Названия Матричное представление Обозначения Представление в Q#
SWAP Квантовые цепи и вентили — вводный курс - 39 Квантовые цепи и вентили — вводный курс - 40 SWAP(qubit1: Qubit, qubit2: Qubit)

Вентиль SWAP меняет местами два входных кубита. Например, SWAP|0〉|1〉 = |1〉|0〉, а SWAP|0〉|0〉 = |0〉|0〉 (полная таблица истинности приводится в шпаргалке по цепям).

Еще один класс многокубитных вентилей — так называемые управляемые вентили. На вход любого управляемого вентиля подается по меньшей мере один управляющий и один управляемый кубит, причем вентиль выполнит операцию над управляемым кубитом только в том случае, если управляющий кубит находится в определенном состоянии.

Вентили, которые выполняют операцию при управляющем кубите |1〉, обозначаются заполненным кругом на проводе управляющего кубита. Вентили, которые выполняют операцию при управляющем кубите, равном |0〉, обозначаются пустой окружностью, как показано ниже.

Квантовые цепи и вентили — вводный курс - 41

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

Квантовые цепи и вентили — вводный курс - 42

Обычные вентили в Q# можно преобразовать в управляющие с помощью ключевого слова Controlled, как описано здесь (в разделе «Controlled» в самом низу страницы). Например, вентиль CNOT (напомним, что вентиль NOT эквивалентен X-вентилю Паули) можно получить командой

(Controlled X)([control], (target))

где [control] — массив входных управляющих кубитов.

Ниже описаны другие распространенные управляемые вентили (мы выделили единичную матрицу красным, а матрицу исходного вентиля — синим, как выше):

Названия Матричное представление Обозначения Представление в Q#
CNOT Квантовые цепи и вентили — вводный курс - 43 Квантовые цепи и вентили — вводный курс - 44 CNOT(control: Qubit, target: Qubit)
или
(Controlled X)([control], (target));
CCNOT, вентиль Тоффоли Квантовые цепи и вентили — вводный курс - 45 Квантовые цепи и вентили — вводный курс - 46 CCNOT(control1: Qubit, control2: Qubit, target: Qubit)
или
(Controlled X)([control1; control2], target);
CSWAP, вентиль Фредкина Квантовые цепи и вентили — вводный курс - 47 Квантовые цепи и вентили — вводный курс - 48 (Controlled SWAP)([control], (target));

Универсальные наборы

Как мы уже упоминали в предыдущей публикации, вне зависимости от того, с помощью какой физической системы мы имитируем квантовый компьютер, должна иметься возможность реализовать «универсальный набор» вентилей. Это значит, что любая допустимая вычислительная операция в нашей системе должна быть преобразуема к конечной последовательности известных вентилей. Вот пример такого универсального набора: вентиль Адамара, вентиль фазового сдвига, вентиль CNOT и вентиль π⁄8.

Свойство универсальности гораздо интереснее, чем может показаться на первый взгляд. Если в квантовом компьютере существует универсальный набор вентилей, то любое преобразование, которое допускают законы квантовой физики, можно реализовать с его помощью. Это значит, что с помощью универсального набора можно не просто выполнить любую квантовую программу, а имитировать любое физическое явление. Поэтому свойство универсальности позволяет использовать квантовые компьютеры для моделирования молекул, сверхпроводников и любых странных и прекрасных квантовых систем. Эта особенность квантовых компьютеров позволяет имитировать физические явления, что в перспективе позволит квантовым системам превзойти потенциал самых мощных суперкомпьютеров. Уже не скучно, правда?

Нас ждет еще много интересного!

С помощью этих (и некоторых других) важнейших вентилей уже можно создавать полнофункциональные квантовые цепи! В следующей публикации я расскажу, как с помощью этих новоприобретенных знаний можно реализовать квантовое преобразование Фурье — очень важную операцию, у которой есть огромное множество практических применений.

Дополнительные ресурсы

Автор: Стас Павлов

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js