Введение в исправление квантовых ошибок
В этой статье описываются основы квантовой коррекции ошибок, типы квантовых ошибок и некоторые распространенные коды исправления квантовых ошибок. Он также содержит пример исправления ошибок с помощью трехкубитного кода.
Что такое исправление квантовых ошибок?
Исправление квантовых ошибок (QEC) — это метод, позволяющий защитить квантовые сведения от ошибок. Исправление ошибок особенно важно в квантовых компьютерах, так как эффективные квантовые алгоритмы используют крупномасштабные квантовые компьютеры, которые чувствительны к шуму.
Основной принцип исправления квантовой ошибки заключается в том, что число битов, используемых для кодирования заданного объема информации, увеличивается. Эта избыточность позволяет коду обнаруживать и исправлять ошибки.
Частота ошибок квантовых компьютеров обычно выше, чем ошибки классического компьютера из-за проблем, связанных с созданием и операционными квантовыми системами. Шум, декогерентность и несовершенства в квантовых шлюзах может привести к ошибкам в квантовых вычислениях. Текущие квантовые компьютеры имеют частоту ошибок в диапазоне от 1 до 0,1%. Другими словами, это означает, что в среднем один из каждых 100 до 1000 квантовых ворот операций приводит к ошибке.
Типы квантовых ошибок
Существует два основных типа квантовых ошибок: битовые перевернутые и фазовые перевернутые.
Ошибки перевернутого бита возникают при изменении кубита на $\ket{0}$ $\ket{1}$ или наоборот. Ошибки битового переверения также называются $\sigma_x-errors, так как они сопоставляют состояния $кубита \sigma_x=\ket{$\ket{0}{1}$ и $\sigma_x.\ket{{1}=\ket{0}$ Эта ошибка аналогична классической ошибке перевернутого бита.
Ошибки переворачивания фазы возникают, когда кубит изменяет его этап. Они также называются $\sigma_z-errors, так как они сопоставляют состояния $кубита \sigma_z\ket{\ket{0}$={0}$ и $\sigma_z{1}\ket{= -.\ket{1}$ Этот тип ошибки не имеет классического аналога.
В квантовых вычислениях квантовые ошибки могут проявляться как битовые перевернутые, фазовые переверки или сочетание обоих.
Как работает исправление квантовых ошибок?
Коды исправления квантовых ошибок работают путем кодирования квантовых данных в более большой набор кубитов, называемых физическими кубитами. Совместное состояние физических кубитов представляет логический кубит.
Физические кубиты подвергаются ошибкам из-за декогерентности и несовершенства в квантовых воротах. Код разработан таким образом, чтобы ошибки можно было обнаружить и исправить, измеряя некоторые кубиты в коде.
Например, представьте, что вы хотите отправить однокубитное сообщение $\ket{0}$. Для кодирования сообщения можно использовать три физических кубита, которые $\ket{000}$называются кодовой словом. Этот код исправления ошибок является кодом повторения, так как сообщение повторяется три раза.
Теперь представьте, что во время передачи возникает одна ошибка перевернутого бита, чтобы получатель получил состояние $\ket{010}$. В этом сценарии получатель может получить вывод о том, что предполагаемое сообщение .$\ket{000}$ Однако если сообщение подвергается двум битовым ошибкам, получатель может вывести неправильное сообщение. Наконец, если все три бита перевернуты таким образом, чтобы исходное сообщение $\ket{000}$ стало $\ket{111}$, получатель не может знать об ошибке.
Расстояние от кода QEC — это минимальное количество ошибок, изменяющих одно кодовое слово на другой, то есть количество ошибок, которые не могут быть обнаружены. Расстояние $кода d$ можно определить как
$$d = 2t + 1$$
где $t$ — количество ошибок, которые может исправить код. Например, трехбитовый код может обнаруживать и исправлять одну ошибку с перевернутой битой, поэтому $не = 1$, а значит расстояние кода — $= 3$.
Обратите внимание, что коды повторения, такие как трех битовый код, используемый в этом примере, могут исправлять только ошибки перевернутого бита, а не фазовые ошибки переворачивания. Для исправления обоих типов ошибок требуются более сложные коды исправления квантовых ошибок.
Типы кодов QEC
Существует множество различных типов кодов QEC, каждый из которых имеет собственные свойства и преимущества. Ниже приведены некоторые распространенные коды QEC:
Код повторения: самый простой код исправления квантовых ошибок, в котором один кубит закодирован в несколько кубитов, повторяя его несколько раз. Код повторения может исправить ошибки перевернутого бита, но не фазовые ошибки перевернуть.
Код Шора: первый код исправления квантовой ошибки, разработанный Питером Шором. Он кодирует один логический кубит в девять физических кубитов. Код Shor может исправить одно битовую ошибку перевернуть или одну фазу перевернуть ошибку, но она не может исправить оба типа ошибок одновременно.
Код Steane: это семикубитный код, который может исправлять как битовые, так и фазовые ошибки переворачивания. Он имеет преимущество быть отказоустойчивым, что означает, что сам процесс исправления ошибок не приводит к дополнительным ошибкам.
Код Surface: это код исправления топологической ошибки, использующий двухмерный логический логический кубит. Он имеет высокий порог исправления ошибок и считается одним из самых перспективных методов для крупномасштабных отказоустойчивых квантовых вычислений. Код поверхности используется средство оценки ресурсов Azure Quantum.
Хэштингс-Haah код: этот квантовый код исправления ошибок предлагает лучшие затраты на пространство, чем коды поверхности на майорана кубитах во многих режимах. Для наборов инструкций на основе шлюзов затраты больше, что делает этот подход менее эффективным, чем код поверхности.
Пример: трехкубитный код
Код исправления ошибок с тремя кубитами — это простой код повторения, который может обнаруживать и исправлять одну битовую ошибку переворачивания. Он кодирует один логический кубит в три физических кубита путем повторения кубита три раза.
Совет
Ознакомьтесь с примером Q# кода для трех кубитового кода.
Представьте, что вы хотите отправить произвольный один кубит $\ket{\phi}=\alpha\ket{{0} + . \beta\ket{1}$ Чтобы избежать ошибок, кодируете базовые состояния $\ket{0}$ и $\ket{1}$ в совместное состояние трех кубитов. Два логических состояния являются $\ket{0_L}=\ket{000}$ и $\ket{1_L.}=\ket{111}$
Таким образом, один кубит $\ket{\phi}={0}\alpha\ket{+ \beta\ket{1}$ закодирован как:
$$\ket{\phi}{000}\ket{\alpha=_L + \beta\ket{\ket{\alpha{111}=0_L} + 1_L \beta\ket{}$$
Давайте разберем шаги трехкубитного кода.
Подготовка кубитов
Во-первых, вы закодируете один кубит $\ket{\phi}=\alpha\ket{{0} +\beta\ket{1}$ в совместное состояние трех кубитов.
Затем вы подготовите два дополнительных кубита в состоянии $\ket{0}$. Таким образом, глобальное состояние всех трех кубитов — $(\alpha\ket{0}+\beta\ket{1}){000}\alpha\ket{\ket{0}\ket{0}= + . \beta\ket{{100}$
Наконец, один кубит кодируется в совместное состояние трех кубитов, применяя две операции CNOT. Первый CNOT использует первый кубит в качестве контроля и действует на втором кубите, производя $\alpha\ket{000} + \beta\ket{110}$. Второй CNOT использует первый кубит в качестве контроля и действует на третьем кубите. Состояние трех кубитов теперь $\alpha\ket{000} + \beta\ket{111}$.
Отправка кубитов
Вы отправляете все три кубита. Предполагая, что могут возникнуть только однобитные ошибки перевернутого изменения, полученные кубиты находятся в одном из следующих состояний:
State | Ошибка |
---|---|
$\alpha\ket{000} + \beta\ket{111}$ | Без ошибок |
$\alpha\ket{100} + \beta\ket{011}$ | Кубит 1 |
$\alpha\ket{010} + \beta\ket{101}$ | Кубит 2 |
$\alpha\ket{001} + \beta\ket{110}$ | Кубит 3 |
Добавление вспомогательных кубитов
Во-первых, вы вводите еще два кубита, подготовленных в состоянии $\ket{00}$. Эта вспомогательная пара кубитов используется для извлечения сведений об ошибке без непосредственного измерения или получения сведений о логическом состоянии.
Далее вы выполняете четыре операции CNOT: первые две операции используют первые и второй полученные кубиты в качестве управления и действуют на первом вспомогательном кубитете, а последние две операции используют первые и третие полученные кубиты в качестве контроля и действуют на втором вспомогательном бите. Общее состояние всех пяти кубитов сейчас:
State | Ошибка |
---|---|
$(\alpha\ket{000} + \beta\ket{111})\ket{00}$ | Без ошибок |
$(\alpha\ket{100} + \beta\ket{011})\ket{11}$ | Кубит 1 |
$(\alpha\ket{010} + \beta\ket{101})\ket{10}$ | Кубит 2 |
$(\alpha\ket{001} + \beta\ket{110})\ket{01}$ | Кубит 3 |
Получение синдрома ошибки
Чтобы получить сведения об ошибке, вы измеряете два вспомогательных кубита в вычислительных состояниях $\ket{0}$ и $\ket{1}$. При этом вы восстанавливаете совместное состояние, которое называется синдромом ошибки, потому что помогает диагностировать ошибки в полученных кубитах.
Теперь вы знаете, в каком из четырех возможных состояний три полученных кубита находятся. Эту ошибку можно исправить, применив операцию исправления. В этом случае вы имеете дело с ошибками битовой переверки, поэтому исправление является $операцией \sigma_x$ , примененной к одному (или ни одному) кубитам.
Например, если синдром ошибки является$\ket{00}$, то полученные кубиты находятся в состоянии $\alpha{000}\ket{+ \beta\ket{{111}$, что является состоянием, которое вы первоначально отправили. Если возникает синдром $\ket{11}$ошибки, то полученные кубиты находятся в состоянии $\alpha{100}\ket{+b.\ket{{011}$ Существует битовая ошибка перевернуть на первом кубите, который можно исправить, применив $операцию \sigma_x$ к первому кубите.
Синдром ошибки | Состояние свертывание | Корректировка |
---|---|---|
$\ket{00}$ | $\alpha\ket{000} + \beta\ket{111}$ | Ничего не делать |
$\ket{01}$ | $\alpha\ket{100} + \beta\ket{011}$ | Применение $\sigma_x$ к кубитам 3 |
$\ket{10}$ | $\alpha\ket{010} + \beta\ket{101}$ | Применение $\sigma_x$ к кубитам 2 |
$\ket{11}$ | $\alpha\ket{001} + \beta\ket{110}$ | Применение $\sigma_x$ к кубитам 1 |
Извлечение исходного кубита
Наконец, чтобы извлечь один кубит, который вы хотите передать первоначально, применяете две операции CNOT: один использует первый кубит в качестве элемента управления и действует на втором кубите, а другой использует первый кубит в качестве элемента управления и действует на третьем.
Состояние первого кубита теперь $\alpha\ket{0} + \beta\ket{1}$, который является исходным кубитом, который вы хотите передать.
Внимание
Код QEC не получает никаких сведений о коэффициентах $\alpha$ и $\beta$, следовательно, суперпозиции вычислительного состояния остаются неизменными во время исправления.