共用方式為


量子誤差修正簡介

本文說明量子誤差修正的基本概念、量子誤差的類型,以及一些常見的量子錯誤修正碼。 它也提供如何使用三量子位程序代碼更正錯誤的範例。

什麼是量子誤差修正?

量子誤差修正 (QEC) 是一種技術,可讓我們保護量子資訊免於錯誤。 錯誤修正在量子計算機中特別重要,因為有效率的量子演算法會利用對雜訊敏感的大規模量子計算機。

量子誤差修正背後的基本原理是,用來編碼指定資訊量的位數目會增加。 此備援可讓程式代碼偵測並更正錯誤。

量子計算機的錯誤率通常高於傳統計算機的錯誤率,因為與建置和操作系統相關的挑戰。 量子網關中的雜訊、譯碼和不完美可能會導致量子計算發生錯誤。 目前的量子計算機在 1% 到 0.1% 的範圍內有錯誤率。 換句話說,這表示平均每 100 到 1000 個量子閘道作業中有一個會產生錯誤。

量子錯誤的類型

量子錯誤有兩種基本類型:位翻轉和階段翻轉。

當量子位從 $\ket{0}$ 變更為 $\ket{1}$ 或反之亦然時,會發生位翻轉錯誤。 位翻轉錯誤也稱為 $\sigma_x錯誤,因為它們會對應量子位狀態 $\sigma_x$\ket{=\ket{0}{1}$ 和 $\sigma_x 。\ket{{1}=\ket{0}$ 此錯誤類似於傳統位翻轉錯誤。

當量子位變更其階段時,就會發生階段翻轉錯誤。 它們也稱為 $\sigma_z錯誤,因為它們會對應量子位狀態 $\sigma_z=\ket{0}\ket{${0}$ 和 $\sigma_z\ket{{1}= -。\ket{1}$ 這種類型的錯誤沒有傳統類比。

在量子運算中,量子錯誤可以顯示為位翻轉、階段翻轉或兩者的組合。

量子錯誤修正如何運作?

量子錯誤修正碼的運作方式是將量子資訊編碼成一組較大的量子位,稱為 實體量子位。 實體量子位的聯結狀態代表 邏輯量子位

由於量子閘中的譯碼和不完美,實體量子位會受到錯誤。 程式代碼的設計目的是藉由測量程序代碼中的一些量子位來偵測和更正錯誤。

例如,假設您要傳送單一量子位訊息 $\ket{0}$。 您可以使用三個實體量子位來編碼訊息,並傳送 $\ket{000}$,這稱為代碼字。 此錯誤更正程式代碼是 重複程式碼,因為訊息重複了三次。

現在,假設在傳輸期間發生單一位翻轉錯誤,讓收件者收到的是狀態 $\ket{010}$。 在此案例中,收件者可能會推斷預期的訊息為 $\ket{000}$。 不過,如果郵件受限於兩個位翻轉錯誤,收件者可能會推斷不正確的訊息。 最後,如果所有三個位都翻轉,讓原始郵件 $\ket{000}$ 變成 $\ket{111}$,收件者便無法知道發生錯誤。

QEC 程式代碼的程式代碼距離是將一個字碼字變更為另一個字碼的最小錯誤數目,也就是無法偵測的錯誤數目。 程式代碼距離 $d$ 可以定義為

$$d = 2t + 1$$

其中 $t$ 是程式代碼可更正的錯誤數目。 例如,三位程式代碼可以偵測並更正一個位翻轉錯誤,因此 $t = 1$,因此程式代碼距離為 $d = 3$。

請注意,重複程序代碼,例如此範例中使用的三位程序代碼,只能更正位翻轉錯誤,而不是階段翻轉錯誤。 若要更正這兩種類型的錯誤,則需要更複雜的量子錯誤更正碼。

QEC 程式代碼的類型

有許多不同類型的 QEC 程式代碼,各有不同的屬性和優點。 一些常見的 QEC 程式代碼如下:

  • 重複程式代碼: 最簡單的量子錯誤更正碼,其中單一量子位會藉由重複多次編碼成多個量子位。 重複程式代碼可以更正位翻轉錯誤,但無法修正階段翻轉錯誤。

  • Shor 程式代碼: 由 Peter Shor 開發的第一個量子錯誤更正碼。 它會將一個邏輯量子位編碼為九個實體量子位。 Shor 程式代碼可以更正一位翻轉錯誤或一個階段翻轉錯誤,但無法同時更正這兩種類型的錯誤。

  • Steane 程式代碼: 這是七個量子位程序代碼,可以修正位翻轉和階段翻轉錯誤。 它的優點是容錯,這表示錯誤修正程式本身不會造成額外的錯誤。

  • Surface 程式代碼: 這是拓撲錯誤修正碼,使用二維量子位的格狀結構來編碼邏輯量子位。 它具有高誤差修正閾值,並被視為大規模容錯量子運算最有前途的技術之一。 Surface 程式代碼是由 Azure Quantum Resource Estimator 使用。

  • Hastings-Haah 程式代碼: 此量子錯誤修正程式代碼提供比許多政權中 Majorana 量子位上的表面程式代碼更好的時空成本。 針對閘道型指令集,額外負荷較大,因此這種方法的效率會比介面程式代碼低。

範例:三量子位程序代碼

三量子位錯誤修正程式碼是簡單的重複程序代碼,可以偵測並更正一個位翻轉錯誤。 它會將單一邏輯量子位編碼為三個實體量子位,方法是重複量子位三次。

假設您要傳送任意單一量子位 $\ket{\phi}=\alpha\ket{{0} + 。 \beta\ket{1}$ 若要避免錯誤,請將基礎狀態 $\ket{0}$ 編碼為 $\ket{1}$ 三個量子位的聯結狀態。 這兩個邏輯基礎狀態是$\ket{0_L}=\ket{000}$和$\ket{1_L。}=\ket{111}$

因此,單一量子位 $\ket{\phi}=\ket{{0}\alpha+ \beta\ket{1}$ 編碼為:

$$\ket{\phi}{000}\ket{\alpha=_L + \beta\ket{\ket{\alpha{111}=0_L} + 1_L \beta\ket{}$$

讓我們細分三量子位程序代碼的步驟。

準備量子位

首先,您將單一量子位 +\beta\ket{1}$ 編碼為三個量子位$\ket{\phi}=\alpha\ket{{0}的聯合狀態。

接下來,您會在 狀態 $\ket{0}$中準備兩個進一步的量子位。 因此,這三個量子位的全域狀態是 $(\alpha\ket{0}+\beta\ket{1})\ket{0}\ket{0}=\alpha\ket{{000} + 。 \beta\ket{{100}$

最後,您會套用兩個 CNOT 作業,將單一量子位編碼為三個量子位的聯合狀態。 第一個 CNOT 會使用第一個量子位作為控件,並作用於第二個量子位,產生 $\alpha\ket{000} + \beta\ket{110}$。 第二個 CNOT 會使用第一個量子位作為控制權,並作用於第三個量子位。 三個量子位的狀態現在是 $\alpha\ket{000} + \beta\ket{111}$。

傳送量子位

您會傳送這三個量子位。 假設只能發生一位翻轉錯誤,接收的量子位會處於下列其中一種狀態:

州/省 錯誤
$\alpha\ket{000} + \beta\ket{111}$ 沒有錯誤
$\alpha\ket{100} + \beta\ket{011}$ Qubit 1
$\alpha\ket{010} + \beta\ket{101}$ 量子位 2
$\alpha\ket{001} + \beta\ket{110}$ 量子位3

新增輔助量子位

首先,您會引進另外兩個量子位,並準備在 狀態 $\ket{00}$中。 這個輔助組量子位可用來擷取錯誤的資訊,而不需直接測量或取得邏輯狀態的相關信息。

接下來,您會執行四個 CNOT 作業:前兩個作業會使用第一和第二個接收的量子位作為控制權,並處理第一個輔助量子位,最後兩個作業會使用第一個和第三個接收的量子位作為控制權,並處理第二個輔助位。 所有五個量子位的總狀態現在是:

州/省 錯誤
$(\alpha\ket{000} + \beta\ket{111})\ket{00}$ 沒有錯誤
$(\alpha\ket{100} + \beta\ket{011})\ket{11}$ Qubit 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$因此計算狀態的迭加在更正期間會保持不變。