Московский государственный университет имени М.В.Ломоносова
Опубликован: 15.03.2007 | Доступ: свободный | Студентов: 576 / 7 | Оценка: 5.00 / 4.50 | Длительность: 19:30:00
Специальности: Программист
Лекция 14:

Классические и квантовые коды

Аннотация: Изучив эту лекцию, Вы познакомитесь с понятием классических и квантовых кодов, научитесь использовать и применять код Шора, симплектические (стабилизирующие) коды, а также торические коды. Узнаете, каким образом коды могут исправлять ошибки, и как правильно выбрать способ кодирования в каждом конкретном случае.

Как уже обсуждалось ранее, квантовое вычисление "не слишком" чувствительно к погрешностям реализации унитарных операторов: ошибки накапливаются линейно. Если есть последовательность унитарных операторов U_1,\dots,U_L и последовательность приближений \tilde U_1,\double\dots,\tilde U_L, \|\tilde U_j- U_j\|<\delta, то выполняется неравенство

\| \tilde U_L\cdot\ldots\cdot\tilde  U_1 - U_L\cdot\ldots\cdot U_1 \|< L\delta.
Отсюда легко заключить, насколько изменится вероятность получения правильного ответа F(x) квантовой схемой U=U_L\cdot\ldots\cdot U_1 (см. определение 8.1). Эта вероятность (левая часть неравенства в определении) может быть записана как \bra{\xi}U^\dagger\Pi_{\calM}U\ket{\xi}, где \ket{\xi}=\ket{x,0^{N-n}}, а \calM=\ket{F(x)}\otimes\BB^{\otimes(N-m)}. Имеет место следующая оценка:
\bigl|\bra{\xi}\tilde U^\dagger\Pi_{\calM}\tilde U\ket{\xi}- \bra{\xi}U^\dagger\Pi_{\calM}U\ket{\xi}\bigr| \le 2\|\tilde U-U\| \,\le\, 2L\delta.
Таким образом, при неточной реализации унитарных операторов правильный ответ получается с вероятностью \ge 1-\eps-2L\delta ; в общем случае эта оценка неулучшаема.

С точки зрения физической реализации квантового компьютера, полученный результат не является удовлетворительным. Получается, что размер квантовой схемы L не должен превосходить 1/(4\delta), иначе вероятность правильного ответа может стать меньше 1/2. Поэтому возникает важный вопрос: можно ли избежать накопления ошибок, используя схемы специального вида?

Ответ на этот вопрос положительный. Идея состоит в том, чтобы закодировать (заменить) каждый q-бит, использующийся в вычислениях, несколькими при помощи определенного изометрического вложения V\colon\BB\to\BB^{\otimes n}. Дело в том, что ошибки, как правило, действуют одновременно на небольшое число q-битов, поэтому кодирование повышает устойчивость квантового состояния.

Конструкции, необходимые для организации вычислений без потери точности, довольно сложны. Подробно они изложены в [41, 19, 34, 4, 32], а здесь мы в основном ограничимся более простым вопросом: как сохранять неограниченно долго заданное квантовое состояние? (Легко понять, что это — частный случай предыдущего вопроса, когда реализуется последовательность тождественных операторов.) Для решения такой упрощенной задачи конкретный вид кодирующего отображения V неважен; нужно задать лишь подпространство \calM=\Im V\subseteq\BB^{\otimes n}.

Определение 14.1. Квантовый код типа (n,m) — это подпространство \calM\subseteq\BB^{\otimes n} размерности 2^m. (Число m — количество закодированных q-битов — не обязательно должно быть целым).

Ошибки, возникающие при хранении информации, будут приводить к тому, что состояние системы будет выходить за пределы \calM. Поэтому необходимо научиться восстанавливать состояние системы после воздействия ошибок определенного типа.

Классические коды.

Вначале рассмотрим случай классических кодов. Мы лишь слегка затронем эту обширную тему. Подробное изложение теории кодов, корректирующих ошибки, (так обычно называется эта наука) можно найти в [9].

Классический код типа (n,m) — это подмножество M\subseteq\cb^n мощности 2^m. Для описания ошибок необходимо также определить канал связи — нечто вроде неоднозначного отображения \cb^{n}\to\cb^{n'}. Существует две модели ошибок: более реалистичная — вероятностная, и упрощенная — теоретико-множественная. Согласно вероятностной модели, канал связи задается условными вероятностями p(y\,|\,x) приема слова y при передаче слова x. Мы будем рассматривать случай независимо распределенных ошибок, полагая что n'=n, а условные вероятности определяются через вероятность ошибки при передаче одного бита p_1:

\begin{equation}\label{нез-ошибки} p(y\,|\,x)=p_1^{d(x,y)}(1-p_1)^{n-d(x,y)}. \end{equation} ( 14.1)
Здесь d(x,y)расстояние Хэмминга (число различных битов).

Есть стандартный способ упростить модель независимо распределенных ошибок. Оценим вероятность того, что случится более k ошибок (как ясно из формулы (14.1), эта величина от x не зависит). Считаем, что n,k — фиксированы, p_1\to0. Тогда

\begin{equation}\label{k-errors} \Pr[\text{число ошибок}\,>k]=\sum_{j>k}^{} \binom{n}{j}p_1^j(1-p_1)^{n-j}= o(p_1^k). \end{equation} ( 14.2)
Итак, вероятность того, что число ошибок больше k, мала. Поэтому можно сильно упростить модель. Будем считать, что при передаче слова x может получиться любое слово y, такое что d(x,y)\leq k (параметр k задает интересующий нас порог точности), а другие ошибки не встречаются.

Введем обозначения:

N=\cb^n — множество входов,

N'=\cb^{n'} — множество выходов,

E\subseteq N\times N' — множество переходов (оно же — множество ошибок),

E(n,k) — множество \{(x,y):d(x,y)\leq k\}.

Определение 14.2. Код M исправляет ошибки из множества E, если для любых x_1,x_2\in M из (x_1,y)\in E и (x_2,y)\in E следует x_1=x_2.

Другими словами это условие можно сформулировать так: для любых пар (x_1,y_1),\ (x_2,y_2), принадлежащих E, из x_1,x_2\in M и x_1\ne x_2 следует y_1\ne y_2.

В том случае, когда E=E(n,k), говорят, что код исправляет k ошибок.

Замечание. Термин "код, исправляющий ошибки" является неточным. Правильнее было бы сказать, что код оставляет возможность для исправления ошибок. Исправляющие преобразование — это отображение P\colon N'\to N, такое что, если (x,y)\in E и x\in M, то P(y)=x, вычисление значения исправляющего преобразования называется декодированием.

Пример 14.1. Код с повторением:

M_3=\{(0,0,0),(1,1,1)\}\subseteq\cb^3.
Такой код исправляет одну ошибку.

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

Определение 14.3. Кодовое расстояние — это

d(M)=\min\{d(x_1,x_2): x_1,x_2\in M;\,\ x_1\ne x_2\}.

Для кода из примера 14.1 кодовое расстояние равно 3. Имеется очевидное утверждение.

Утверждение 14.1. Код исправляет k ошибок тогда и только тогда, когда d(M)>2k.

Игорь Хан
Игорь Хан
Узбекистан, Ташкент, Ташкентский педагогический институт иностранных языков, 1990