Учи Кванты!Курс → Гейты, обмен, измерение

Гейты как повороты (обобщение)

Обощим то, что мы пока знаем про гейты : любой гейт — это поворот точки на сфере Блоха вокруг своей оси. Понажимайте кнопки X, Z, H, S, T и посмотрите сами.

О чём этот урок

Гейты X, Z и H мы уже встречали поодиночке. Теперь соберём их в одну общую картину, которая связывает их все вместе. Общее правило: любой гейт для одного кубита — это поворот точки на сфере Блоха.

Итак: в центре — сфера с точкой, это состояние кубита. Снизу кнопки гейтов: нажимаем, и точка едет по сфере. Слева видны амплитуды, а справа копится самый настоящий код на языке QASM — к нему вернёмся в самом конце. Сейчас точка на северном полюсе, в состоянии |0⟩.

У поворота есть ось и угол

У всякого поворота есть два параметра: ось, вокруг которой крутят, и угол, на который поворачивают. При этом длина стрелки не меняется, поэтому точка всё время остаётся на поверхности сферы и никуда внутрь не проваливается. (ситуацию, когда точка "проваливается" внутрь сферы Блоха мы тоже разберем, но нескоро - это уже продвинутая тема)

Отсюда простое и очень полезное правило: не двигаются ровно те состояния, что лежат прямо на оси поворота. Точно как глобус: когда он крутится вокруг своей оси, полюса остаются на месте — потому что они и лежат на оси. Дальше пройдёмся по нашим гейтам и у каждого посмотрим, где ось и какой угол.

Гейт X — поворот вокруг оси X

Гейт X — это поворот на 180° вокруг оси X. Мы нажали X, и точка переехала с северного полюса на южный: |0⟩ стало |1⟩. На полюсах X работает как обычное НЕ — меняет |0⟩ и |1⟩ местами.

А теперь самое интересное про ось. Состояние |+⟩ лежит прямо на оси X — значит, X его не должен двигать. Проверьте сами: переключите старт на |+⟩ и нажмите X. Точка останется на месте. Поэтому от примитивного «X переворачивает 0 и 1», как мы рассуждали в первых уроках, мы переходим к «X крутит вокруг оси X» — всё очевидно (очевидно буквально и значит - видно очами на сфере Блоха :)): точка на оси не сдвигается.

Гейт Z — поворот вокруг оси Z

Гейт Z — это поворот на 180° вокруг оси Z. Теперь на оси оказались полюса |0⟩ и |1⟩, поэтому они стоят на месте. Зато двигается экватор: мы стартовали с |+⟩ и нажали Z — точка переехала через экватор в |−⟩.

В прошлых уроках фаза от нас пряталась — на одном кубите её не поймать измерением. А здесь хорошо видно, что Z именно фазу и переворачивает: |+⟩ и |−⟩ отличаются как раз фазой, и Z переводит одно в другое. Дальше, в алгоритмах, гейт Z будет помечать нужные ответы через фазу.

Гейт Адамара — поворот вокруг наклонной оси

Гейт Адамара (H) — тоже поворот на 180°, но вокруг наклонной оси, которая идёт ровно посередине между осями X и Z. Этот поворот переводит полюс на экватор и обратно: мы нажали H на |0⟩, и точка переехала на экватор, в |+⟩.

Адамар — это мостик между определённым состоянием |0⟩ и неопределённым |+⟩, у которого измерение даёт 0 или 1 поровну. Именно так и создают суперпозицию: берут |0⟩ и применяют H.

Дважды примененный H возвращает кубит в исходное состояние

Как мы уже разбирали, у Адамара есть полезное свойство: если применить его два раза подряд, вернёшься ровно туда, откуда начал.

Иными словами, H·H — это тождество, то есть «все вернулось обратно».

Гейты S и T — маленькие повороты фазы

Кроме поворотов на 180° бывают повороты поменьше. Гейты S и T — это маленькие повороты фазы вокруг оси Z. Гейт Z поворачивает на 180°, гейт S — на 90°, а гейт T — на 45°.

Мы нажали S на |+⟩ — точка проехала по экватору на четверть круга. Такие повороты можно складывать: два гейта S дают один Z, а четыре гейта T дают один Z. Эти гейты пригодятся позже; сейчас достаточно просто знать, что они есть и что это всё те же повороты, только на меньший угол.

Код QASM — переменные и операторы

Посмотрим на код, который копился справа всё это время. В нём два вида строк, и их полезно сразу научиться различать.

Сначала идет объявление регистров (квантовых и обычных). Например, ==qreg q[1];== означает «у нас один кубит», и кубиты нумеруются с нуля. Это аналог объявления переменных в классическом программировании. Действия в этих строках не происходит.

Операции — это то, что мы хотим делать с кубитами : h q[0];, x q[0];, z q[0];. Сначала идёт имя гейта маленькими буквами, потом — на какой кубит он действует. Каждая такая строка — один поворот, и читаются они сверху вниз, по порядку во времени.

Мы уже разбирали этот синтаксис, но, как говорится, повторение - мать учения :)

Дальше урок продолжается интерактивом — откройте его на сайте.

Состояние

Измерение

Нажмите «Выполнить» — появится гистограмма исходов.

Сфера Блоха