CNOT и многокубитные гейты
Главный двухкубитный гейт — CNOT: переворачивает цель, если управляющий равен 1.
CNOT (controlled-NOT) — двухкубитный гейт: если управляющий кубит равен 1, он применяет X к целевому; если 0 — не делает ничего.
Зачем нужны двухкубитные гейты
Однокубитные гейты крутят каждый кубит по отдельности и сами по себе никогда не создают запутанность. Чтобы кубиты «почувствовали» друг друга, нужен гейт, действующий на пару. Базовый и достаточный для универсальности — CNOT. Вместе с однокубитными гейтами CNOT образует универсальный набор: любой квантовый алгоритм можно собрать из них.
CNOT как таблица и как матрица
На базисных состояниях CNOT (управляющий — первый кубит) действует так:
| Вход | Выход |
| |00> | |00> |
| |01> | |01> |
| |10> | |11> |
| |11> | |10> |
Управляющий равен 1 (состояния |10> и |11>) — целевой переворачивается. Реализуем CNOT матрицей 4x4 и проверим на |10>.
CNOT = [
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 1, 0],
]
# порядок базиса: 00, 01, 10, 11
def apply4(M, s):
return [sum(M[i][j]*s[j] for j in range(4)) for i in range(4)]
state = [0, 0, 1+0j, 0] # |10>
out = apply4(CNOT, state)
labels = ['00', '01', '10', '11']
for lab, amp in zip(labels, out):
if abs(amp) > 1e-9:
print('амплитуда при', lab, '=', amp)Вывод:
амплитуда при 11 = (1+0j)
|10> превратилось в |11> — целевой кубит перевернулся, потому что управляющий был 1.
ASCII-схема CNOT
управляющий q0 ---*---
|
целевой q1 ---X---
'*' - точка управления, 'X' - переворот цели
Как работает под капотом
Магия CNOT раскрывается, когда управляющий кубит сам в суперпозиции. Тогда CNOT «связывает» исходы: если управляющий равен (|0>+|1>)/корень из 2, то после CNOT состояние становится (|00>+|11>)/корень из 2 — запутанным. Это значит, что результаты измерения двух кубитов теперь скоррелированы: либо оба 0, либо оба 1, и никогда «вразнобой». Так из суперпозиции + CNOT рождается запутанность — основной строительный приём квантовых алгоритмов.
Существуют и другие управляемые гейты: CZ (управляемый Z), Тоффоли (CCNOT — с двумя управляющими, переворот цели только если оба равны 1; он, кстати, делает классические вычисления обратимыми). Но CNOT — фундамент.
Частые ошибки
- Перепутать управляющий и целевой кубит — матрица станет другой.
- Считать, что CNOT всегда переворачивает цель. Только когда управляющий равен 1.
- Думать, что CNOT нарушает причинность через корреляции. Нет — корреляция не позволяет передавать сигнал быстрее света.
Итог
- CNOT переворачивает целевой кубит, если управляющий равен 1.
- Однокубитные гейты + CNOT — универсальный набор.
- Суперпозиция на управляющем + CNOT создаёт запутанность.