算法

Grover 算法(量子搜索算法)

想象一本完全没有按姓名排序的电话簿——只是 N 条记录乱堆在一起——而你想找出与某个已知名字相符的那一条。在经典做法里,你别无选择,只能一条一条地查,平均要翻过其中大约一半,所以工作量随 N 增长。Grover 算法是一种量子方法,它只需大约 N 的平方根那么多步,就能找到这条被标记的记录。对一份一百万条的列表来说,大约是一千次检查,而不是五十万次。它需要一个“预言机(oracle)”:一种在看到正确答案时能认出它的办法,哪怕它没法直接指出答案在哪里。

下面说说它真实的运作机制,因为这一点很容易被听岔。这个算法并不是“一次性把所有答案都试一遍”,然后把胜出者读出来。它一开始让所有可能性共享相等的振幅,然后重复一个两步操作——预言机把被标记答案的振幅翻转符号,第二步操作再把所有振幅相对于它们的平均值做一次反射。每一轮都把多一点点振幅推向正确答案、推离其余答案,这个过程称为振幅放大(amplitude amplification)。大约 sqrt(N) 轮之后,正确结果就有很高的概率被测量到。轮数跑得太多,振幅会冲过头、然后又开始缩小,所以迭代次数其实很要紧。

steps: ~N (classical) vs ~sqrt(N) (Grover) — e.g. N=1,000,000 -> ~1,000

在一份一百万项的无结构列表中搜索:经典做法约需一百万次检查,而 Grover 大约只要一千次迭代,体现的是二次方(而非指数级)的提升。

要保持清醒:这是二次方加速(sqrt(N)),不是 Shor 算法那种指数级加速——而且在真实硬件上,运行一个可靠的预言机、再配上足够多经过纠错的量子比特,其代价往往把这点优势吃掉,所以它并不是一个免费的“把什么都搜得更快”的按钮。

又称
Grover searchquantum search algorithmGrover 搜索量子搜索算法Grover 搜尋量子搜尋演算法