Гейт Адамара и фазовые гейты

Адамар — главный «создатель суперпозиции»; фазовые гейты тонко крутят фазу.

Гейт Адамара (H) переводит базисное состояние в равновесную суперпозицию: |0> в (|0>+|1>)/корень из 2, |1> в (|0>-|1>)/корень из 2.

Адамар создаёт суперпозицию

H — самый важный однокубитный гейт. Его матрица — это [[1, 1], [1, -1]], делённая на корень из 2. Применив H к |0>, мы получаем состояние |+> с равными вероятностями 0 и 1. Именно так из определённого классического бита рождается «честная квантовая монетка».

import math

r = 1 / math.sqrt(2)
H = [[r,  r],
     [r, -r]]

def apply(g, s):
    a, b = s
    return [g[0][0]*a + g[0][1]*b, g[1][0]*a + g[1][1]*b]

plus = apply(H, [1+0j, 0+0j])     # H|0>
print('H|0> =', [round(x.real, 4) for x in plus])
print('p0 =', round(abs(plus[0])**2, 4), 'p1 =', round(abs(plus[1])**2, 4))

Вывод:

H|0> = [0.7071, 0.7071]
p0 = 0.5 p1 = 0.5

Главное свойство: H обратим

Применённый дважды, Адамар возвращает исходное состояние (H·H = единичная матрица). Это видно сразу: из |0> он делает |+>, а из |+> обратно |0>. Эта обратимость — ключ к алгоритмам: мы «раскрываем» суперпозицию, что-то делаем внутри, а потом «складываем» её обратно, чтобы исходы проинтерферировали.

import math
r = 1 / math.sqrt(2)
H = [[r, r], [r, -r]]

def apply(g, s):
    a, b = s
    return [g[0][0]*a + g[0][1]*b, g[1][0]*a + g[1][1]*b]

s0 = [1+0j, 0+0j]
out = apply(H, apply(H, s0))   # H дважды
print('HH|0> =', [round(x.real, 4) for x in out])

Вывод:

HH|0> = [1.0, 0.0]

Фазовые гейты S и T

Фазовые гейты не трогают вероятности, а добавляют фазу к амплитуде при |1>. Гейт S умножает b на i (поворот фазы на 90 градусов), гейт T — на e^{i·пи/4} (45 градусов). Они нужны, чтобы точно позиционировать состояние на экваторе сферы Блоха; вместе с H они образуют универсальный набор для однокубитной логики.

ГейтМатрица (диагональ)Что делает с b
Zdiag(1, -1)умножает на -1 (фаза 180°)
Sdiag(1, i)умножает на i (фаза 90°)
Tdiag(1, e^{iпи/4})фаза 45°

Как работает под капотом

Сама по себе фаза при |1> невидима в измерении. Но стоит «обернуть» фазовый гейт двумя Адамарами — и фаза превращается в разную вероятность. Схематически: H, потом фазовый поворот, потом снова H — и вероятность исхода 0 зависит от величины фазы. Это и есть рабочий механизм почти всех квантовых алгоритмов: записать ответ в фазу, затем интерференцией перевести фазу в вероятность.

Частые ошибки

  • Забыть множитель 1/корень из 2 у Адамара — состояние перестанет быть нормированным.
  • Ждать, что фазовый гейт сам по себе изменит исход измерения. Нет — нужна интерференция (Адамар вокруг).
  • Думать, что H случаен. H полностью детерминирован; случайность появится только при измерении его результата.

Итог

  • H создаёт равную суперпозицию и обратим (H·H = I).
  • Фазовые гейты S, T крутят фазу при |1>, не меняя вероятностей напрямую.
  • Связка «H — фаза — H» переводит фазу в наблюдаемую вероятность.
Проверьте себя
1. Что делает гейт Адамара с состоянием |0>?
AОставляет |0>
BПереводит в равную суперпозицию (|0>+|1>)/sqrt(2)
CПереводит в |1>
DЗапутывает
2. Чему равно H, применённое дважды?
AГейту X
BТождественной операции (возврат в исходное)
CГейту Z
DСлучайному состоянию
3. Как сделать фазу, заданную фазовым гейтом, наблюдаемой?
AНикак
BОкружить его Адамарами, чтобы интерференция перевела фазу в вероятность
CИзмерить дважды
DПрименить X