Измерение: коллапс и вероятностный исход

Почему измерение разрушает суперпозицию и выдаёт лишь один случайный бит.

Измерение в вычислительном базисе превращает состояние a·|0> + b·|1> в исход 0 (с вероятностью |a|^2) или 1 (с вероятностью |b|^2), после чего кубит коллапсирует в соответствующее базисное состояние.

Что именно происходит

Пока кубит в суперпозиции, у него есть обе амплитуды. Как только мы его измеряем (в стандартном, «вычислительном» базисе |0>/|1>), природа бросает кость: с вероятностью |a|^2 мы видим 0, с вероятностью |b|^2 — 1. Дальше происходит самое контринтуитивное: состояние коллапсирует. Если выпал 0, кубит теперь точно в |0>, и повторное измерение даст 0 снова. Информация о второй амплитуде безвозвратно потеряна.

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

import random, math

random.seed(7)
# Состояние sqrt(0.3)|0> + sqrt(0.7)|1>
a = math.sqrt(0.3)
b = math.sqrt(0.7)
p0 = abs(a)**2

def measure():
    return 0 if random.random() < p0 else 1

N = 10000
counts = {0: 0, 1: 0}
for _ in range(N):
    counts[measure()] += 1
print('теория  p0=%.2f p1=%.2f' % (p0, 1 - p0))
print('опыт    f0=%.3f f1=%.3f' % (counts[0] / N, counts[1] / N))

Вывод:

теория  p0=0.30 p1=0.70
опыт    f0=0.302 f1=0.698

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

До измерения эволюция кубита детерминирована и обратима — это унитарные гейты. Случайность вносит именно измерение, и оно необратимо. Поэтому квантовый алгоритм строят так: сначала длинная обратимая часть (гейты, интерференция), затем — измерение в самом конце, ровно один раз, когда нужный ответ уже усилен. Если измерить слишком рано, вы разрушите суперпозицию и потеряете всё преимущество.

Можно измерять и в другом базисе — не только |0>/|1>. Технически это эквивалентно повороту состояния гейтом перед измерением в стандартном базисе. Поэтому «измерить в базисе X» = «применить Адамара, потом измерить обычно».

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

  • «Измерение просто читает скрытое значение». Нет: до измерения определённого значения не было; исход рождается в момент измерения.
  • «Можно измерить, не разрушив суперпозицию». Нет: измерение в общем случае коллапсирует состояние.
  • Измерять в середине алгоритма «чтобы посмотреть» — так теряется вся накопленная интерференция.

Итог

  • Измерение даёт случайный исход по правилу Борна и коллапсирует кубит.
  • Гейты обратимы, измерение — нет; его делают в конце.
  • Выбор базиса измерения — это поворот состояния перед стандартным измерением.
Проверьте себя
1. С какой вероятностью измерение состояния a|0>+b|1> даёт 1?
A|a|
B|b|^2
C|a|^2
D0.5 всегда
2. Что происходит с кубитом после измерения, давшего 0?
AОстаётся в суперпозиции
BКоллапсирует в |0>, повтор даст 0
CСтановится |1>
DУдваивает амплитуду
3. Почему измеряют только в конце алгоритма?
AТак быстрее
BРаннее измерение разрушает суперпозицию и убивает интерференцию
CИначе сломается железо
DЭто требование Python