Классический бит против кубита

Главное различие классической и квантовой информации — и почему «0 и 1 сразу» вводит в заблуждение.

Кубит — единица квантовой информации; его состояние задаётся двумя комплексными амплитудами при базисных состояниях |0> и |1>, а не одним из двух значений.

Бит: две устойчивые позиции

Классический бит — это переключатель: он либо в положении 0, либо 1. Регистр из n битов хранит ровно одно из 2^n значений в каждый момент. Вся классическая информатика стоит на этом: транзистор открыт или закрыт, напряжение высокое или низкое.

Кубит: точка в пространстве состояний

Кубит описывается не числом 0/1, а парой комплексных чисел — амплитуд a и b — при двух базисных состояниях, которые принято обозначать |0> и |1> (это запись «кет», просто имена для двух опорных векторов). Состояние записывают как a·|0> + b·|1>, где a и b — комплексные, и выполняется условие нормировки: |a|^2 + |b|^2 = 1. Числа |a|^2 и |b|^2 — это вероятности увидеть 0 или 1 при измерении.

Важно: пока мы не измеряем, кубит — это вектор (a, b), а не «значение». Он живёт в двумерном комплексном пространстве. Множество всех допустимых состояний образует поверхность (сферу Блоха — о ней позже), а не две точки.

Смоделируем кубит на обычном Python: комплексные числа в нём встроены (литерал 1j — мнимая единица).

import cmath

# Кубит как пара комплексных амплитуд (a|0> + b|1>)
a = complex(0.6, 0.0)      # амплитуда при |0>
b = complex(0.0, 0.8)      # амплитуда при |1> (комплексная!)

p0 = abs(a)**2             # вероятность исхода 0
p1 = abs(b)**2             # вероятность исхода 1
print('p0 =', round(p0, 4))
print('p1 =', round(p1, 4))
print('сумма =', round(p0 + p1, 4))

Вывод:

p0 = 0.36
p1 = 0.64
сумма = 1.0

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

Почему амплитуды комплексные, а не просто вероятности? Потому что амплитуды умеют складываться и вычитаться — в том числе гасить друг друга (интерференция). Если бы кубит описывался только вероятностями p0 и p1, он был бы обычной «вероятностной монеткой» и не давал бы никакого преимущества. Вся мощь — в том, что амплитуды могут быть отрицательными или комплексными и интерферировать. Вероятность же мы получаем лишь в конце, возводя модуль амплитуды в квадрат (правило Борна).

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

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

Итог

  • Бит — одно из двух значений; кубит — вектор (a, b) из комплексных амплитуд.
  • Условие нормировки |a|^2 + |b|^2 = 1 связывает амплитуды с вероятностями.
  • Сила кубита — в способности амплитуд интерферировать, а не в «двух значениях сразу».
Проверьте себя
1. Чем состояние кубита отличается от бита?
AЭто одно из двух значений
BЭто вектор из двух комплексных амплитуд при |0> и |1>
CЭто всегда 0.5/0.5
DЭто целое число
2. Что означает условие |a|^2 + |b|^2 = 1?
AЭнергия кубита равна 1
BСумма вероятностей всех исходов измерения равна 1
CАмплитуды равны
DКубит запутан
3. Зачем амплитудам быть комплексными, а не просто вероятностями?
AДля красоты записи
BЧтобы они могли складываться и гасить друг друга — интерферировать
CЧтобы экономить память
DЭто требование Python