Цели главы. Пройти путь от трёх кажущихся возражений против квантовой коррекции до её теории и первых экспериментов ниже порога: трёхкубитные коды, код Шора, стабилизаторный язык, поверхностный код, теорема о пороге и цена T-вентиля. Это самая инженерно важная глава курса — именно здесь выясняется, что требуется для исполнения алгоритмов части II на реальных размерах задач и чего современные эксперименты ещё не доказали.
Классическая коррекция проста: продублируй бит трижды, голосуй большинством. Перенести это на кубиты мешают, казалось бы, непреодолимые препятствия:
Открытие Шора и Стина (1995–96), обходящее все три пункта разом, — по праву одно из великих в информатике. Разберём его на простейшем примере.
Кодирование. Клонировать нельзя — но можно запутать. Логический кубит кодируется в три физических:
α|0⟩ + β|1⟩ → α|000⟩ + β|111⟩
(двумя CNOT от первого кубита к остальным). Обратите внимание: это не три копии состояния — (α|0⟩+β|1⟩)⊗3 раскрывалось бы в восемь слагаемых. Это одно запутанное состояние; амплитуды существуют в единственном экземпляре — запрет клонирования соблюдён. Возражение 1 снято.
Синдромные измерения. Пусть шум перевернул один из кубитов, скажем второй: состояние стало α|010⟩ + β|101⟩. Как найти виновника, не измеряя данные? Измерим не кубиты, а чётности пар: операторы Z1Z2 (совпадают ли кубиты 1 и 2) и Z2Z3. Технически: анцилла в |0⟩, два CNOT от проверяемой пары на неё, измерение анциллы (схема — в лабораторной). Ключевое свойство: оба слагаемых нашего состояния — и |010⟩, и |101⟩ — дают одинаковые чётности («не совпадают», «не совпадают»), поэтому измерение чётностей не различает слагаемые и не разрушает суперпозицию — оно извлекает ровно один бит: где ошибка, ничего не сообщая о том, что закодировано. Пара результатов (s1, s2) — синдром — однозначно указывает виновника: (0,0) — ошибки нет, (1,0) — кубит 1, (1,1) — кубит 2, (0,1) — кубит 3. Применяем X к виновнику — состояние восстановлено. Возражение 2 снято.
Дискретизация ошибок. Пусть ошибка не полный переворот, а малый унитарный поворот: на кубит 2 подействовал e−iεX2 = cos ε·I − i sin ε·X2. Кодовое состояние стало суперпозицией «ошибки не было» и «был переворот». Синдромное измерение проецирует её на ортогональные синдромные подпространства: с вероятностью cos2ε синдром чист, а с вероятностью sin2ε указывает на кубит 2; в обоих случаях после условной коррекции логическое состояние восстановлено. Непрерывная когерентная ошибка превращается при диагностике в один из дискретных исходов — измерение из врага стало союзником. Возражение 3 снято. В общем случае любой однокубитный оператор раскладывается по базису {I, X, Y, Z}, поэтому код, исправляющий эти четыре компоненты, исправляет произвольную однокубитную ошибку. Реальный шум может быть коррелированным, нестационарным и затрагивать утечку за пределы вычислительного подпространства — одной независимой паулиевской моделью он не исчерпывается.
Трёхкубитный код бессилен против Z-ошибки: Z2 превращает состояние в α|000⟩ − β|111⟩ — чётности чисты, а знак испорчен. Лекарство подсказало упражнение 3 главы 10: в базисе Адамара Z действует как X. Тот же трёхкубитный код, записанный в состояниях |+++⟩/|−−−⟩ (с проверками чётностей XiXj), исправляет один фазовый переворот — но теперь беззащитен перед битовым.
Код Шора [[9,1,3]] — конкатенация обоих: логический кубит кодируется тремя «фазовыми» блоками, каждый из которых — тройка «битовых» кубитов; итого девять физических на один логический. Код исправляет любую одиночную ошибку — X, Z, их комбинацию Y и любую их суперпозицию (раздел 11.2 объяснил почему). Историческое значение: первое доказательство самой возможности квантовой коррекции (1995). Обозначение [[n, k, d]] читается так: n физических кубитов, k логических, а кодовое расстояние d — минимальный вес паулиевского оператора, который действует на кодовом пространстве как нетривиальная логическая операция. Код гарантированно исправляет до ⌊(d−1)/2⌋ произвольных ошибок.
Обобщим увиденное. Все наши проверки — Z1Z2, X1X2 и т.п. — операторы из матриц Паули с собственными значениями ±1. Стабилизаторный код задаётся набором коммутирующих паулиевских операторов (стабилизаторов); кодовое пространство — их общее собственное подпространство с собственным значением +1 («все проверки зелёные»). Ошибка, антикоммутирующая с каким-то стабилизатором, переводит состояние в подпространство −1 этой проверки — синдром загорается, не трогая закодированной информации. Формализм (Готтесман, 1997) свёл конструирование квантовых кодов к алгебре групп Паули — на этом языке написана вся современная литература по QEC, включая LDPC-коды, к которым движутся IBM и другие. Для курса достаточно словаря: стабилизатор = проверка чётности; синдром = вектор сработавших проверок; декодер = классический алгоритм, вычисляющий по синдрому наиболее вероятную коррекцию.
Девяти кубитов Шора мало: они исправляют лишь одну ошибку, а нам надо подавлять логическую ошибку на много порядков. Нужен код с растущим расстоянием — и совместимый с реальным железом, где взаимодействия часто локальны. Главный ориентир для двумерных архитектур — поверхностный код, восходящий к торическому коду Китаева и развитый в планарных вариантах многими авторами.
Устройство: кубиты данных размещаются на решётке вперемешку с измерительными; каждый измерительный кубит цикл за циклом снимает проверку нескольких соседей — часть проверок типа Z ловит X-компоненты ошибок, часть типа X ловит Z-компоненты. Операции локальны, что удобно, например, для сверхпроводящего чипа. Ошибки образуют цепочки в пространстве и времени, а изменения синдромов отмечают их границы. Классический декодер по всей истории синдромов выбирает наиболее вероятный класс ошибок — например, методом минимального совершенного паросочетания или более быстрыми приближениями — и ведёт паулиевскую рамку вместо обязательного физического исправления каждого события. Минимальный нетривиальный логический оператор имеет вес d; однако декодер уже может ошибиться при ⌈d/2⌉ подходящим образом расположенных сбоях, а не только после d одновременных переворотов.
Для повёрнутого планарного участка расстояния d требуется d2 кубитов данных и примерно столько же измерительных, всего 2d2−1; другие геометрии и операции имеют иной расход. Часто цитируемый порог порядка 1% относится к определённым схемам извлечения синдрома, моделям шума и декодерам, а не является универсальной константой устройства. Синдромы рождаются каждый цикл: в эксперименте Willow цикл занимал 1,1 мкс, а интегрированный декодер расстояния 5 выдавал результат в среднем за 63 мкс, продолжая обрабатывать поток. Это важная демонстрация реального времени, но задержка, точность и масштабирование классического декодера остаются частью инженерной задачи.
Теорема о пороге (Ааронов–Бен-Ор и другие независимые работы 1990-х, неформальная формулировка): для заданной модели локального шума существует ненулевой порог, ниже которого идеальное вычисление любой требуемой длины можно аппроксимировать отказоустойчивой схемой с управляемыми накладными расходами. Значение порога и вид расходов зависят от кода, набора операций, связности, корреляций шума и декодера. Для семейства поверхностных кодов часто используют эмпирическую аппроксимацию
pL ≈ A(p/pth)(d+1)/2,
где A тоже зависит от схемы. При p < pth рост d экспоненциально подавляет pL; выше порога простое увеличение участка уже не помогает. Это не формула самой общей теоремы, а полезная модель масштабирования конкретного семейства кодов.
Экспериментальный перелом шёл ступенями. В 2023 году поверхностный код расстояния 5 впервые немного превзошёл среднее по участкам расстояния 3. В 2024 году процессор Willow показал устойчивое подавление: при переходах d = 3 → 5 → 7 логическая ошибка за цикл уменьшалась в среднем в 2,14 раза; память d = 7 на 101 физическом кубите имела ошибку 0,143% за цикл и жила дольше лучшего составляющего физического кубита. В 2025 году поведение ниже порога и элементы универсальной отказоустойчивой архитектуры показали также на нейтральных атомах. Это доказательства принципа и заметный инженерный прогресс, но не демонстрация большого полезного вычисления: нужны множество логических кубитов, долгие стабильные вычисления, отказоустойчивые логические операции и гораздо меньшая суммарная вероятность отказа. Оценки физических ресурсов для RSA-2048 расходятся от сотен тысяч до миллионов и существенно зависят от архитектуры и допущений (глава 7).
Хранить логический кубит мало — надо вычислять, не выпуская ошибки из-под контроля. Отказоустойчивость — построение логических операций так, чтобы небольшой набор физических сбоев не размножался в неисправимую конфигурацию. Иногда это достигается трансверсально, попарными операциями над физическими кубитами блоков, но для поверхностного кода логические операции обычно выполняют также деформацией кода, lattice surgery и телепортацией. Теорема Истина–Нилла ставит общий предел: ни один квантовый код с конечномерными подсистемами не имеет трансверсального универсального набора вентилей.
Клиффордовские операции в поверхностной архитектуре сравнительно доступны, но сами по себе классически моделируемы по теореме Готтесмана–Нилла. Для универсальности добавляют, например, T-вентиль. Заготавливается магическое состояние |T⟩ = (|0⟩ + eiπ/4|1⟩)/√2, а схема с измерением и условной клиффордовской коррекцией телепортирует его действие в вычисление. Сырые магические состояния улучшают дистилляцией; известный протокол 15-к-1 превращает пятнадцать состояний в одно с ошибкой более высокого порядка при достаточно хорошем входе. В поверхностно-кодовых проектах фабрики магических состояний часто дают крупную, иногда доминирующую долю пространства и времени, поэтому важны T-count и T-depth. Но это не закон любой архитектуры: cultivation, другие коды и способы реализации не-клиффордовских операций меняют смету. Поэтому оценки главы 7 нельзя выводить одним умножением числа логических кубитов на площадь одного участка.
Ответы и указания. 2: X1X3 переводит состояние в α|101⟩ + β|010⟩; обе чётности нарушены — синдром (1,1), декодер решит «ошибка в кубите 2», применит X2 и получит α|111⟩ + β|000⟩ — логический переворот; код с d = 3 исправляет ⌊(3−1)/2⌋ = 1 ошибку. 5: отношение p/pth = 0,1, поэтому (d+1)/2 ≥ 12 и минимальное нечётное d = 23; участок памяти занимает 2·23²−1 = 1057 физических кубитов. Простое умножение нескольких тысяч логических кубитов даёт уже несколько миллионов, но всё равно не учитывает разные расстояния для разных регистров, время алгоритма, маршрутизацию, логические операции, фабрики и альтернативные коды. Поэтому оно не обязано совпадать с оценкой Гидни 2025 года менее миллиона кубитов: там другая полная архитектура и набор допущений.
Цель — собрать трёхкубитный код с синдромной диагностикой и измерить его логическую ошибку как функцию физической.
Задание 1. Кодирование и канал шума. Кубиты 0–2 — данные, 3–4 — анциллы синдрома. Закодируйте состояние (для проверки возьмите |1⟩L: X на кубите 0, затем CNOT 0→1, 0→2). Смоделируйте канал битовых переворотов: на каждый кубит данных независимо применяйте X с вероятностью p. Если случайность задаёт Python, новый набор ошибок надо выбирать для каждого статистического испытания; тысячи shots одной и той же схемы с уже зафиксированными X не моделируют новые ошибки.
Задание 2. Синдром и коррекция. Измерьте чётности: CNOT 0→3, CNOT 1→3 (анцилла 3 накапливает Z1Z2); CNOT 1→4, CNOT 2→4 (анцилла 4 — Z2Z3); измерьте анциллы. По таблице синдромов из упражнения 1 примените коррекцию — условные X через with qc.if_test(...), как в лабораторной 2. Измерьте кубиты данных и декодируйте логическое значение большинством.
Задание 3. Кривая логической ошибки. Для p от 0,01 до 0,5 (десяток точек, не менее 2000 независимых образцов ошибок на точку) постройте график: доля испытаний с неверным логическим значением против p. На тот же график нанесите теоретическую кривую 3p² − 2p³ из упражнения 3 и прямую pL = p (незакодированный кубит). Найдите экспериментально точку пересечения — «порог» игрушечного кода — и убедитесь, что ниже неё кодирование помогает, а выше вредит: миниатюра порогового поведения.
Задание 4*. Пять кубитов. Расширьте код до пяти повторений (d = 5, четыре синдромные анциллы, декодирование большинством). Убедитесь, что при малых p логическая ошибка падает быстрее (~p³), и сравните кривые d = 3 и d = 5. Это простая аналогия графика масштабирования, а не воспроизведение Willow: здесь нет фазовых, измерительных, временно коррелированных и вентильных ошибок.
Задание 5* (обсуждение). Наш код не ловит фазовые ошибки, а его «синдромные измерения» выполняются идеальными вентилями. Перечислите, что ещё отделяет эту модель от настоящего поверхностного кода (подсказки: ошибки самих проверок и анцилл, повторение циклов измерения во времени, декодер сложнее большинства, ошибки измерения).