容错量子计算
目录
1 量子纠错 2
2 Shor 2
3 CSS 4
1
1 量子纠错
对于经典比特而言, 错误无非是比特翻. 而在量子比特, 叠加态的相位变化也被视为错误, 这给量
纠错带来了很大困难. 比如对于一个比特
|
𝜓
i
=
1
2
(
|
0
i
+
|
1
i
)
它可能会由于干扰在 𝑧 轴增加一个随机的相位 𝜃, 变成
|
𝜓
0
i
=
1
2
(
|
0
i
+ 𝑒
𝑖 𝜃
|
1
i
)
这可以描述为
|
𝜓
0
i
= 𝑅
𝑧
(𝜃)
|
𝜓
i
, 𝑅
𝑧
(𝜃) = 𝑒
𝑖 𝜃 𝑍/2
= cos
𝜃
2
𝐼 𝑖 sin
𝜃
2
𝑍
这个错误可以视为不发生错 𝐼 发生 𝑧 翻转错误的叠加. 虽然不能测量比特, 但是可以引入额外的
助比特, 对辅助比特进行测量, 表征有没有错误发生
1. 若测得到没有错误, 则量子态坍缩到 𝐼 的分支, 潜在的错误被消除
2. 若测得到发生了错误, 则量子态坍缩到 𝑍 的分支, 此时可以施加量子门纠正
这样无论旋转的角度 𝜃 是多少, 都可以将错误纠正回来
具体来说, 可以使用 𝑛 个物理比特编码 𝑘 个逻辑比特, 这样物理比特的态空间 H
𝐿
成为物理比特空间 H
𝑃
的一个子空间, 记其基矢为
|
𝜓
i
0
,
|
𝜓
i
1
, ··· ,
|
𝜓
i
2
𝑘
1
若一组错误 𝐸
𝑖
能被纠正, 则必须满足错误不影响逻辑比特的区分度
𝜓
𝑗
𝐸
𝑎
𝐸
𝑏
|
𝜓
𝑖
i
= 0, 𝑖 𝑗
错误对于所有逻辑比特的影响相同, 即对于所有 𝑖, 𝑗
h
𝜓
𝑖
|
𝐸
𝑎
𝐸
𝑏
|
𝜓
𝑖
i
=
𝜓
𝑗
𝐸
𝑎
𝐸
𝑏
𝜓
𝑗
= 𝐶
𝑎𝑏
其中 𝐶
𝑎𝑏
𝑖, 𝑗 无关, 是厄米矩阵. 这两个条件称为 Knill-Laamme 条件. 这确保了不同错误被映射
到正交态, 从而能够被区分和纠正
2 Shor
Shor 码使用 9 个物理比特编码 1 个逻辑比特, 可以纠正这 9 个比特上其中一个发生的任何错误, 具体来
说编码如下
|
0
i
𝐿
=
1
2
2
(
|
000
i
+
|
111
i
)(
|
000
i
+
|
111
i
)(
|
000
i
+
|
111
i
)
|
1
i
𝐿
=
1
2
2
(
|
000
i
|
111
i
)(
|
000
i
|
111
i
)(
|
000
i
|
111
i
)
它实际上是由两层嵌套组成的. 为了纠正比特翻转错误 𝑋, 首先将逻辑比特编码为三个比特的重复码
|
0
i
|
000
i
,
|
1
i
|
111
i
如果其中一个比特发生翻转, 会导致两个比特与另一个比特不同, 可以通过多数表决纠正回来. 假定比
特状态为
|
𝜓
i
= 𝛼
|
000
i
+ 𝛽
|
111
i
使用算符 𝑍
1
𝑍
2
测量可以得到比特 1 2 是否相同. 𝑍 算子的作用为
𝑍
|
0
i
=
|
0
i
, 𝑍
|
1
i
=
|
1
i
因此
𝑍
1
𝑍
2
|
00
i
=
|
00
i
, 𝑍
1
𝑍
2
|
11
i
=
|
11
i
但是当比特不一致时
𝑍
1
𝑍
2
|
01
i
=
|
01
i
, 𝑍
1
𝑍
2
|
10
i
=
|
10
i
测量的结果不一, 可以用来判断是否发生了错误. 类似地, 还可以测量 𝑍
2
𝑍
3
来判断比特 2 3 是否相
, 从而确定哪个比特发生了翻转错误, 并进行纠正
为了纠正相位翻转错误 𝑍, 注意到
𝑍 = 𝐻 𝑋𝐻
换言之相位翻转实际上是在 Hadamard 变换后的 𝑋 翻转, 因而可以给
|
0
i
|
1
i
施加 Hadamard 变换
|
0
i
|
+
i
=
1
2
(
|
0
i
+
|
1
i
),
|
1
i
|
i
=
1
2
(
|
0
i
|
1
i
)
此时的相位翻转就成为了比特翻转
𝑍
|
+
i
=
|
i
, 𝑍
|
i
=
|
+
i
使用三个比特的重复码编码
|
0
i
𝐿
=
|
+ + +
i
,
|
1
i
𝐿
=
|
i
可以使用 𝑋
1
𝑋
2
来判断比特 1 2 是否相同, 这是因为
𝑋
|
+
i
=
|
+
i
, 𝑋
|
i
=
|
i
进而
𝑋
1
𝑋
2
|
++
i
=
|
++
i
, 𝑋
1
𝑋
2
|
−−
i
=
|
−−
i
𝑋
1
𝑋
2
|
+−
i
=
|
+−
i
, 𝑋
1
𝑋
2
|
−+
i
=
|
−+
i
从而可以从测量结果判断是否发生了错误. 𝑋
2
𝑋
3
同理可以判断比特 2 3 是否相同, 进而定位到发生错
误的比特并进行纠正
为了同时纠正比特翻转和相位翻转错误, 可以将两者结合起来. 首先得到一个抗比特翻转的
|
+
i
|
i
|
+
i
𝐿
=
1
2
(
|
000
i
+
|
111
i
),
|
i
𝐿
=
1
2
(
|
000
i
|
111
i
)
然后使用三个这样的逻辑比特来编码一个抗相位翻转的逻辑比特
|
0
i
𝐿
=
|
+ + +
i
𝐿
,
|
1
i
𝐿
=
|
i
𝐿
对于 𝑌 错误, 它可以视为同时发生了 𝑋 𝑍 错误, 即得到能纠正任何单比特错误的 Shor
3 CSS
现代的经典比特纠错是基于奇偶校验的线性码. 对于一串比特, 记其为一个二进制向量 ®𝑥
®𝑥 =
©
«
𝑥
1
𝑥
2
.
.
.
𝑥
𝑛
ª
®
®
®
®
®
®
¬
, 𝑥
𝑖
{0, 1}
再定义一个校验矩阵 𝐻, ®𝑥 是一个合法码字, 则满足
𝐻 ®𝑥 = 0 (mod 2)
否则 𝐻 ®𝑥 = ®𝑠 0, 查表即可定位到错误位置并纠正. 根据该式, 𝐻 的每一行不为零的位置之和应该为偶数
对于量子比特的比特翻转, 也可以使用线性码来纠正. 为了得到 𝐻 中一行的结果, 需要测量的算符为
𝐻
𝑖
= 𝐻
𝑗
= ... = 1 𝑍
𝑖
𝑍
𝑗
...
也就是说每一个为 1 的位置对应一个 𝑍 算符, 这样测量的结果为 +1 表示偶数个比特为 1, 结果为 1
示奇数个比特为
1
,
达到与经典比特一样的效果
.
类似地
,
相位翻转错误可以使用另一个线性码来纠正
,
不过需要使用 𝑋 算符来测量奇偶校验
然而, 测量比特翻转不能影响测量相位翻转, 这就需要
这两个被测量的物理量对易
. 注意到
𝑋 𝑍 = 𝑍 𝑋
只相差了一个负号. 那么可以把它们凑一对
𝑋
1
𝑋
2
𝑍
1
𝑍
2
= (𝑋
1
𝑍
1
)(𝑋
2
𝑍
2
) = (𝑍
1
𝑋
1
)(𝑍
2
𝑋
2
) = 𝑍
1
𝑍
2
𝑋
1
𝑋
2
这意味着偶数个比特的 𝑋 𝑍 算符是对易的. 𝐻 矩阵的每一行都对应一个测量, 也就是说, 测量比特翻
转的矩阵和相位翻转的矩阵, 任意两行都需要有偶数个位置同时为 1 , 也就是说
𝑖, 𝑗
1
𝑖
2
𝑗
= 0 (mod 2)
其中
1
𝑖
2
𝑗
分别是两个 𝐻 矩阵的第 𝑖 行和第 𝑗 . 注意到满足 𝐻
1
的码字
𝐻
1
®𝑥 = 0 (mod 2)
也就是说 𝐻
2
的每一行都是 𝐻
1
的码字. 也就是说
2
𝐶
1
其中 𝐶
1
是由 𝐻
1
定义的线性码. 也就是说两个校验矩阵定义的纠错码 𝐶
1
𝐶
2
需要满足
𝐶
2
𝐶
1
这里的 𝐶
2
𝐶
2
的对偶码, 即所有与 𝐶
2
中码字正交的码字组成的码, 它正是 𝐻
2
每一行张成的空间
可以随便选取一个码作为比特翻转的纠错码, 不妨叫它 𝐶
1
. 那么所有的码字都必须满足
|𝜓i =
Õ
𝑥𝐶
1
𝛼
𝑥
|𝑥i
这是为了保证 𝐻
1
的测量结果为 0. 了保证 𝐻
2
的测量结果也为 0, 𝑋 门作用的结. 由于单个 𝑋
门作用与一个比特会将其翻转
,
那么如果进行
2
𝑗
定义的 𝑋 作用, 则会将所有
2
𝑗
中为 1 位置的比特翻
,
𝑋
𝑗
|𝑥i = |𝑥
2
𝑗
i
这意味着, 作为码字的态, 其中
|
𝑥
i
𝑥
2
𝑗
叠加系数必须相同. 由于
2
𝑗
𝐶
2
𝐶
1
, 因而这两条都可以
同时满足
𝑥 𝐶
1
,
2
𝑗
𝐶
1
𝑥
2
𝑗
𝐶
1
因此, 对于所有的 𝐻
1
𝑥 = 0, 都可以构造逻辑比特
|𝜉
𝑥
i =
1
p
| 𝐶
2
|
Õ
𝜔𝐶
2
|
𝑥
𝜔
i
考虑 𝑥 能取的范围. 由于 𝑥 必须满足 𝐻
1
𝑥 = 0, 因而 𝑥 只能取 𝐶
1
中的码字. 但是不同的 𝑥 可能会对应同
一个逻辑比特态. 事实上, 𝑥 𝑥
0
满足
𝑥
0
= 𝑥 𝜔, 𝜔 𝐶
2
则它们对应同一个逻辑比特态. 因而 𝑥 的取值集合里只能有一个 𝐶
2
, 其余的都在 𝐶
1
但不在 𝐶
2
.
𝐶
2
中的码字 𝑥
0
需要确保
Õ
𝜔𝐶
2
|𝑥
0
𝜔i =
Õ
𝜔𝐶
2
|𝜔i
因此 𝑥
0
= 0. 这是一个稳定的子空间, 在受到干扰后, 通过测量 𝐻
1
𝐻
2
可以定位到错误并纠正回来,
的大小是 𝐶
2
的大小. 因此, 所有可以区分的状态数目为
| 𝐶
1
|
| 𝐶
2
|
其中 |𝐶 | 表示码 𝐶 中码字的数目. 对于一个线性码 𝐶, 它的比特长度 𝑛, 空间的维度为 𝑘, 码距为 𝑑,
那么
| 𝐶 | = 2
𝑘
, |𝐶
| = 2
𝑛𝑘
所以
| 𝐶
1
|
| 𝐶
2
|
=
2
𝑘
1
2
𝑛𝑘
2
= 2
𝑘
1
+𝑘
2
𝑛
𝑘 个逻辑比特总共有 2
𝑘
个状态, 因而能表示的逻辑比特数目为
𝑘 = 𝑘
1
+ 𝑘
2
𝑛