【发布时间】:2019-04-05 10:52:51
【问题描述】:
如果我想编写一个程序来模拟 Grover 的算法,我该如何为它编写 oracle?如果我已经知道结果,为什么还要使用搜索?
【问题讨论】:
如果我想编写一个程序来模拟 Grover 的算法,我该如何为它编写 oracle?如果我已经知道结果,为什么还要使用搜索?
【问题讨论】:
很多 Grover 搜索实现的例子都使用了带有硬编码答案的预言机,这确实不是很有启发性。在一般情况下,Grover 搜索的重点当然是在您不知道答案的情况下执行搜索。要为此编写一个预言机,您不需要一个检查输入是否等于某个硬编码值的预言机,而是一个检查输入的某个属性的预言机。实现预言机是解决问题最难的部分。
此类问题的最简单示例是SAT problem。您可以将公式中的变量映射到输入的量子比特并编写一个相对容易计算 f(x) 的预言机,并且您可以应用 Grover 搜索来找到满足给定公式的解释,但您不知道只需瞥一眼神谕即可得到答案。您可以在SolveSATWithGrover 教程中看到一个使用预言机解决 SAT 问题的示例。
附:在Quantum Computing StackExchange 上有很多关于 Grover 搜索算法的精彩答案。
【讨论】: