Гейт Адамара и фазовые гейты
Адамар — главный «создатель суперпозиции»; фазовые гейты тонко крутят фазу.
Гейт Адамара (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 |
Z | diag(1, -1) | умножает на -1 (фаза 180°) |
S | diag(1, i) | умножает на i (фаза 90°) |
T | diag(1, e^{iпи/4}) | фаза 45° |
Как работает под капотом
Сама по себе фаза при |1> невидима в измерении. Но стоит «обернуть» фазовый гейт двумя Адамарами — и фаза превращается в разную вероятность. Схематически: H, потом фазовый поворот, потом снова H — и вероятность исхода 0 зависит от величины фазы. Это и есть рабочий механизм почти всех квантовых алгоритмов: записать ответ в фазу, затем интерференцией перевести фазу в вероятность.
Частые ошибки
- Забыть множитель 1/корень из 2 у Адамара — состояние перестанет быть нормированным.
- Ждать, что фазовый гейт сам по себе изменит исход измерения. Нет — нужна интерференция (Адамар вокруг).
- Думать, что H случаен. H полностью детерминирован; случайность появится только при измерении его результата.
Итог
- H создаёт равную суперпозицию и обратим (H·H = I).
- Фазовые гейты S, T крутят фазу при |1>, не меняя вероятностей напрямую.
- Связка «H — фаза — H» переводит фазу в наблюдаемую вероятность.