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

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

Торические коды.

Приведем важный пример симплектического кода. Он строится так. Пусть есть квадратная решетка размера r\times r на торе. Сопоставим каждому ее ребру по q-биту. Таким образом, всего имеется n=r^2 q-битов. Проверочные операторы будут двух типов.


Рис. 14.1.

Тип I задается вершинами. Выберем некоторую вершину s и сопоставим ей проверочный оператор

A^{(x)}_s=\sigma(f^{(x)}_s)=\prod_{j\in\,\mathrm {\text{звезда}}(s)}^{} \sigma^x_j.

Тип II задается гранями. Выберем некоторую грань u и сопоставим ей проверочный оператор

A^{(z)}_u=\sigma(f^{(z)}_u)=\prod_{j\in\, \mathrm {\text{граница}}(u)}^{} \sigma^z_j.

Операторы A^{(x)}_s и A^{(z)}_u коммутируют, поскольку граница и звезда всегда пересекаются по четному числу ребер. (Перестановочность операторов одного типа очевидна.)

Хотя мы указали r^2+r^2=2r^2 проверочных операторов (по одному на грань и на вершину), между ними есть соотношения. Произведение всех A^{(x)} -операторов, как и произведение всех A^{(z)} -операторов, равны тождественному. Можно показать, что других соотношений нет. Поэтому \dim F=2r^2-2, а \dim\calM=2^2. Поэтому торический код позволяет закодировать два q-бита. Посмотрим, чему равно кодовое расстояние для торического кода.

Для торического кода имеются естественные разложения

F=F^{(x)}\oplus F^{(z)},\qquad F_+=F_+^{(x)}\oplus F_+^{(z)}
на подпространства, соответствующие проверочным операторам, состоящим только из \sigma_j^x, либо только из \sigma_j^z. Такие коды называются CSS кодами (по фамилиям авторов, впервые рассмотревших этот класс кодов [25, 44]). В случае торического кода элементы подпространств F^{(z)}, F_+^{(z)} имеют вид (0,\beta_1,\dots,0,\beta_n) ; им можно сопоставить 1-цепи, т.е. формальные линейные комбинации ребер с коэффициентами \beta_1,\dots,\beta_n\double\in\FF_2. Элементам подпространств F^{(x)}_{\ms},\ F_+^{(x)} сопоставляются 1-коцепи. Рассмотрим вектор f^{(z)}_u\in F^{(z)}_{\ms}, отвечающий грани с номером u. Ему будет сопоставлена 1-цепь, являющаяся границей этой грани. Легко видеть, что пространство F^{(z)} состоит из всех 1-границ. Аналогично, векторам f_s^{(x)} будут сопоставляться 1-кограницы, порождающие все пространство 1-кограниц.

Возьмем произвольный элемент g\in F_+, g=g^{(x)}+g^{(z)}. Условия коммутирования запишутся следующим образом:

\begin{multiline}
\omega(f_s^{(x)},g)=0\quad \Longleftrightarrow\quad
\omega(f_s^{(x)},g^{(z)})=0, \\
\omega(f_u^{(z)},g)=0\quad \Longleftrightarrow\quad
\omega(f_u^{(z)},g^{(x)})=0.
\end{multiline}
Чтобы выполнялось \omega(f_s^{(x)},g^{(z)}_{\ms})=0, нужно, чтобы в любой звезде было четное число ребер с ненулевыми весами из g^{(z)}. Другими словами, g^{(z)} — это 1-цикл (с коэффициентами в \ZZ_2 ). Аналогично, g^{(x)} должен быть 1-коциклом.

Итак, пространства F_+^{(z)}, F_+^{(x)} состоят из 1-циклов и 1-коциклов, а пространства F^{(z)}, F^{(x)} состоят из 1-границ и 1-кограниц. Следовательно, кодовое расстояние есть минимальная мощность (количество ненулевых коэффициентов) по циклам, не являющимся границами, и коциклам, не являющимся кограницами. Легко видеть, что этот минимум равен r (нужны либо цикл, либо разрез, не гомологичные 0). Это означает, что торический код исправляет \lfloor (r-1)/2\rfloor ошибок.

Будем обозначать коды описанного вида через \TOR(r).

Замечание. Торические коды являются очень важным примером, обладающим рядом замечательных свойств. В частности, это коды с локальными проверками. Последовательность кодов называется кодами с локальными проверками, если выполнены следующие условия:

  • каждый проверочный оператор действует на ограниченное константой число q-битов;
  • каждый q-бит входит в ограниченное константой число проверочных операторов;
  • кодовое расстояние неограниченно возрастает.

Такие коды представляют интерес для задачи построения вычислительных схем, устойчивых к ошибкам. При исправлении ошибок могут происходить новые ошибки. Но для кодов с локальными проверками схемы исправления ошибок имеют фиксированную глубину, поэтому одна ошибка при работе такой схемы портит ограниченное число q-битов.

Процедура исправления ошибок.

Определение 14.6 и теорема 14.2 указывают только на принципиальную возможность восстановить исходное состояние системы после действия ошибки. На примере симплектических кодов покажем, как реализовать процедуру исправления ошибки.

Рассмотрим частный случай, к которому все сводится. Пусть имеются две ошибки, заданные операторами X=\sigma(g_1), Y=\sigma(g_2). Тогда Z=Y^\dagger X= с\sigma(g_1-g_2) ( |c|=1 ). Назовем синдромом ошибки g_1 вектор \left(\omega(g_1,f_1),\dots,\omega(g_1,f_s)\right) (для g_2 — аналогично).

Возьмем вектор \ket\eta\in\calM. Обозначим \ket\psi=X\ket\eta. Проверочные операторы действуют на \ket\psi так: X_j\ket\psi=(-1)^{\omega(g_1,f_j)}\ket\psi. Поэтому, измеряя собственные числа X_j на состоянии \ket{\psi}, можно измерить синдром.


Рис. 14.2.

Если кодовое расстояние равно k, то выполнено

\forall\,g_1,g_2\: \Bigl((|g_1|\leq k, |g_2|\leq k) \Rightarrow \big((g_1-g_2\in F)\vee(g_1-g_2\not\in F_+)\big)\Bigr).
Условие g_1-g_2\in F означает эквивалентность ошибок g_1 и g_2, т.е. \sigma(g_1)\ket\eta=c\sigma(g_2)\ket\eta для любого вектора \ket\eta из кодового подпространства. Условие g_1-g_2\not\in F_+ равносильно тому, что синдромы ошибок g_1 и g_2 не совпадают. Итак, либо ошибки эквивалентны, либо их можно различить по синдрому. Следовательно, по синдрому можно определить ошибку с точностью до эквивалентности, т.е. по модулю подпространства F.

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

Выше рассмотрен случай ошибки типа \sigma(g). На самом деле ошибка состоит в действии преобразования матриц плотности вида

T=\sum_{|h|\leq k,|h'|\leq k}^{} b_{h,h'} \sigma(h)\cdot\sigma(h')^\dagger.
В качестве упражнения читателю предлагается проверить, как работает приведенная выше схема в случае такого общего преобразования матриц плотности.

Задача 14.6. Постройте полиномиальный алгоритм определения ошибки по синдрому для торического кода.