我对于在Grover的算法中向Oracle输入什么感到困惑。
除了叠加的量子态,我们是否不需要向Oracle输入我们正在寻找的东西以及在哪里可以找到我们想要的东西?
例如,假设我们有一个人名列表{“ Alice”,“ Bob”,“ Corey”,“ Dio”},并且我们要查找列表中是否包含“ Dio”。然后,Oracle应该采取 作为输入和输出 。我有点理解。
但是我们是否也不需要向Oracle输入单词“ Dio”和列表{“ Alice”,“ Bob”,“ Corey”,“ Dio”}}?否则,Oracle如何返回输出?因为Oracle是一个黑匣子,我们没有明确地提及它,而我们不必考虑如何实现它吗?
我对Oracle的理解是
- Oracle能够识别列表中是否包含单词“ Dio”。
- 为此,Oracle将叠加的量子状态作为输入,其中每个量子状态都表示列表的索引。
- 因此,输入 对于Oracle的意思是,检查单词“ Dio”是否在列表的索引0中并返回 如果是,然后返回 除此以外。
- 就我们而言,Oracle返回 。
- 但是列表和单词呢?
1
虽然用不同的方式表达,但我相信您的问题或多或少与以下问题相同:Grover的算法:列表在哪里?
—
DaftWullie '18