用户:Subgradient/葛罗佛算法

Grover算法 是一种 量子算法 ;它只需要执行次某个黑盒函数,就能以很高的概率的概率找到使黑盒函数找到产生某个特定输出的输入(是黑盒函数的定义域大小)。它由 Lov Grover 在1996年提出。

经典计算机不能在不到 次执行内解决类似的问题(因为在最坏的情况中,第N个定义域的成员才是正确的解)。在Grover发表算法的大约同一时间,Bennett,Bernstein,Brasard以及Vazirani证明了,没有量子算法可以在  次执行内解决这个问题;因此Grover算法是 渐进的最佳的。[1]

已经证明,非局域隐变量的量子计算机可以用至多 步实现对有个元素的数据库的搜索。 这比Grover算法所需要的  步要快。

以上两种搜索方法都不能让量子计算机在多项式时间内解决 NP完全 的问题。[2] 不同于其他的可以提供指数加速的量子算法,Grover的算法,只提供了平方级别的加速。 然而,即使是平方的加速在  很大的时候也足够大。 Grover的算法,可以在大约次迭代内 暴力破解 128位的对称加密密钥,或者在大约 迭代内破解256位密钥。 因此,有人建议[3] 将对称密钥长度增加一倍,以防范未来的量子攻击。

应用

编辑

虽然Grover的算法的目的通常被描述为"搜索数据库",但更准确地说,它应该被描述为"求函数的逆"。 大致说来,如果我们有一个可以在量子计算机上求值的函数  ,Grover的算法可以在给定 <math>y</math> 时计算  。对函数求逆和数据库搜索有关,因为我们可以构造一个函数,如果 匹配数据库中的一个所需项目,产生一个特定的值 y (比如"真");而对于其它的 x,返回另一个值  ("假")。

Grover的算法还可用于估计一组数的 平均中位数 ,以及解决 碰撞问题的。 如果有多个匹配的条目且数量事先知道,这一算法还可进一步优化。 Grover的算法也可以用于破解密码。

设定

编辑

考虑一个拥有 N 个条目的无序数据库。 算法需要一个 N-维 态空间 H;这可以用 n =log2 N 个 量子比特 提供。考虑这样一个问题:寻找满足某些标准的数据库条目的索引。 让 f 是一个将数据库条目映为0或1的函数,且 f(x)=1当且仅当 x 满足搜索标准(x = ω)。我们可以(以量子黑盒的形式)使用一个 幺正算子 Uω ,其作用为:

 Uω 的另外一种定义如下。假定存在一个 辅助量子比特 系统(如下图中的量子电路所描绘的)。 那么,这个算子表示有受主系统中 f(x)的值控制的受控非():

更加简短地,

这是一种利用 去计算方法来实现一个二元运算的自然的方法。 需要注意的是,如果辅助量子比特初始状态为 门将等效于上文中的操作,同时辅助系统不再与主系统纠缠:

 

在以上两种设定中,我们的目标都是寻找 

算法的步骤

编辑
 
表示Grover算法的量子电路

Grover算法的步骤如下。 让 表示所有状态的均匀叠加态

 

那么算子

 

记为Grover扩散算子。

以下是算法:

  1. 将系统初始化为
     
  2. 执行以下"Grover迭代" r(N)次。 函数 r(N)(渐近 O(N1/2))将在下文中说明。
    1. 作用算子 
    2. 作用算子 
  3. 执行测量Ω。 测量 的结果将以接近1的概率(在N ≫ 1时)是本征值 λω 。ω 可以从λω求得。

的描述 

编辑

参见

编辑

参考书目

编辑
  1. ^ Bennett C.H.; Bernstein E.; Brassard G.; Vazirani U. The strengths and weaknesses of quantum computation. SIAM Journal on Computing. 1997, 26 (5): 1510–1523. doi:10.1137/s0097539796300933. 
  2. ^ Aaronson, Scott. Quantum Computing and Hidden Variables (PDF). 
  3. ^ Daniel J. Bernstein. Grover vs. McEliece (PDF). 2010-03-03. |author=|last=只需其一 (帮助)

参考文献

编辑

外部链接

编辑

[[Category:量子演算法]] [[Category:搜尋演算法]]