Grover的算法:向Oracle输入什么?


9

我对于在Grover的算法中向Oracle输入什么感到困惑。

除了叠加的量子态,我们是否不需要向Oracle输入我们正在寻找的东西以及在哪里可以找到我们想要的东西?

例如,假设我们有一个人名列表{“ Alice”,“ Bob”,“ Corey”,“ Dio”},并且我们要查找列表中是否包含“ Dio”。然后,Oracle应该采取1/2(|00+|01+|10+|11) 作为输入和输出 1/2(|00+|01+|10|11)。我有点理解。

但是我们是否也不需要向Oracle输入单词“ Dio”和列表{“ Alice”,“ Bob”,“ Corey”,“ Dio”}}?否则,Oracle如何返回输出?因为Oracle是一个黑匣子,我们没有明确地提及它,而我们不必考虑如何实现它吗?

我对Oracle的理解是

  • Oracle能够识别列表中是否包含单词“ Dio”。
  • 为此,Oracle将叠加的量子状态作为输入,其中每个量子状态都表示列表的索引。
  • 因此,输入 |00 对于Oracle的意思是,检查单词“ Dio”是否在列表的索引0中并返回 |00 如果是,然后返回 |00 除此以外。
  • 就我们而言,Oracle返回 1/2(|00+|01+|10|11)
  • 但是列表和单词呢?

1
虽然用不同的方式表达,但我相信您的问题或多或少与以下问题相同:Grover的算法:列表在哪里?
DaftWullie '18

Answers:


4

尽管对Grover算法的流行解释是关于搜索列表,但实际上,您可以使用它来搜索功能的可能输入0..N-1。该算法的成本为O(NF) 哪里 N 是您要搜索的输入数量, F是评估功能的成本。如果希望该功能搜索列表,则必须将列表硬编码到该功能中。

硬编码功能以使用列表 N 物品通常是一个非常糟糕的主意,因为它容易引起 F 等于 O(N)。这将使格罗弗算法的总成本O(NF)=O(NN)=O(N1.5)。自从N1.5>N


您是否不输入有序列表,以使查找更快?当然,您可能要包括订购清单的费用,但我想还是会得出O(Nlog(N))总体。
DaftWullie

@DaftWullie问题是Grover必须在叠加下进行查找,这需要具有N AND门(或其他非Clifford操作)的多路复用器电路。当执行纠错时,量子与门(即Toffoli)的成本不可忽略。从技术上讲,这种成本在经典机器中也存在(即RAM具有O(N)AND门),在这种情况下,它恰好可以忽略不计甚至可以避免。
Craig Gidney '18

我不明白你在说什么。您能否表达问题并回答以显示详细信息?(我认为目前我还不能
说出

@DaftWullie我认为问题应该是“如何让量子计算机对经典数据库进行读取访问以及它的价格如何”。
Craig Gidney '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.