對于錯誤,一般有兩種:
- 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}\) ,并且這個群是封閉的。
那麼需要滿足的兩個條件是什麼呢?
- S裡面的所有的元素都是對易的,即可以交換,S is an abelian subgroup of \(P_n\)
- -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\),這個分為兩方面:
- 對任意的\(|\psi\rangle\)和\(g \in S\)來說,\(g \Pi_{S}|\psi\rangle=\Pi_{S}|\psi\rangle\),也就是\(\Pi_{S}|\psi\rangle \in V_{S}\)。
- 如果\(|\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