Классические и квантовые коды
Как уже обсуждалось ранее, квантовое вычисление "не слишком" чувствительно к погрешностям реализации унитарных операторов: ошибки накапливаются линейно. Если есть последовательность унитарных операторов и последовательность приближений
,
, то выполняется неравенство








С точки зрения физической реализации квантового компьютера, полученный результат не является удовлетворительным. Получается, что размер квантовой схемы не должен превосходить
, иначе вероятность правильного ответа может стать меньше
. Поэтому возникает важный вопрос: можно ли избежать накопления ошибок, используя схемы специального вида?
Ответ на этот вопрос положительный. Идея состоит в том, чтобы закодировать (заменить) каждый q-бит, использующийся в вычислениях, несколькими при помощи определенного изометрического вложения . Дело в том, что ошибки, как правило, действуют одновременно на небольшое число q-битов, поэтому кодирование повышает устойчивость квантового состояния.
Конструкции, необходимые для организации вычислений без потери точности, довольно сложны. Подробно они изложены в [41, 19, 34, 4, 32], а здесь мы в основном ограничимся более простым вопросом: как сохранять неограниченно долго заданное квантовое состояние? (Легко понять, что это — частный случай предыдущего вопроса, когда реализуется последовательность тождественных операторов.) Для решения такой упрощенной задачи конкретный вид кодирующего отображения неважен; нужно задать лишь подпространство
.
Определение 14.1. Квантовый код типа — это подпространство
размерности
. (Число
— количество закодированных q-битов — не обязательно должно быть целым).
Ошибки, возникающие при хранении информации, будут приводить к тому, что состояние системы будет выходить за пределы . Поэтому необходимо научиться восстанавливать состояние системы после воздействия ошибок определенного типа.
Классические коды.
Вначале рассмотрим случай классических кодов. Мы лишь слегка затронем эту обширную тему. Подробное изложение теории кодов, корректирующих ошибки, (так обычно называется эта наука) можно найти в [9].
Классический код типа — это подмножество
мощности
. Для описания ошибок необходимо также определить канал связи — нечто вроде неоднозначного отображения
. Существует две модели ошибок: более реалистичная — вероятностная, и упрощенная — теоретико-множественная. Согласно вероятностной модели, канал связи задается условными вероятностями
приема слова
при передаче слова
. Мы будем рассматривать случай независимо распределенных ошибок, полагая что
, а условные вероятности определяются через вероятность ошибки при передаче одного бита
:
![]() |
( 14.1) |

Есть стандартный способ упростить модель независимо распределенных ошибок. Оценим вероятность того, что случится более ошибок (как ясно из формулы (14.1), эта величина от
не зависит). Считаем, что
— фиксированы,
. Тогда
![]() |
( 14.2) |





Введем обозначения:
— множество входов,
— множество выходов,
— множество переходов (оно же — множество ошибок),
— множество
.
Определение 14.2. Код исправляет ошибки из множества
, если для любых
из
и
следует
.
Другими словами это условие можно сформулировать так: для любых пар , принадлежащих
, из
и
следует
.
В том случае, когда , говорят, что код исправляет k ошибок.
Замечание. Термин "код, исправляющий ошибки" является неточным. Правильнее было бы сказать, что код оставляет возможность для исправления ошибок. Исправляющие преобразование — это отображение , такое что, если
и
, то
, вычисление значения исправляющего преобразования называется декодированием.
Пример 14.1. Код с повторением:

Очевидное обобщение примера 14.1 приводит к классическим кодам, исправляющим любое количество ошибок. Построим более интересные примеры классических кодов. Для начала дадим еще одно стандартное определение.
Определение 14.3. Кодовое расстояние — это

Для кода из примера 14.1 кодовое расстояние равно 3. Имеется очевидное утверждение.
Утверждение 14.1. Код исправляет ошибок тогда и только тогда, когда
.