Учи Кванты! → Курс → Гейты, обмен, измерение
Гейты как повороты (обобщение)
Обощим то, что мы пока знаем про гейты : любой гейт — это поворот точки на сфере Блоха вокруг своей оси. Понажимайте кнопки 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];. Сначала идёт имя гейта маленькими буквами, потом — на какой кубит он действует. Каждая такая строка — один поворот, и читаются они сверху вниз, по порядку во времени.
Мы уже разбирали этот синтаксис, но, как говорится, повторение - мать учения :)
Дальше урок продолжается интерактивом — откройте его на сайте.