Grover的搜索算法为未分类的数据库搜索提供了可证明的二次加速。该算法通常由以下量子电路表示:
在大多数表示中,协议的关键部分是“ oracle gate”,它“神奇地”执行操作。然而,常常没有提到实现这样的门实际上将是多么困难。的确,使用“甲骨文”似乎只是扫除困难的一种方法。
我们如何知道这种口头手术是否确实可以实现?如果是这样,它的复杂性是什么(例如,门分解的复杂性)?
Grover的搜索算法为未分类的数据库搜索提供了可证明的二次加速。该算法通常由以下量子电路表示:
在大多数表示中,协议的关键部分是“ oracle gate”,它“神奇地”执行操作。然而,常常没有提到实现这样的门实际上将是多么困难。的确,使用“甲骨文”似乎只是扫除困难的一种方法。
我们如何知道这种口头手术是否确实可以实现?如果是这样,它的复杂性是什么(例如,门分解的复杂性)?
Answers:
函数只是位字符串的任意布尔函数:。对于破坏密码学的应用程序,例如[1],[2]或[3],这实际上不是“数据库查找”,它需要以某种方式将整个数据库存储为一个量子电路,而是一个函数,例如
对于固定,它没有结构,我们可以利用它进行经典搜索,这与函数不同
通常无法回答特定成本的问题,因为可以是任何电路-只是将量子电路用经典电路制成。但是通常,如上面的示例中所示,函数在经典计算机上进行评估非常便宜,因此对于格罗弗算法的所有其他事情都在您的预算之内的量子计算机上,它不应造成特别繁重的负担。
之上唯一的一般成本是额外的条件NOT门其中是xor,还有一个额外的辅助qubit。特别是,如果我们有一个电路由和的电路,然后,如果我们将其与一个辅助量子位一起应用于,其初始状态为其中
如果则,因此通过简化我们得到而如果则,所以因此通常为
好吧,格罗弗(Grover)的原始论文“量子力学有助于在大海捞针中寻找针头”明确指出,它假定 C(S)可以在恒定时间内求值。Grover的搜索与可实现性无关,而是降低了查询复杂度(如经典数据库一样查询oracle的次数)的多项式减少
实际上,Alan Turing提出了计算中的oracle概念,以描述无法实现对UTM的描述的构造(维基百科)。从某种意义上说,它是神奇的。
但是,当然,回到您的问题上,然后我们如何实际制作用于Grover搜索(或任何非人工)算法的电路?我们是否需要事先知道答案才能搜索结果?好吧,从某种意义上讲,您需要这样做。这正是对Grover搜索进行巧妙改进的尝试,这样,我们不需要事先知道确切的答案,而需要知道它的某些属性。让我举例说明。
对于使用Grover搜索的模式识别问题,如果我在2个量子位(00、01、10、11)上有4个模式,并且想要标记和放大11,则我的Oracle ary的对角线应为(1,1,1 ,-1)注意解决方案的pi相移。因此,对于这种简单的实现方式,对于单一的构造,您需要提前知道完整的答案。
如果Mateas和Omar在论文“ Quantum模式匹配”中给出了模式完成的巧妙改进。本质上,它构造的固定预言集与集合中的字母一样多。因此,对于我们的二进制字符串,将有一个oracle标记所有1,另一个oracle标记所有0。oracle是根据我要搜索的条件而有条件地调用的。如果要搜索11,则在LSqubit上调用oracle 1,在MSqubit上再次调用oracle 1。通过第一个预言,我将放大状态(01,11),即LSQ为1的状态,在第二个调用中,它将放大(10,11)。因此,正如您所看到的,11是唯一被放大两次的状态,以更高的测量概率结束。尽管编译后的量子电路会根据我的输入搜索模式而变化,量子算法的高级描述保持不变。您可以将oracles视为函数调用,基于对搜索字符串中每个字符调用的字母集的切换情况。