格罗弗的算法时,除其他事项外,要搜索某个项目中的项目的无序列表的长度为。尽管这里有很多关于此主题的问题,但我仍然不明白这一点。y[x0,x1,...,xn−1]n
以经典方式在列表中搜索
通常,我会这样设计搜索功能
因此,我将列表和所需项作为输入,得到位置列表中项目的输出。我想我已经理解,关于是通过oracle的门嵌入到算法中的,所以我们的函数变成
让我们做一个实际的例子。考虑搜索黑桃1 \ Spadesuit的王牌search([x0,x1,...,xn−1],y)=i∈Nsuch that xi=y
yOsearchy([x1,x2,...,xn])=i∈Nsuch that xi=y
1♠从标准的52张卡片组按8张卡片的顺序排列:
长度8的列表是[x0=J♣, x1=10♢, x2=4♡, x3=Q♣, _2 = 4 \ heartsuit,\ mathbf {x} _3 = Q \ clubsuit ,x4=3♠, x5=1♠, x6=6♠, x7=6♣]。
所需元素是x5。我应该获得search♠(cards)=5。每张卡都可以使用⌈log252⌉=6位进行编码,该列表包含8元素,因此我们需要6×8=48位来对该列表进行编码。在这种情况下,oracle O将实现以下功能:
f(x)={1,0,x=1♠otherwise
但是,格罗弗算法的输入不是48量子位的状态。
(注:从此处拍摄的洗牌后的图像)
格罗弗及其甲骨文
多个来源(例如,此处 -用图形解释)表明算法的输入是不同的:输入是从搜索空间,其中是列表中元素的数量。每个数字都对应于列表中元素的位置。S={0,1,2,...,N}={0,1,2,...,7}N
的输入现在是一个量子位向量,它必须是在搜索空间中的所有项目的叠加。search♠(⋅)⌈log28⌉=3|ψ⟩S
我们知道
- |03qubits⟩=|000⟩对应于;J♣
- |13qubits⟩=|001⟩对应于 ;10♢
- |23qubits⟩=|010⟩对应于;4♡
- |53qubits⟩=|101⟩对应于,它是所需的元素;1♠
- 等等...
在这种情况下,我们有
但在这种情况下,我们的oracle必须实现函数
search♠(|ψ⟩)=|53qubits⟩
f(|ψ⟩)={1,0,|ψ⟩=|53qubits⟩otherwise
构建oracle要求我们知道位于位置5。如果我们已经搜索了用于构建oracle的元素,那么执行该算法的意义何在?♠