五、量子纠错编码
1.编码的背景
前面我们讲述了量子密钥分配、量子高密度编码、量子隐形传态等概念及其相关内容,它们都需要传送 qubit 信息,或者需要共同拥有纠缠状态,因此我们需要无失真传送 qubit 信息的量子信道。但是现实中在量子信道上和量子存储设备中,由于各种噪声和量子自身的相干性,极易引发量子信息出错。为了克服由此引发的信息出错,量子信息学引入了经典信息学中的信道编码体系,即通过构造信息状态的自身重复、增加冗余方法达到系统能够自动纠正出错信息的目的,确保信息无误。
2.经典纠错编码
首先我们先了解一下经典纠错码的重复码。对于传送比特的信道,在信道中传输时会以一定的概率出现比特错误,比如将比特 1 翻转为 0 ,或将比特 0 翻转为 1 。为了提高传送信息的可信度,我们通过在传送 1 bit 信息时将要传送的信息重复 3 次再发出去(信道编码),也就是按照下面的方式发送信息:
要发送的信息 | 送往信道的 bit 列 |
---|---|
0 | 000 |
1 | 111 |
接收者在接收到信道的信息后,必须判断接收的信息是 0 还是 1 ,这个时候只需要数一下接收到的信息中 0 和 1 出现的次数,并采用多数决定法解码,即次数多的一方决定该信息是什么。例如若收到的信息为 {000,001,010,100} 中的某一个,我们就判断该信息为 0 ,若收到的信息属于 {011,101,110,111},则判定该信息为 1 。通过这种方式可以极大的降低信息传送过程中发生错误的概率。
3.解决bit反转错误的信道编码
在量子信道中最容易发生的错误是 bit 反转错误,即一个量子比特 ∣ 0 ⟩ |0\rangle ∣0⟩ 在信道传输后变成了 ∣ 1 ⟩ |1\rangle ∣1⟩。与经典的纠错码一样,作为最单纯的编码,考虑将 1 qubit 用 3 qubit 列编码,也就是用以下的方式编码:
qubit | 编码 |
---|---|
∣ 0 ⟩ \vert0\rangle ∣0⟩ | ∣ 0 ⟩ ∣ 0 ⟩ ∣ 0 ⟩ = ∣ 000 ⟩ \vert0\rangle\vert0\rangle\vert0\rangle=\vert000\rangle ∣0⟩∣0⟩∣0⟩=∣000⟩ |
∣ 1 ⟩ \vert1\rangle ∣1⟩ | ∣ 1 ⟩ ∣ 1 ⟩ ∣ 1 ⟩ = ∣ 111 ⟩ \vert1\rangle\vert1\rangle\vert1\rangle=\vert111\rangle ∣1⟩∣1⟩∣1⟩=∣111⟩ |
并且设编码保持线性,即
∣
φ
⟩
=
α
∣
0
⟩
+
β
∣
1
⟩
|\varphi\rangle=\alpha|0\rangle+\beta|1\rangle
∣φ⟩=α∣0⟩+β∣1⟩ 编码后的形式为
∣
φ
⟩
=
α
∣
000
⟩
+
β
∣
111
⟩
|\varphi\rangle=\alpha|000\rangle+\beta|111\rangle
∣φ⟩=α∣000⟩+β∣111⟩ 实际的编码器如下图所示:
通过该编码器我们可以发现当输入的状态是
∣
0
⟩
|0\rangle
∣0⟩ 时,输出
∣
000
⟩
|000\rangle
∣000⟩ ;若输入状态为
∣
1
⟩
|1\rangle
∣1⟩ ,输出
∣
111
⟩
|111\rangle
∣111⟩。
接收者收到的 qubit 列是以量子状态叠加的方式来表述的: ∣ x 1 x 2 x 3 ⟩ |x_1x_2x_3\rangle ∣x1x2x3⟩ ,我们可以测出 x 1 、 x 2 、 x 3 x_1、x_2、x_3 x1、x2、x3 中 0 或 1 出现的个数,根据以下的方式进行解码:
接收到的消息 | 解码结果 |
---|---|
∣ 000 ⟩ ∣ 001 ⟩ ∣ 010 ⟩ ∣ 100 ⟩ \begin{matrix}\vert000\rangle \\ \vert001\rangle\\\vert010\rangle\\\vert100\rangle\end{matrix} ∣000⟩∣001⟩∣010⟩∣100⟩ | ∣ 000 ⟩ \vert000\rangle ∣000⟩ |
∣ 110 ⟩ ∣ 101 ⟩ ∣ 110 ⟩ ∣ 111 ⟩ \begin{matrix}\vert110\rangle \\ \vert101\rangle\\\vert110\rangle\\\vert111\rangle\end{matrix} ∣110⟩∣101⟩∣110⟩∣111⟩ | ∣ 111 ⟩ \vert111\rangle ∣111⟩ |
解码操作是线性的,也就是说如果
∣
φ
⟩
|\varphi\rangle
∣φ⟩ 解码为
D
∣
φ
⟩
D|\varphi\rangle
D∣φ⟩ ,
∣
φ
′
⟩
|\varphi'\rangle
∣φ′⟩ 解码成
D
∣
φ
′
⟩
D|\varphi'\rangle
D∣φ′⟩ 那么叠加状态
α
∣
φ
⟩
+
β
∣
φ
′
⟩
\alpha|\varphi\rangle+\beta|\varphi'\rangle
α∣φ⟩+β∣φ′⟩ 的解码就转变成由
D
∣
φ
⟩
D|\varphi\rangle
D∣φ⟩ 和
D
∣
φ
′
⟩
D|\varphi'\rangle
D∣φ′⟩ 决定的叠加状态表示,即
D
(
α
∣
φ
⟩
+
β
∣
φ
′
⟩
)
=
α
D
∣
φ
⟩
+
β
D
∣
φ
′
⟩
D(\alpha|\varphi\rangle+\beta|\varphi'\rangle)=\alpha D|\varphi\rangle+\beta D|\varphi'\rangle
D(α∣φ⟩+β∣φ′⟩)=αD∣φ⟩+βD∣φ′⟩
例如,对于 qubit
∣
φ
⟩
=
α
∣
0
⟩
+
β
∣
1
⟩
|\varphi\rangle=\alpha|0\rangle+\beta|1\rangle
∣φ⟩=α∣0⟩+β∣1⟩ ,我们先对它按上图进行编码,可以得到量子比特列
α
∣
000
⟩
+
β
∣
111
⟩
\alpha|000\rangle+\beta|111\rangle
α∣000⟩+β∣111⟩ ,将该量子比特列在信道中传输。假设在信道中第二个 qubit 发生了 bit 反转错误,即接受端收到的量子比特列为
α
∣
010
⟩
+
β
∣
101
⟩
\alpha|010\rangle+\beta|101\rangle
α∣010⟩+β∣101⟩ 。这时我们通过解码可以得到
D
(
α
∣
010
⟩
+
β
∣
101
⟩
)
=
α
(
D
∣
010
⟩
)
+
β
(
D
∣
101
⟩
)
=
α
∣
000
⟩
+
β
∣
111
⟩
\begin{aligned} D(\alpha|010\rangle+\beta|101\rangle) &=\alpha(D|010\rangle)+\beta(D|101\rangle) \\ &=\alpha|000\rangle+\beta|111\rangle \end{aligned}
D(α∣010⟩+β∣101⟩)=α(D∣010⟩)+β(D∣101⟩)=α∣000⟩+β∣111⟩ 可以看到通过 D 变换我们就可以得到经过纠正的正确的信道信息。
实际的 D 解码器如下图所示:
-
首先假设量子信道不失真,接收到的信息与发送的信息完全相等,接收的信息添加 2 位 qubit 辅助信息后状态如下:
( α ∣ 000 ⟩ + β ∣ 111 ⟩ ) ∣ 00 ⟩ = α ∣ 00000 ⟩ + β ∣ 11100 ⟩ (\alpha|000\rangle+\beta|111\rangle)|00\rangle=\alpha|00000\rangle+\beta|11100\rangle (α∣000⟩+β∣111⟩)∣00⟩=α∣00000⟩+β∣11100⟩将上面的状态依次通过 D 解码器的 4 个控制非门,其状态将顺序发生如下变化:
通过第几个 通过后的状态 通过第一个控制非门后 α ∣ 00000 ⟩ + β ∣ 11110 ⟩ \alpha\vert00000\rangle+\beta\vert11110\rangle α∣00000⟩+β∣11110⟩ 通过第二个控制非门后 α ∣ 00000 ⟩ + β ∣ 11100 ⟩ \alpha\vert00000\rangle+\beta\vert11100\rangle α∣00000⟩+β∣11100⟩ 通过第三个控制非门后 α ∣ 00000 ⟩ + β ∣ 11101 ⟩ \alpha\vert00000\rangle+\beta\vert11101\rangle α∣00000⟩+β∣11101⟩ 通过第四个控制非门后 α ∣ 00000 ⟩ + β ∣ 11100 ⟩ \alpha\vert00000\rangle+\beta\vert11100\rangle α∣00000⟩+β∣11100⟩ 最后的状态 α ∣ 00000 ⟩ + β ∣ 11100 ⟩ \alpha\vert00000\rangle+\beta\vert11100\rangle α∣00000⟩+β∣11100⟩ 对应于上图中 D 解码器的点线状态,若以状态的最后 2 位 qubit 以 { ∣ 00 ⟩ 、 ∣ 01 ⟩ 、 ∣ 10 ⟩ 、 ∣ 11 ⟩ } \{|00\rangle、|01\rangle、|10\rangle、|11\rangle \} {∣00⟩、∣01⟩、∣10⟩、∣11⟩} 为基底进行测量,以概率 ∣ α ∣ 2 + ∣ β ∣ 2 = 1 |\alpha|^2+|\beta|^2=1 ∣α∣2+∣β∣2=1 获得 ∣ 00 ⟩ |00\rangle ∣00⟩ 。
-
如果信息在传送过程中发生了失真,即若接收到的信息变成了 α ∣ 100 ⟩ + β ∣ 011 ⟩ \alpha|100\rangle+\beta|011\rangle α∣100⟩+β∣011⟩ ,再加上 2 位 qubit 辅助信息,其状态变为
( α ∣ 100 ⟩ + β ∣ 011 ⟩ ) ∣ 00 ⟩ = α ∣ 10000 ⟩ + β ∣ 01100 ⟩ (\alpha|100\rangle+\beta|011\rangle)|00\rangle=\alpha|10000\rangle+\beta|01100\rangle (α∣100⟩+β∣011⟩)∣00⟩=α∣10000⟩+β∣01100⟩经过解码器的状态变换过程为:
通过第几个 通过后的状态 通过第一个控制非门后 α ∣ 10010 ⟩ + β ∣ 01100 ⟩ \alpha\vert10010\rangle+\beta\vert01100\rangle α∣10010⟩+β∣01100⟩ 通过第二个控制非门后 α ∣ 10010 ⟩ + β ∣ 01110 ⟩ \alpha\vert10010\rangle+\beta\vert01110\rangle α∣10010⟩+β∣01110⟩ 通过第三个控制非门后 α ∣ 10010 ⟩ + β ∣ 01111 ⟩ \alpha\vert10010\rangle+\beta\vert01111\rangle α∣10010⟩+β∣01111⟩ 通过第四个控制非门后 α ∣ 10010 ⟩ + β ∣ 01110 ⟩ \alpha\vert10010\rangle+\beta\vert01110\rangle α∣10010⟩+β∣01110⟩ 对后两位进行测量,以概率 ∣ α ∣ 2 + ∣ β ∣ 2 = 1 |\alpha|^2+|\beta|^2=1 ∣α∣2+∣β∣2=1 获得 ∣ 10 ⟩ |10\rangle ∣10⟩。以同样的方式对发生在其他位置的 bit 反转错误的状态进行变换,会发现如下的规律:
对后两位的测定结果 错误的位置 ∣ 00 ⟩ \vert00\rangle ∣00⟩ 没有发生错误 ∣ 10 ⟩ \vert10\rangle ∣10⟩ 第一位 ∣ 11 ⟩ \vert11\rangle ∣11⟩ 第二位 ∣ 01 ⟩ \vert01\rangle ∣01⟩ 第三位 -
这样我们就知道当错误发生在不同的位置,其测定的结果就完全不一样,对于接收者,我们可以根据测出的结果在相应的 qubit 位上实施 bit 反转 X - Gate 演算就能够纠正错误。
4.解决位相翻转错误的信道编码
在量子比特的信道传输中还有可能发生位相反转错误,即发送端发送的信息 ∣ φ ⟩ = α ∣ 0 ⟩ + β ∣ 1 ⟩ |\varphi\rangle=\alpha|0\rangle+\beta|1\rangle ∣φ⟩=α∣0⟩+β∣1⟩ ,在接收端变成了 ∣ φ ′ ⟩ = α ∣ 0 ⟩ − β ∣ 1 ⟩ |\varphi'\rangle=\alpha|0\rangle-\beta|1\rangle ∣φ′⟩=α∣0⟩−β∣1⟩ ,那么只用前面的编码和解码方式是不行的,下面我们来讨论针对这种错误的编码方式。
在讲述量子逻辑门时我们有一个 Hadamard 变换,即通过酉矩阵对量子的状态做变换,这个酉矩阵为:
H
=
1
2
[
1
1
1
−
1
]
H=\frac{1}{\sqrt{2}} \left[ \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix} \right]
H=21[111−1]
显然下面的等式成立:
H
∗
H
=
H
2
=
1
2
[
1
1
1
−
1
]
[
1
1
1
−
1
]
=
[
1
0
0
1
]
H*H=H^2=\frac{1}{2} \left[ \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix} \right] \left[ \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix} \right]=\left[ \begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix} \right]
H∗H=H2=21[111−1][111−1]=[1001]
也就是对一个量子状态连续做两次 H - Gate 变换,实际就是一次恒等变换。
而对于一个发生了位相反转的量子状态
∣
φ
⟩
|\varphi\rangle
∣φ⟩,我们可以用 Z - Gate 表示为
Z
∣
φ
⟩
=
[
1
0
0
−
1
]
∣
φ
⟩
Z|\varphi\rangle=\left[ \begin{matrix} 1 & 0 \\ 0 & -1 \end{matrix} \right]|\varphi\rangle
Z∣φ⟩=[100−1]∣φ⟩
如果我对一个 Z - Gate 进行如下的两次 H - Gate 变换
H
Z
H
=
1
2
[
1
1
1
−
1
]
[
1
0
0
−
1
]
[
1
1
1
−
1
]
=
[
0
1
1
0
]
=
X
HZH=\frac{1}{2}\left[ \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix} \right] \left[ \begin{matrix} 1 & 0 \\ 0 & -1 \end{matrix} \right] \left[ \begin{matrix} 1 & 1 \\ 1 & -1 \end{matrix} \right]= \left[ \begin{matrix} 0 & 1 \\ 1 & 0 \end{matrix} \right]=X
HZH=21[111−1][100−1][111−1]=[0110]=X
可以看到该 Z - Gate 就变成了 X - Gate ,如果将这种变换应用到量子比特上,就将位相翻转的错误变换成了 bit 翻转错误。
通过上面的讨论,我们可以设计一种这样的编码方式,
-
对要传送的 qubit ∣ φ ⟩ |\varphi\rangle ∣φ⟩ 先进行 H - Gate 变换为 H ∣ φ ⟩ H|\varphi\rangle H∣φ⟩ ,将变换后的消息在量子信道上传输,在信道上会发生以下两种情况:
是否发生位相翻转错误 传输后的状态 发生了位相翻转 Z H ∣ φ ⟩ ZH\vert\varphi\rangle ZH∣φ⟩ 没有发生位相翻转 H ∣ φ ⟩ H\vert\varphi\rangle H∣φ⟩ -
只考虑位相翻转时,在接收端得到的可能结果就是上面两种情况,接收方对接收到的 qubit 再进行 H - Gate 变换会得到下面两种情况
是否发生位相翻转错误 再次变换后的状态 发生了位相翻转 H Z H ∣ φ ⟩ = X ∣ φ ⟩ HZH\vert\varphi\rangle=X\vert\varphi\rangle HZH∣φ⟩=X∣φ⟩ 没有发生位相翻转 H H ∣ φ ⟩ = ∣ φ ⟩ HH\vert\varphi\rangle=\vert\varphi\rangle HH∣φ⟩=∣φ⟩
至此我们发现,如果只考虑位相翻转错误,我们通过上面的两步变换,可以得到两种状态 X ∣ φ ⟩ X\vert\varphi\rangle X∣φ⟩ 和 ∣ φ ⟩ \vert\varphi\rangle ∣φ⟩ ,通过这种变换,我们就将发生的位相翻转错误转换成了 bit 反转错误。这时我们可以用上面解决 bit 反转错误的编码方式来解决位相反转的错误。具体的操作如下。
- 在发送端设置如下的编码器
- 在接收端做如下的解码回路
例如,我们要传送的 qubit 为
α
∣
0
⟩
+
β
∣
1
⟩
\alpha|0\rangle+\beta|1\rangle
α∣0⟩+β∣1⟩,在发送端首先编码为
α
∣
+
+
+
⟩
+
β
∣
−
−
−
⟩
\alpha|+++\rangle+\beta|---\rangle
α∣+++⟩+β∣−−−⟩ ,然后将其在信道中传输。我们假设第 2 个 qubit 上发生位相翻转错误,因为:
Z
∣
+
⟩
=
[
1
0
0
−
1
]
[
1
2
1
2
]
=
∣
−
⟩
Z
∣
−
⟩
=
[
1
0
0
−
1
]
[
1
2
−
1
2
]
=
∣
+
⟩
Z|+\rangle= \left[ \begin{matrix} 1 & 0 \\ 0 & -1 \end{matrix} \right] \left[ \begin{matrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{matrix} \right] =|-\rangle\ \ \ \ Z|-\rangle =\left[ \begin{matrix} 1 & 0 \\ 0 & -1 \end{matrix} \right] \left[ \begin{matrix} \frac{1}{\sqrt{2}} \\ \frac{-1}{\sqrt{2}} \end{matrix} \right] =|+\rangle
Z∣+⟩=[100−1][2121]=∣−⟩ Z∣−⟩=[100−1][212−1]=∣+⟩
所以收到的 qubit 列为
α
∣
+
−
+
⟩
+
β
∣
−
+
−
⟩
\alpha|+-+\rangle+\beta|-+-\rangle
α∣+−+⟩+β∣−+−⟩ ,再对其做 Hadamard 变换:
H
∣
+
⟩
=
H
(
H
∣
0
⟩
)
=
∣
0
⟩
H|+\rangle=H(H|0\rangle)=|0\rangle
H∣+⟩=H(H∣0⟩)=∣0⟩
H ∣ − ⟩ = H ( H ∣ 1 ⟩ ) = ∣ 1 ⟩ H|-\rangle=H(H|1\rangle)=|1\rangle H∣−⟩=H(H∣1⟩)=∣1⟩
收到的信息变换为
α
∣
010
⟩
+
β
∣
101
⟩
\alpha|010\rangle+\beta|101\rangle
α∣010⟩+β∣101⟩ ,再用上面的 bit 反转 D 解码器:
D
(
α
∣
010
⟩
+
β
∣
101
⟩
)
=
>
α
∣
000
⟩
+
β
∣
111
⟩
D(\alpha|010\rangle+\beta|101\rangle)=>\alpha|000\rangle+\beta|111\rangle
D(α∣010⟩+β∣101⟩)=>α∣000⟩+β∣111⟩
所以得知发送的 qubit 消息为 α ∣ 0 ⟩ + β ∣ 1 ⟩ \alpha|0\rangle+\beta|1\rangle α∣0⟩+β∣1⟩ 。
5.一般性的量子纠错编码
前面我们讨论的都是针对在信道中只发生一种错误的编码方案。这里我们讨论一下对于 bit 反转错误、位相反转错误 和 bit 反转与位相反转同时发生 这三种情况中任意一种发生时的纠错编码方案。
首先假设 X 为 bit 反转演算、Z 为位相翻转演算,那么 bit 反转和位相反转同时发生时会有两种情况:
X
Z
=
[
0
1
1
0
]
[
1
0
0
−
1
]
=
[
0
−
1
1
0
]
XZ=\left[ \begin{matrix} 0 & 1 \\ 1 & 0 \end{matrix} \right] \left[ \begin{matrix} 1 & 0 \\ 0 & -1 \end{matrix} \right]= \left[ \begin{matrix} 0 & -1 \\ 1 & 0 \end{matrix} \right]
XZ=[0110][100−1]=[01−10]
Z X = [ 1 0 0 − 1 ] [ 0 1 1 0 ] = [ 0 1 − 1 0 ] ZX= \left[ \begin{matrix} 1 & 0 \\ 0 & -1 \end{matrix}\right] \left[ \begin{matrix} 0 & 1 \\ 1 & 0 \end{matrix} \right]= \left[ \begin{matrix} 0 & 1 \\ -1 & 0 \end{matrix} \right] ZX=[100−1][0110]=[0−110]
这里显然有 X Z = − Z X XZ=-ZX XZ=−ZX,而 qubit 与其定数倍被认为是同一状态,因此用以上的两种演算作用在同一 qubit 上会得到同一结果状态。这里我们选择 X Z XZ XZ 作为 bit 反转和位相反转同时发生时的演算。
下面我们讨论对任何一个 qubit 位出现 X , Z X , Z X,Z 或 X Z XZ XZ 演算中的任何一种错误时,实现纠错编码的方法。
Shor提出一种被称为 Shor 编码 的方法,它是一种 3 位 qubit 的 bit 反转纠错编码与位相翻转编码的组合编码。具体的编码方式如下:
-
首先将 qubit 进行 bit 反转纠错编码,得到
∣ 0 ⟩ = > ∣ 000 ⟩ |0\rangle => |000\rangle ∣0⟩=>∣000⟩ ∣ 1 ⟩ = > ∣ 111 ⟩ |1\rangle => |111\rangle ∣1⟩=>∣111⟩ -
再将 qubit 按照位相翻转编码方法进行编码
状态 ∣ 0 ⟩ |0\rangle ∣0⟩编码得到 ∣ + + + ⟩ |+++\rangle ∣+++⟩:
( ∣ 0 ⟩ + ∣ 1 ⟩ 2 ) ( ∣ 0 ⟩ + ∣ 1 ⟩ 2 ) ( ∣ 0 ⟩ + ∣ 1 ⟩ 2 ) (\frac{|0\rangle+|1\rangle}{\sqrt{2}}) (\frac{|0\rangle+|1\rangle}{\sqrt{2}}) (\frac{|0\rangle+|1\rangle}{\sqrt{2}}) (2∣0⟩+∣1⟩)(2∣0⟩+∣1⟩)(2∣0⟩+∣1⟩)
状态 ∣ 1 ⟩ |1\rangle ∣1⟩编码得到 ∣ − − − ⟩ |---\rangle ∣−−−⟩:
( ∣ 0 ⟩ − ∣ 1 ⟩ 2 ) ( ∣ 0 ⟩ − ∣ 1 ⟩ 2 ) ( ∣ 0 ⟩ − ∣ 1 ⟩ 2 ) (\frac{|0\rangle-|1\rangle}{\sqrt{2}}) (\frac{|0\rangle-|1\rangle}{\sqrt{2}}) (\frac{|0\rangle-|1\rangle}{\sqrt{2}}) (2∣0⟩−∣1⟩)(2∣0⟩−∣1⟩)(2∣0⟩−∣1⟩) -
然后再对每一个 qubit 进行 bit 反转纠错编码,得到
状态 ∣ + ⟩ = ( ∣ 0 ⟩ + ∣ 1 ⟩ 2 ) |+\rangle=(\frac{|0\rangle+|1\rangle}{\sqrt{2}}) ∣+⟩=(2∣0⟩+∣1⟩)编码得到 ∣ 000 ⟩ + ∣ 111 ⟩ 2 \frac{|000\rangle+|111\rangle}{\sqrt{2}} 2∣000⟩+∣111⟩
状态 ∣ − ⟩ = ( ∣ 0 ⟩ − ∣ 1 ⟩ 2 ) |-\rangle=(\frac{|0\rangle-|1\rangle}{\sqrt{2}}) ∣−⟩=(2∣0⟩−∣1⟩)编码得到 ∣ 000 ⟩ − ∣ 111 ⟩ 2 \frac{|000\rangle-|111\rangle}{\sqrt{2}} 2∣000⟩−∣111⟩
将上面的两种编码组合起来,就可以得到 Shor 编码,即
状态 ∣ 0 ⟩ |0\rangle ∣0⟩编码得到:
( ∣ 000 ⟩ + ∣ 111 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) 2 2 \frac{(|000\rangle+|111\rangle)(|000\rangle+|111\rangle)(|000\rangle+|111\rangle)}{2\sqrt{2}} 22(∣000⟩+∣111⟩)(∣000⟩+∣111⟩)(∣000⟩+∣111⟩)状态 ∣ 1 ⟩ |1\rangle ∣1⟩编码得到:
( ∣ 000 ⟩ − ∣ 111 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) 2 2 \frac{(|000\rangle-|111\rangle)(|000\rangle-|111\rangle)(|000\rangle-|111\rangle)}{2\sqrt{2}} 22(∣000⟩−∣111⟩)(∣000⟩−∣111⟩)(∣000⟩−∣111⟩)
实际的 Shor 编码的编码和解码器如下图所示:
下面我们假设在信道上传输通过 Shor 编码的量子信息,当一个 bit 反转错误和一个位相翻转错误同时发生时我们怎么进行订正。例如要发送信息的状态为 ∣ φ ⟩ = α ∣ 0 ⟩ + β ∣ 1 ⟩ |\varphi\rangle=\alpha|0\rangle + \beta|1\rangle ∣φ⟩=α∣0⟩+β∣1⟩ 。
-
先将状态转换为 Shor 编码
∣ φ ⟩ = α ( ∣ 000 ⟩ + ∣ 111 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) 2 2 + β ( ∣ 000 ⟩ − ∣ 111 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) 2 2 \begin{aligned} |\varphi\rangle &=\frac{\alpha(|000\rangle+|111\rangle)(|000\rangle+|111\rangle)(|000\rangle+|111\rangle)}{2\sqrt{2}} \\ & +\frac{\beta(|000\rangle-|111\rangle)(|000\rangle-|111\rangle)(|000\rangle-|111\rangle)}{2\sqrt{2}} \end{aligned} ∣φ⟩=22α(∣000⟩+∣111⟩)(∣000⟩+∣111⟩)(∣000⟩+∣111⟩)+22β(∣000⟩−∣111⟩)(∣000⟩−∣111⟩)(∣000⟩−∣111⟩) -
将其在量子信道中传输,假设第 1 位 qubit 发生 bit 反转、第 7 位发生位相反转,则接收者收到如下状态的比特列
∣ φ ′ ⟩ = α ( ∣ 100 ⟩ + ∣ 011 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) 2 2 + β ( ∣ 100 ⟩ − ∣ 011 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) 2 2 \begin{aligned} |\varphi'\rangle &=\frac{\alpha(|100\rangle+|011\rangle)(|000\rangle+|111\rangle)(|000\rangle-|111\rangle)}{2\sqrt{2}} \\ &+\frac{\beta(|100\rangle-|011\rangle)(|000\rangle-|111\rangle)(|000\rangle+|111\rangle)}{2\sqrt{2}} \end{aligned} ∣φ′⟩=22α(∣100⟩+∣011⟩)(∣000⟩+∣111⟩)(∣000⟩−∣111⟩)+22β(∣100⟩−∣011⟩)(∣000⟩−∣111⟩)(∣000⟩+∣111⟩) -
首先考虑第 1 位到第 3 位 qubit 的处理,把它们视为三位 qubit 的 bit 纠缠码,利用解码器 D 进行解码可以得到
D ( ∣ φ ⟩ 1 − 3 ′ ) = D ( α ( ∣ 100 ⟩ + ∣ 011 ⟩ ) 2 + β ( ∣ 100 ⟩ − ∣ 011 ⟩ ) 2 ) = α ( ∣ 000 ⟩ + ∣ 111 ⟩ ) 2 + β ( ∣ 000 ⟩ − ∣ 111 ⟩ ) 2 \begin{aligned} D(|\varphi\rangle'_{1-3}) & =D(\frac{\alpha(|100\rangle+|011\rangle)}{\sqrt{2}}+ \frac{\beta(|100\rangle-|011\rangle)}{\sqrt{2}}) \\ & =\frac{\alpha(|000\rangle+|111\rangle)}{\sqrt{2}}+ \frac{\beta(|000\rangle-|111\rangle)}{\sqrt{2}} \end{aligned} D(∣φ⟩1−3′)=D(2α(∣100⟩+∣011⟩)+2β(∣100⟩−∣011⟩))=2α(∣000⟩+∣111⟩)+2β(∣000⟩−∣111⟩)此时整体的状态变为
∣ φ ′ ′ ⟩ = α ( ∣ 000 ⟩ + ∣ 111 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) 2 2 + β ( ∣ 000 ⟩ − ∣ 111 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) 2 2 \begin{aligned} |\varphi''\rangle & = \frac{\alpha(|000\rangle+|111\rangle)(|000\rangle+|111\rangle)(|000\rangle-|111\rangle)}{2\sqrt{2}} \\ &+\frac{\beta(|000\rangle-|111\rangle)(|000\rangle-|111\rangle)(|000\rangle+|111\rangle)}{2\sqrt{2}} \end{aligned} ∣φ′′⟩=22α(∣000⟩+∣111⟩)(∣000⟩+∣111⟩)(∣000⟩−∣111⟩)+22β(∣000⟩−∣111⟩)(∣000⟩−∣111⟩)(∣000⟩+∣111⟩)可以发现已经纠正了第 1 位 qubit 发生的 bit 反转错误。同理,如果在第 4 位到第 6 位的 qubit 或者在第 7 位到第 9 位的 qubit 中发生了 bit 反转,我们同样可以用这种方法来纠正错误。
-
为了纠正第 7 位的位相反转错误,我们从上面的状态中取出第 1 位、第 4 位和第 7 位三位 qubit 状态,如下所示:
α ( ∣ 0 ⟩ + ∣ 1 ⟩ ) ( ∣ 0 ⟩ + ∣ 1 ⟩ ) ( ∣ 0 ⟩ − ∣ 1 ⟩ ) 2 2 + β ( ∣ 0 ⟩ − ∣ 1 ⟩ ) ( ∣ 0 ⟩ − ∣ 1 ⟩ ) ( ∣ 0 ⟩ + ∣ 1 ⟩ ) 2 2 \frac{\alpha(|0\rangle+|1\rangle)(|0\rangle+|1\rangle)(|0\rangle-|1\rangle)}{2\sqrt{2}}+ \beta\frac{(|0\rangle-|1\rangle)(|0\rangle-|1\rangle)(|0\rangle+|1\rangle)}{2\sqrt{2}} 22α(∣0⟩+∣1⟩)(∣0⟩+∣1⟩)(∣0⟩−∣1⟩)+β22(∣0⟩−∣1⟩)(∣0⟩−∣1⟩)(∣0⟩+∣1⟩)对此状态用状态 ∣ + ⟩ |+\rangle ∣+⟩ 和 ∣ − ⟩ |-\rangle ∣−⟩ 表示可以写成
α ∣ + + − ⟩ + β ∣ − − + ⟩ \alpha|++-\rangle+\beta|--+\rangle α∣++−⟩+β∣−−+⟩该状态可以看成是状态 α ∣ 0 ⟩ + β ∣ 1 ⟩ \alpha|0\rangle+\beta|1\rangle α∣0⟩+β∣1⟩ 经过位相翻转编码器编码后在信道中传输,之后发生了位相翻转错误。现在我们将这三位使用位相翻转解码器进行纠错,即可纠正该错误。从而得到最终结果
α ∣ 000 ⟩ + β ∣ 111 ⟩ \alpha|000\rangle+\beta|111\rangle α∣000⟩+β∣111⟩从结果状态中取出任意一位 qubit 就能恢复发送信息的原始状态 α ∣ 0 ⟩ + β ∣ 1 ⟩ \alpha|0\rangle+\beta|1\rangle α∣0⟩+β∣1⟩ 。
证明表明,利用 Shor 编码能够订正 qubit 列中至多一位发生的任意量子错误。
6.无需测定的解码回路
前面我们讲述了利用 Controlled-NOT-Gate 演算和测量的方法来进行 bit 反转错误的纠正,这样我们不仅需要量子回路,还需要测量和对错误 qubit 位进行反转操作,所以仅仅使用量子演算的机理是不能构成解码器的。下面将讲述仅仅利用量子回路或者量子门电路,不用进行测量就可以进行解码的方法。
首先我们对 Controlled-NOT-Gate 演算更一般化,改进为 “控制 · 控制非门”(Controlled·Controlled-NOT-Gate)。“控制 · 控制非门” 的意思就是用两位控制一位,也就是 3 输入和 3 输出的量子演算,其量子逻辑回路如下所示:
“控制 · 控制非门” 的量子演算为:
∣
x
1
x
2
x
3
⟩
=
>
∣
x
1
x
2
(
(
x
1
A
N
D
x
2
)
⊕
x
3
)
⟩
|x_1x_2x_3\rangle=>|\ x_1x_2((x_1\ AND \ x_2)\oplus x_3)\ \rangle
∣x1x2x3⟩=>∣ x1x2((x1 AND x2)⊕x3) ⟩
从演算可以看出, x 1 x_1 x1 和 x 2 x_2 x2 先进行 与 运算,得到的结果再和 x 3 x_3 x3 进行控制非门演算,由控制非门的规则可以知道,只有 x 1 A N D x 2 x_1 \ AND \ x_2 x1 AND x2 为 1 时, x 3 x_3 x3 才会发生改变,因此我们可以得到如下的变化规则:
输入( ∣ x 1 x 2 x 3 ⟩ \vert x_1x_2x_3\rangle ∣x1x2x3⟩) | 输出 ( ∣ x 1 x 2 x 3 ⟩ \vert x_1x_2x_3\rangle ∣x1x2x3⟩) |
---|---|
∣
000
⟩
\vert 000\rangle
∣000⟩ ∣ 001 ⟩ \vert 001\rangle ∣001⟩ ∣ 010 ⟩ \vert 010\rangle ∣010⟩ ∣ 011 ⟩ \vert 011\rangle ∣011⟩ ∣ 100 ⟩ \vert100\rangle ∣100⟩ ∣ 101 ⟩ \vert 101\rangle ∣101⟩ |
∣
000
⟩
\vert 000\rangle
∣000⟩ ∣ 001 ⟩ \vert 001\rangle ∣001⟩ ∣ 010 ⟩ \vert 010\rangle ∣010⟩ ∣ 011 ⟩ \vert 011\rangle ∣011⟩ ∣ 100 ⟩ \vert100\rangle ∣100⟩ ∣ 101 ⟩ \vert 101\rangle ∣101⟩ |
∣
110
⟩
\vert 110\rangle
∣110⟩ ∣ 111 ⟩ \vert 111\rangle ∣111⟩ |
∣
111
⟩
\vert 111\rangle
∣111⟩ ∣ 110 ⟩ \vert 110\rangle ∣110⟩ |
从上表可以看出,只有第二行的两个输入状态对应的输出状态会发生改变。
下面我们再来看一个对 bit 反转错误解码回路的改进:
若发送方发送信息 ∣ φ ⟩ = α ∣ 0 ⟩ + β ∣ 1 ⟩ |\varphi\rangle = \alpha|0\rangle+\beta|1\rangle ∣φ⟩=α∣0⟩+β∣1⟩,和前面一样,还使用 3 qubit 列进行编码,则编为 α ∣ 000 ⟩ + β ∣ 111 ⟩ \alpha|000\rangle+\beta|111\rangle α∣000⟩+β∣111⟩ ,如果在信道中第 2 位发生了 bit 反转错误,则接收端收到的状态为 α ∣ 010 ⟩ + β ∣ 101 ⟩ \alpha|010\rangle+\beta|101\rangle α∣010⟩+β∣101⟩。
将接收到的比特列输入上图所示的回路,经过虚线前的几个控制非门时它们状态的变化如下:
第几个逻辑门 | 经过后的状态 |
---|---|
输入 | α ∣ 0 ‾ 10 ⟩ ∣ 0 ‾ 0 ⟩ + β ∣ 1 ‾ 01 ⟩ ∣ 0 ‾ 0 ⟩ \alpha\vert\underline010\rangle\vert\underline00\rangle+\beta\vert\underline101\rangle\vert\underline00\rangle α∣010⟩∣00⟩+β∣101⟩∣00⟩ |
第一个 | α ∣ 0 1 ‾ 0 ⟩ ∣ 0 ‾ 0 ⟩ + β ∣ 1 0 ‾ 1 ⟩ ∣ 1 ‾ 0 ⟩ \alpha\vert0\underline10\rangle\vert\underline00\rangle+\beta\vert1\underline01\rangle\vert\underline10\rangle α∣010⟩∣00⟩+β∣101⟩∣10⟩ |
第二个 | α ∣ 0 1 ‾ 0 ⟩ ∣ 1 0 ‾ ⟩ + β ∣ 1 0 ‾ 1 ⟩ ∣ 1 0 ‾ ⟩ \alpha\vert0\underline10\rangle\vert1\underline0\rangle+\beta\vert1\underline01\rangle\vert1\underline0\rangle α∣010⟩∣10⟩+β∣101⟩∣10⟩ |
第三个 | α ∣ 01 0 ‾ ⟩ ∣ 1 1 ‾ ⟩ + β ∣ 10 1 ‾ ⟩ ∣ 1 0 ‾ ⟩ \alpha\vert01\underline0\rangle\vert1\underline1\rangle+\beta\vert10\underline1\rangle\vert1\underline0\rangle α∣010⟩∣11⟩+β∣101⟩∣10⟩ |
第四个 | α ∣ 010 ⟩ ∣ 11 ⟩ + β ∣ 101 ⟩ ∣ 11 ⟩ \alpha\vert010\rangle\vert11\rangle+\beta\vert101\rangle\vert11\rangle α∣010⟩∣11⟩+β∣101⟩∣11⟩ |
得到上图虚线处的状态为:
α
∣
01011
⟩
+
β
∣
10111
⟩
=
(
α
∣
010
⟩
+
β
∣
101
⟩
)
∣
11
⟩
\alpha|01011\rangle+\beta|10111\rangle=(\alpha|010\rangle+\beta|101\rangle)|11\rangle
α∣01011⟩+β∣10111⟩=(α∣010⟩+β∣101⟩)∣11⟩
辅助 qubit 对的状态变成了 ∣ 11 ⟩ |11\rangle ∣11⟩。同理我们可以验证在不同位置发生错误时,辅助 qubit 对的错误如下所示:
错误发生的位置 | 辅助 qubit 的状态 |
---|---|
没有错误 | ∣ 00 ⟩ \vert00\rangle ∣00⟩ |
第一位发生错误 | ∣ 10 ⟩ \vert10\rangle ∣10⟩ |
第二位发生错误 | ∣ 11 ⟩ \vert11\rangle ∣11⟩ |
第三位发生错误 | ∣ 01 ⟩ \vert01\rangle ∣01⟩ |
在上图的虚线后面有一个 “控制 · 控制非门” 的量子演算,根据演算规则和上面的推断,我们可以发现,如果在传输过程中第二位发生了错误,那么会让辅助位状态变为 ∣ 11 ⟩ |11\rangle ∣11⟩ 再经过 “控制 · 控制非门” ,就会让第二位发生 bit 反转,从而实现对错误的回路更正。我们就可以根据上面的三个 qubit 对来获得传送的正确信息。同时我们还能发现,如果是其他位发生了 bit 反转,整个回路的输出保持原样。这就是 可以订正第 2 位 qubit 发生错误的回路。
下面我们再来看看 可以订正第 1 位 qubit 发生错误的回路,其回路图如下所示:
从上面辅助 qubit 对的状态我们可以知道,当第一位发生错误时,辅助 qubit 对的状态为 ∣ 10 ⟩ |10\rangle ∣10⟩ ,现在我们用上面虚线后面的逻辑门进行演算,从而实现对第一位的 qubit 进行 bit 反转。
第三位 qubit 发生错误时,辅助 qubit 的状态为 ∣ 01 ⟩ |01\rangle ∣01⟩,类比于第一位发生错误的情况,我们可以在订正第一位错误的回路上做一些改变就可以实现。
另外,当我们实际进行解码时,并不需要将传送来的信息编码复原,我们利用多位编码是保证传送到接收者时利用三位复原,我们只要保证某一位一定是正确的就可以得到正确的信息。例如,对于第二位 qubit 错误进行订正的回路中,我们一定可以得到第二位的信息是正确的,所以可以判断第二位 qubit 的信息就是原信息。