跳转至

第五章 量子搜索算法

一、量子搜索的目标、黑盒子

  • 1、量子搜索问题的基本内容: 给定 N 个对象 x = 0,1,...,N-1,在其中找出所有满足相应条件的对象。
  • 2、由于对象是分立的,不同对象是否满足条件并没有必然联系,所以在无结构黑盒模型中,经典算法通常需要 \(O(N/M)\) 次查询才能在 \(N\) 个对象、\(M\) 个解中找到一个解。Grover 算法把“是否满足条件”的判断封装成 oracle 查询,再用叠加态与振幅放大把查询复杂度减小到 \(O(\sqrt{N/M})\) 。当 \(M=1\) 时,这就是常见的 \(O(\sqrt{N})\)
  • 3、黑盒(Oracle) 理论
  • (1) 在对象中进行搜索,等价于实现下面的函数。
\[f(x) = \begin{cases} 1, & x \text{ 是待搜索的解}, \\ 0, & x \text{ 不是解}. \end{cases}\]

(2) 黑盒的基本思想: 在搜索对象 \(|x\rangle\) 和辅助比特 \(|q\rangle\) 之间实现黑盒算符 \(\hat{O}\) :

\[\hat{O}|x\rangle|q\rangle = |x\rangle|q \oplus f(x)\rangle\]

根据 q 初始状态的不同,该算符的作用也不同。例如,当 q 为基矢量 \(|0\rangle\)\(|1\rangle\) 时,可以得到

\[\hat{O}|x\rangle|q\rangle = |x\rangle|q \oplus f(x)\rangle = \begin{cases} |x\rangle|\overline{q}\rangle, & f(x)=1, \\ |x\rangle|q\rangle, & f(x)=0. \end{cases}\]

\(\hat{O}\) 算符受f(x)的值控制,选择是否翻转比特 \(|q\rangle\)

\[|q\rangle = |-\rangle = \frac{|0\rangle - |1\rangle}{\sqrt{2}}\]

时,有

\[\hat{O}|x\rangle|q\rangle = |x\rangle|q \oplus f(x)\rangle = \begin{cases} -|x\rangle|q\rangle, & f(x)=1, \\ |x\rangle|q\rangle, & f(x)=0. \end{cases} = (-1)^{f(x)}|x\rangle|q\rangle\]

与前面章节同理,由于实际处理时 \(|x\rangle\) 是叠加态,在直积分解时可以认为这个相位加在了 \(|x\rangle\) 上,即 \(|x\rangle\)\(\hat{o}\) \(\rightarrow\) \((-1)^{f(x)}|x\rangle\) 。(Phase Oracle)

在形式理论中, 不考虑如何实现黑盒子, 只是讨论它的作用。

二、Grover 迭代法

  • 1、在了解其意义之前,先展示 Grover 算法的线路图。 总线路图如下:

单次 Grover 迭代 G 的内部线路如下:

其中 \(N=2^n\)

  • 2、从开始到一次迭代 G 结束,包含以下步骤。
  • (1) 将 n 比特 \(|0\rangle\) 经过 Hadamard 门:
\[\left|0\right\rangle^{\otimes n} \to \left|\psi\right\rangle = \frac{1}{\sqrt{2^n}} \left(\left|0\right\rangle + \left|1\right\rangle\right)^{\otimes n} = \frac{1}{\sqrt{N}} \sum_{x=0}^{N-1} \left|x\right\rangle\]

于是该寄存器包含了所有搜索对象 \(|x\rangle\) 的等权叠加。

  • (2) 通过黑盒子对搜索的解进行相位处理。
  • (3) 后续存在一个条件相位操作: 对 \(|0\rangle\) 不做处理,但对于所有非零的 \(|x\rangle\) 都施加 \(\pi\) 的相位,即 \(|x\rangle \rightarrow -(-1)^{\delta_{x0}}|x\rangle\) 。容易验证,算符 \(2|0\rangle\langle 0|-\hat{I}\) 可以实现这一操作。再加上两侧 Hadamard 门的作用,oracle 之后的操作为
\[\hat{H}^{\otimes n}(2|0\rangle\langle 0|-\hat{I})\hat{H}^{\otimes n}=2|\psi\rangle\langle\psi|-\hat{I}\]

因此,一次 Grover 迭代所对应的操作为

\[\hat{G} = (2|\psi\rangle\langle\psi| - \hat{I})\hat{O}\]
  • 3、Grover 迭代的几何意义:将态矢转向正确答案张成的子空间。
  • (1) 设搜索问题有N个对象,其中包含M个正确解。定义非解矢量
\[|\alpha\rangle = \frac{1}{\sqrt{N-M}} \sum_{f(x)=0} |x\rangle\]

以及解矢量

\[|\beta\rangle = \frac{1}{\sqrt{M}} \sum_{f(x)=1} |x\rangle\]

在 phase oracle 下,有 \(\hat{O}|\alpha\rangle = |\alpha\rangle\) , \(\hat{O}|\beta\rangle = -|\beta\rangle\) 。并且, \(\langle\alpha|\beta\rangle = 0\)

(2) 迭代前的等权叠加态 \(|\psi\rangle\) 是解矢量和非解矢量的叠加:

\[|\psi\rangle = \frac{1}{\sqrt{N}} \sum_{x=0}^{N-1} |x\rangle = \sqrt{\frac{N-M}{N}} |\alpha\rangle + \sqrt{\frac{M}{N}} |\beta\rangle\]

定义角度参数

\[ \theta = 2 \arcsin \sqrt{\frac{M}{N}}, \]

则有

\[ |\psi\rangle = \cos \frac{\theta}{2} |\alpha\rangle + \sin \frac{\theta}{2} |\beta\rangle . \]

在几何上,由于 \(|\alpha\rangle\)\(|\beta\rangle\) 正交,可以将它们看成如下图的一个二维空间的标准正交基,而系统状态 \(|\psi\rangle\) 就是在它们之间、与 \(|\alpha\rangle\) 夹角为 \(\frac{\theta}{2}\) 的单位矢量。

(3)单次迭代对应的几何操作: \(\hat{O}\)\(|\psi\rangle\) 沿 \(|\alpha\rangle\) 翻折, \(2|\psi\rangle\langle\psi|\) - \(\hat{I}\)\(\hat{O}|\psi\rangle\) 沿 \(|\psi\rangle\) 翻折。可以看到,这两步之后得到的态矢为

\[\hat{G}|\psi\rangle = \cos\frac{3}{2}\theta|\alpha\rangle + \sin\frac{3}{2}\theta|\beta\rangle\]

即单次迭代使态矢朝 \(|\beta\rangle\) 转动了 \(\theta\) 角。继续迭代,会发现每次都是这样转动 \(\theta\) ,最终态矢将非常靠近 \(|\beta\rangle\)

(4) 从算符角度证明上述几何操作: 以 \(|\alpha\rangle\)\(|\beta\rangle\) 为基,考察该二维空间内的操作,则可以明确写出黑盒等算符的形式。

\[\hat{O}|\alpha\rangle = |\alpha\rangle, \quad \hat{O}|\beta\rangle = -|\beta\rangle \Rightarrow \hat{O} = \hat{Z} = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}\]
\[|\psi\rangle = \begin{pmatrix} \cos\frac{\theta}{2} \\ \sin\frac{\theta}{2} \end{pmatrix} \Rightarrow 2|\psi\rangle\langle\psi| - \hat{I} = \begin{pmatrix} \cos\theta & \sin\theta \\ \sin\theta & -\cos\theta \end{pmatrix}\]
\[\hat{G} = (2|\psi\rangle\langle\psi| - \hat{I})\hat{O} = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix} = \exp(-i\theta\hat{Y}) = \hat{R}_{y}(2\theta)\]

如果在 Bloch 球上看,Grover 迭代对应绕 y 轴转动 \(2\theta\) ;如果像上图一样在二维空间中看,Grover 迭代对应平面内逆时针旋转 \(\theta\)

4、Grover 迭代的性能

(1) 经过若干次迭代,系统的态矢会靠近 \(|\beta\rangle\) ,但由于初始时 \(|\psi\rangle\)\(|\beta\rangle\) 之间的夹角未必是 \(\theta\) 的整数倍,所以 \(\hat{G}^k|\psi\rangle\) 未必能够恰好指向 \(|\beta\rangle\) ,只能选取与 \(|\beta\rangle\) 最近的 \(\hat{G}^k|\psi\rangle\) 作为最终结果。因此,对应的迭代次数为

\[R = \text{CI}\left(\frac{\pi - \theta}{2\theta}\right) = \text{CI}\left(\frac{\pi}{2\theta} - \frac{1}{2}\right)\]

其中 CI 表示最接近的整数(Closest integer)。

(2) 对迭代次数的大致估计:

\[R = \operatorname{CI}\left(\frac{\pi}{2\theta} - \frac{1}{2}\right) < \frac{\pi}{2\theta} = \frac{\pi}{4} \left(\frac{\theta}{2}\right)^{-1} \le \frac{\pi}{4} \left(\sin\frac{\theta}{2}\right)^{-1} = \frac{\pi}{4} \sqrt{\frac{N}{M}}\]
\[R = \operatorname{CI}\left(\frac{\pi}{2\theta} - \frac{1}{2}\right) \ge \frac{\pi}{2\theta} - 1 = \frac{\pi}{4} \left(\frac{\theta}{2}\right)^{-1} - 1 \ge \frac{\pi}{4} \left(\tan\frac{\theta}{2}\right)^{-1} - 1 = \frac{\pi}{4} \sqrt{\frac{N-M}{M}} - 1\]

因此

\[ \left\lfloor \frac{\pi}{4}\sqrt{\frac{N-M}{M}} \right\rfloor \le R \le \left\lfloor \frac{\pi}{4}\sqrt{\frac{N}{M}} \right\rfloor. \]

从这一估计可以看出,量子搜索算法的查询复杂度随 \(\sqrt{N/M}\) 缩放。特别地,只有一个解时为 \(O(\sqrt{N})\) ;若解的数量 \(M\) 增加,所需迭代次数会相应减少。

5、条件相位门的线路实现

条件相位门 \(2|0\rangle\langle 0|-\hat{I}\) 可以用普通的量子线路来设计。由于其操作和比特的状态有关,显然需要用受控门实现。具体线路取决于比特数。

(1) 双比特:

\[\hat{I} - 2|00\rangle\langle 00| = \hat{X}^{\otimes 2}(\hat{I} - 2|11\rangle\langle 11|)\hat{X}^{\otimes 2}\]

由于

\[\begin{split} \hat{I} - 2|11\rangle\langle11| &= |00\rangle\langle00| + |01\rangle\langle01| + |10\rangle\langle10| - |11\rangle\langle11| \\ &= |0\rangle\langle0|\otimes(|0\rangle\langle0| + |1\rangle\langle1|) + |1\rangle\langle1|\otimes(|0\rangle\langle0| - |1\rangle\langle1|) \\ &= |0\rangle\langle0|\otimes\hat{I} + |1\rangle\langle1|\otimes\hat{Z} = C(\hat{Z}) \end{split}\]

根据第三章受控门的分解,有

\[C(\hat{Z}) = (\hat{I} \otimes \hat{H})CNOT(\hat{I} \otimes \hat{H})\]

所以 \(\hat{I}-2|00\rangle\langle 00|=\hat{X}^{\otimes 2}(\hat{I}\otimes\hat{H})\text{CNOT}(\hat{I}\otimes\hat{H})\hat{X}^{\otimes 2}\) 。线路图如下:

(2) 三比特:

\[\hat{I} - 2|000\rangle\langle 000| = \hat{X}^{\otimes 3}(\hat{I} - 2|111\rangle\langle 111|)\hat{X}^{\otimes 3}\]

\(\hat{I} - 2|111\rangle\langle111| = |000\rangle\langle000| + |001\rangle\langle001| + \dots + |110\rangle\langle110| - |111\rangle\langle111|\)

\(= (\left|00\right\rangle\!\left\langle00\right| + \left|01\right\rangle\!\left\langle01\right| + \left|10\right\rangle\!\left\langle10\right|) \otimes (\left|0\right\rangle\!\left\langle0\right| + \left|1\right\rangle\!\left\langle1\right|) + \left|11\right\rangle\!\left\langle11\right| \otimes (\left|0\right\rangle\!\left\langle0\right| - \left|1\right\rangle\!\left\langle1\right|)\)

\[= (|00\rangle\langle00| + |01\rangle\langle01| + |10\rangle\langle10|) \otimes \hat{I} + |11\rangle\langle11| \otimes \hat{Z} = CC(\hat{Z})\]

在此图中令 \(\hat{U} = \hat{Z}\) , \(\hat{V} = \hat{S} = \text{diag}(1,i)\) 即可。

因此,设计此类线路的常见方法是通过 \(\hat{X}\) 将特殊的(不被作用的)比特转为全1的比特。用单位算符减去全1比特,这一项实际上就对应了受控Z。

三、量子计数

1、在量子搜索中,有时并不知道正确答案的个数 M。一种比较直接的方法是尝试,也就是分别令 \(M = 2^{n-1}, 2^{n-2}, ..., 2^0 = 1\) ,进行 Grover 迭代,看最终输出的效果。这一做法所需的迭代次数为

\[R \le \sum_{j=0}^{n-1} \left| \frac{\pi}{4} \sqrt{\frac{N}{2^j}} \right| \le \sum_{j=0}^{n-1} \frac{\pi}{4} \sqrt{\frac{N}{2^j}} \le \frac{2 + \sqrt{2}}{4} \pi \sqrt{N} = O(\sqrt{N})\]

但是,如果M超过N/2,那么 \(\theta\) 将会很大,从而这样的尝试效率较低。在这种情况下,会考虑加入 N 个确定不是解的辅助对象,再在扩展后的搜索空间中计数,让 \(\theta\) 保持在更合适的范围。

2、另一种尝试方法是考虑迭代次数。在某个假定的 \(\theta\) 下,分别尝试以下次数的 Grover 迭代:

\[R_{\text{try}} = 0,1,2,4,...,2^{\left\lfloor \frac{n}{2} \right\rfloor}\]

可以证明,在合适的随机化或分段尝试方案下,可以在不知道 \(M\) 的情况下仍保持 \(O(\sqrt{N/M})\) 量级的查询复杂度。这里列出的倍增尝试只是一种直观方法,严格算法通常会随机选择迭代次数以避免反复“转过头”。

以上方法都不是很精确的估计,第一种方法假设了M是 2 的幂次,而第二种方法略显盲目;并且,如果搜索问题根本没有解,这些算法也无法进行较好的判断。标准的量子计数算法会对 Grover 算符做相位估计,从而估计解的个数 \(M\) 。在使用 \(O(\sqrt{N})\) 次 Grover 查询的典型设置下,其误差量级可以达到 \(O(\sqrt{M})\)

3、量子计数算法的本质就是把求M的问题转化为相位估计问题。由于Grover 迭代的算符为

\[\hat{G} = \begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{pmatrix}\]

容易算得其本征值为 \(e^{\mathrm{i}\theta}\)\(e^{\mathrm{i}(2\pi-\theta)}\) 。通过相位估计算法将 \(\theta\) 估测出来,然后根据定义即可得到 \(M=N\sin^2\frac{\theta}{2}\)

4、量子计数的线路图: 就是 Grover 算符相位估计的线路。

(1)一次相位估计所需要的 Grover 迭代次数: 就是第二寄存器上 \(\hat{G}\) 算符作用的次数。

\[1+2+2^2+...+2^{t-1}=2^t-1\approx 2^t\]

(2) 测量第一寄存器,得到 i 的概率:

\[p(j) = \frac{1}{2 \times 4^{t}} \left| \frac{1 - \exp(i2^{t} \theta_{j}^{+})}{1 - \exp(i\theta_{j}^{+})} \right|^2 + \frac{1}{2 \times 4^{t}} \left| \frac{1 - \exp(i2^{t} \theta_{j}^{-})}{1 - \exp(i\theta_{j}^{-})} \right|^2\]

其中相位偏差为

\[ \theta_j^{\pm} = \pm \theta - \frac{2\pi j}{2^t}. \]

5、估计的精度:利用一定量的比特可以将 \(\theta\) 估计到m位,即

\[|\Delta \theta| \leq 2^{-m}\]

由此可以得到M的精度。

\[\sin^{2} \frac{\theta}{2} = \frac{M}{N}\]
\[\frac{\left|\Delta M\right|}{N} = \left|\sin^{2} \frac{\theta + \Delta \theta}{2} - \sin^{2} \frac{\theta}{2}\right| = \left(\sin \frac{\theta + \Delta \theta}{2} + \sin \frac{\theta}{2}\right) \left|\sin \frac{\theta + \Delta \theta}{2} - \sin \frac{\theta}{2}\right|\]

因为

\[\sin\frac{\theta + \Delta\theta}{2} = \sin\frac{\theta}{2}\cos\frac{\Delta\theta}{2} + \cos\frac{\theta}{2}\sin\frac{\Delta\theta}{2} \le \sin\frac{\theta}{2} + \left|\sin\frac{\Delta\theta}{2}\right| \le \sin\frac{\theta}{2} + \left|\Delta\theta\right|\]

所以

\[\frac{\left|\Delta M\right|}{N} = \left(\sin\frac{\theta + \Delta\theta}{2} + \sin\frac{\theta}{2}\right) \left|\sin\frac{\theta + \Delta\theta}{2} - \sin\frac{\theta}{2}\right| \le \left(2\sin\frac{\theta}{2} + \frac{\left|\Delta\theta\right|}{2}\right) \frac{\left|\Delta\theta\right|}{2}\]

再代入

\[ \sin^2\frac{\theta}{2} = \frac{M}{N},\qquad |\Delta\theta| \le 2^{-m},\qquad N = 2^n, \]

可知

\[\left|\Delta M\right| \le N\left(2\sqrt{\frac{M}{N}} + \frac{2^{-m}}{2}\right)\frac{2^{-m}}{2} = 2^{-m}\sqrt{MN} + 2^{n-2m-2} = O(\sqrt{M})\]

相应地,若测量成功概率不低于 \(1-\varepsilon\) ,则第一寄存器所需要的比特数为

\[t = m + 3 + \left\lceil \log \left( 2 + \frac{1}{2\varepsilon} \right) \right\rceil\]