量子糾錯碼——Stabilizer codes

夏天喵發表於2020-05-07

對於錯誤,一般有兩種:

  • random: 錯誤以一定的概率發生在每個位元上(對這種問題的研究一般是資訊理論中,通道熵一類的問題)
  • worst case: 錯誤發生在某個位元上,這也是糾錯碼襄陽解決的問題

經典線性碼:

主要是利用了定義在有限域\(\mathbb{F}_{2}\)上的線性代數,\(\mathbb{F}_{2}=\{0,1\}\),然後定義了兩個操作,\(+\)\(\cdot\)

\(\cdot\)和正常的乘法一樣,只有在\(1 \cdot1\)的時候結果為1,其餘都為0,而\(+\)則有一點小不同,因為這是一個封閉的有限域,所以\(1+1\)不等於2而是等於0,計算結果模2。

現在已經有了\(\mathbb{F}_{2}\),每一個位元都是這麼的一個空間,如果我們有n位元,那麼我們的空間就是\(\mathbb{F}_{2}^{n}\),在這個空間上我們可以定義向量。

假定我有了線性獨立向量\(g_1,...,g_k\)我們把寫著稱之為generator of the code,由他們我們可以張成封閉子空間 \(C\)\(C \geq \mathbb{F}_{2}^{n}\),這個空間的中的向量都可以由\(a_1g_1+a_2g_2+...+a_kg_k\)表達,其中\(a_1,...,a_k\)也都屬於\(\mathbb{F}_{2}\),這個空間的維度為k。

這裡我們定義一個矩陣G,他的每一列都由generator \(g_1,...,g_k\)表示,所以這是一個\(n*k\)的矩陣。如果用屬於\(\mathbb{F}_{2}^{k}\)的向量來表示\(a_1,...,a_k\),則上面的式子就可以變成\(Ga\),這相當於是一個對映,把空間\(\mathbb{F}_{2}^{k}\)對映成了\(C\)

這相當於就是一個編碼方法了,把\(\mathbb{F}_{2}^{k}\)空間裡的k位向量,編碼成\(C\)空間裡的n位向量,我們只需要做一個矩陣和向量的乘法即可。

用一個例子來說明一下:

多數碼:我們的碼字空間就是\(C=\{0^n,1^n\}\),用n個0來表示0,n個1來表示1,G就是一個簡單的全1的列向量。

現在來看我們的編碼結果,\(\begin{pmatrix} 1\\1\\...\\1\end{pmatrix}a=\begin{pmatrix} x_1\\x_2\\...\\x_n\end{pmatrix}\)

對於向量x有什麼是要滿足的嗎?

如果我們的編碼計算沒有問題的話,我們的\(x_1=x_2\),\(x_2=x_3\),……,\(x_{n_1}=x_n\),這個永也可以用另一個種方式表達,\(x_1+x_2=0\)因為只有在他們同時為1或者同時為0的時候才會加起來為0。

為此,我們可以定義一個新的矩陣H,\(H= \begin{pmatrix} 1 &1 & 0& ... & 0 \\ 0 & 1 & 1 & ... & 0 \\ ... \\ 0 & 0 & ... & 1& 1 \end{pmatrix}\)只有對角線上兩個1,其他都是0.

有這個矩陣有什麼用呢?

如果我們有了這個矩陣,我們可以用來驗證我們的編碼是不是對的,通過計算\(Hx=0\)如果等於0,那麼我們的編碼就是對的,如果不等於0,那麼我們的編碼就發生了錯誤。

H也就是我們的檢測矩陣 check matrix,如果G是n*k 的矩陣的話,H就是(n-k)*n的矩陣。

我們聊這麼久的線性碼的意義何在?

因為我們可以把H 也就是 check matrix 擴充到量子的領域,也就是我們的Stabilzer code。

經典線性碼,有兩種等價的描述,\(C_{c l}=\operatorname{Im}(G)=\operatorname{ker}(H) \leq \mathbb{F}_{2}^{n}\)

對H來說,C空間裡的任意一個向量都和H的每一個行向量的內積都是0,\(H x=0 \Longleftrightarrow\langle x, h\rangle = 0 \forall h \in \operatorname{Im}(H^{\dagger})\)

從量子的角度來看,我們的量子碼字空間\(C=span\{|x\rangle: x \in C_{cl}\}\)和它對應的check aatrix H。

\(\forall h \in \operatorname{Im}(H^{\dagger})\)我們選擇這麼一個操作\(Z^{h}=Z_{1}^{h_{1}} \ldots Z_{n}^{h_{n}}\)作用在 $|x\rangle $ 上,得到\(Z^{h}|x\rangle=Z_{1}^{h_{1}}\left|x_{1}\right\rangle \otimes \ldots \otimes Z_{n}^{h_{n}}\left|x_{n}\right\rangle=(-1)^{\langle h, x\rangle}|x\rangle\)。因為\(\langle h, x\rangle=0\),所以\(Z^h|x\rangle=|x\rangle\)

也就是說,\(|x\rangle\)\(Z^h\)特徵值為1的特徵向量。

\(C=\left\{|\psi\rangle: Z^{h}|\psi\rangle=|\psi\rangle \forall h \in \operatorname{Im} H\right\}\)這個條件的另一種描述方法就是\(|\psi\rangle\) is stabilized by\(Z^h\)

Stabilizer是什麼?

定義

Stabilizer group(S)是什麼?

簡單來說,stabilizer group(S)就是滿足了以下兩個條件的Pauli群的子群。

Pauli群是什麼?

\(\left\{\omega^{c} X_{j}^{a_{j}} Z_{j}^{b_{j}}\right\}_{j=1, \ldots, N}^{a_{j}, b_{j}, c=0, \ldots, d-1}\)其中 \(w=e^{2\pi i/d}\) ,並且這個群是封閉的。

那麼需要滿足的兩個條件是什麼呢?

  1. S裡面的所有的元素都是對易的,即可以交換,S is an abelian subgroup of \(P_n\)
  2. -I不在S裡面

這兩個條件其實是統一的,可以相互推導,在S裡沒有-I很容易理解,如果有了-I,那麼滿足\(-I |x \rangle = |x\rangle\)\(|x\rangle\)就只有0向量了。

如果在S裡面沒有-I,那麼反對易的元素也不在S裡面,Pauli矩陣要麼是對易要麼反對易,如果它們是反對易的,則存在\(S \ni g h g h=-g h h g=-I\),與第二個要求矛盾。

Stabilizer 子空間

Stabilizer 子空間就是\(V_S=\{|\psi\rangle: g|\psi\rangle=|\psi\rangle, \forall g \in S\}\)

一個stabilizer group(S)就有一個對應的stabilizer subspace,S裡面的任意一個操作作用在這個子空間裡都不會有什麼變化。

例子
  • \(V_{S}=\operatorname{span}\{|00\rangle\}\),對於這個子空間,\(S=\{I I, I Z, Z I, Z Z\}=\langle I Z, Z I\rangle\),之所以後面還劃出來了一個IZ和ZI,那麼是因為II和ZZ可以通過這兩個相乘得到,我們也說, S is generated by IZ,ZI。
  • \(V_{S}=\operatorname{span}\{|000\rangle,|111\rangle\}\)這就是我們先前說的重複編碼,對於這個子空間,他的S就是\(S=\langle Z Z I, I Z Z\rangle\)前面的兩個ZZ保證的是第一個位元和第二個位元是相同的,後面兩個ZZ保證的是第二個位元和第三個位元是相同的。
  • \(V_{S}=\operatorname{span}\{|+++\rangle,|---\rangle\}\)對於這種情況,找他的S也很容易,因為就是一個換基的過程\(S=\langle X X I, I X X\rangle\)
投影運算元

現在我們還可以來描述這個子空間的投影運算元,我們可以先定義一個\(\Pi_{S}\)使得\(\Pi_{S}=\frac{1}{|S|} \sum_{g \in S} g\)

如果\(g \in S\),那麼\(g \Pi_{S}=\Pi_{S}\),證明這一點很容易,因為:

\(g \sum_{h \in S} h=\sum_{h \in S} g h=\sum_{h^{\prime}=g h \in S} h^{\prime}\)

\(g \in S\)同樣也可以匯出\(g^{\dagger} \in S\),因為S是一個封閉可逆的群,那麼我們可以得出麼\(g^{\dagger} \Pi_{S}=\Pi_{S}\),即麼\(\Pi_{S}^{\dagger} \Pi_{S}=\Pi_{S}\)

這說明了\(\Pi_{S}\)是一個投影運算元。

接下來要說明\(\Pi_{S}\)投影的子空間就是我們想要的\(V_S\),這個分為兩方面:

  1. 對任意的\(|\psi\rangle\)\(g \in S\)來說,\(g \Pi_{S}|\psi\rangle=\Pi_{S}|\psi\rangle\),也就是\(\Pi_{S}|\psi\rangle \in V_{S}\)
  2. 如果\(|\psi\rangle \in V_{S}\),則\(\Pi_{S}|\psi\rangle=|\psi\rangle\),即\(V_{S} \subseteq \Pi_{S}\)

綜上,我們可以說,\(\Pi_{S}=\operatorname{Proj}\left(V_{S}\right)\)是子空間上的投影運算元。

我們現在可以來計運算元空間的維度,讓\(|S|=2^{\ell}\),generator \(S=\left\langle s_{1}, \ldots, s_{\ell}\right\rangle\)

子空間的維度說起來簡單,就是所有stabilizer特徵值為1所對應的特徵空間的交集,但是誰知道他們是怎麼相交的呢?還好我們有投影運算元。

我們可以說,\(\operatorname{dim} V_{S}=\operatorname{tr} \Pi_{S}\),這裡的特徵值只有0和1,而trace會把1給累加起來。

\(\operatorname{tr} \Pi_{S}=\frac{1}{|S|} \sum_{g \in S} \operatorname{tr} g=\frac{1}{2^{\ell}} \sum_{g \in S} 2^{n} \delta_{g, I}=2^{n-\ell}\)

只有\(g=I\)的時候trace才有值,其他情況就是普通的Pauli,trace為0,而什麼情況\(g=I\)呢?事實上只有一種情況,那就是所有的a都為0,因為他們是線性獨立的,所以我們子空間的維度是\(2^{n-l}\)

錯誤檢測

回顧我們經典的檢測矩陣H,我們有\(x \in C_{c l} \Longleftrightarrow H x=0\),並不是所有的錯誤我們都能檢測,如果這個錯誤是把一個可能的碼字,變成另一個可能的碼字,那麼H怎麼能知道這個是錯誤而不是一個正確的操作的?

如果錯誤正好是\(H(x+e)=H e=0\),那麼這種錯誤就是不可檢測的錯誤。

量子版本的stabilizer code也是如此。

那麼,哪些錯誤是不能檢測的呢?

那就是如果我犯了這個錯誤,但是我依舊在這組stabilizer的子空間裡,這種錯誤就是不可檢測的,因為我分不出來這究竟是錯誤還是操作。

假設\(|\psi\rangle \in V_{S}\)\(E \in P_{n}\),則:\(E|\psi\rangle \in V_{S} \quad \Leftrightarrow \quad g E|\psi\rangle=E|\psi\rangle \forall g \in S\)

\(g E|\psi\rangle=E|\psi\rangle\)意味著\(g E|\psi\rangle=Eg|\psi\rangle\),則Eg和gE是相等的,E和g對易。

如果我們的錯誤和我們的stabilizer對易,那麼這種錯誤就是我們不能檢測出來的錯誤。

問題接下來就變成了,如何判斷Pauli運算元是否對易。

首先,所有的Pauli都可以寫成\(p=(-1)^{a} X^{b} Z^{c}\)的形式,對於\(a \in \mathbb{F}_{2}, b, c \in \mathbb{F}_{2}^{n}\)

那麼假定我們有另一個Pauli \(q=(-1)^{a^{\prime}} X^{b^{\prime}} Z^{c^{\prime}}\)

\(p q=(-1)^{a+a^{\prime}} X^{b} Z^{c} X^{b^{\prime}} Z^{c^{\prime}}\)

對於中間的\(Z^{c} X^{b^{\prime}}=Z_{1}^{c_{1}} \cdots Z_{n}^{c_{n}} X_{1}^{b_{1}^{\prime}} \cdots X_{n}^{b_{n}^{\prime}}=X^{b^{\prime}} Z^{c}(-1)^{\left\langle b^{\prime}, c\right\rangle}\),即,如果Z和X在這一位上都有,那麼就會有一個-1.

那麼現在pq就變成了,\(p q=(-1)^{a+a^{\prime}+\left\langle b^{\prime}, c\right\rangle} X^{b+b^{\prime}} Z^{c+c^{\prime}}\)

同理,qp可以寫成\(q p=(-1)^{a+a^{\prime}+\left\langle b, c^{\prime}\right\rangle} X^{b+b^{\prime}} Z^{c+c^{\prime}}\)

很容易發現,\(p q=(-1)^{\left\langle c, b^{\prime}\right\rangle+\left\langle b, c^{\prime}\right\rangle} q p\),如果-1上面的指數是0,那麼他們就對易,反之,如果上面的指數是1,那麼他們就反對易。

而這個,我們又可以寫成這樣的形式\(\left\langle c, b^{\prime}\right\rangle+\left\langle b, c^{\prime}\right\rangle=\left(\begin{array}{ll}b^{T} & c^{T}\end{array}\right)\left(\begin{array}{cc}0_{n} & I_{n} \\ I_{n} & 0_{n}\end{array}\right)\left(\begin{array}{l}b^{\prime} \\ c^{\prime}\end{array}\right)=\left(\begin{array}{ll}b^{T} & c^{T}\end{array}\right) \Lambda\left(\begin{array}{l}b^{\prime} \\ c^{\prime}\end{array}\right)\)

所以泡利矩陣是否對易的關鍵記載於看\((b c)\)\((b' c')\)之間是否垂直了,這裡垂直的頂i的是定義是symplectic inner product

相關文章