如果我想编写一个模拟Grover算法的程序,该如何为它编写oracle?如果我已经知道结果了,为什么要使用搜索?
答案 0 :(得分:2)
许多Grover搜索实现的示例都使用带有硬编码答案的oracle,这的确不是很有启发性。通常,如果您不知道答案,Grover搜索的重点就是执行搜索。要为此编写一个oracle,您不需要一个oracle检查输入是否等于某个硬编码值,而是一个oracle检查输入的某个属性。实施oracle是解决问题的最难的部分。
此类问题最简单的例子是SAT problem。您可以将公式中的变量映射到输入的量子位,并编写一个相对容易地计算f(x)的oracle,并且可以应用Grover搜索来找到满足给定公式的解释,但是您不知道只需看一下甲骨文就可以得到答案。在SolveSATWithGrover教程中,您可以看到实现oracle解决SAT问题的示例。
P.S。 Quantum Computing StackExchange上有关于Grover搜索算法的很多很好的答案。