斯科特·亚伦森(Scott Aaronson)的这篇博文是对Shor算法的非常有用且简单的解释。
我想知道第二种最著名的量子算法是否有这样的解释:格罗弗(Grover)算法可在时间内搜索大小为的无序数据库。
特别是,我希望对运行时间最初令人惊讶的结果看到一些可以理解的直觉!
斯科特·亚伦森(Scott Aaronson)的这篇博文是对Shor算法的非常有用且简单的解释。
我想知道第二种最著名的量子算法是否有这样的解释:格罗弗(Grover)算法可在时间内搜索大小为的无序数据库。
特别是,我希望对运行时间最初令人惊讶的结果看到一些可以理解的直觉!
Answers:
克雷格·吉德尼(Craig Gidney)在这里有一个很好的解释(他的博客上还包含其他内容,包括电路仿真器)。
本质上,当您具有返回True
其可能输入之一以及False
所有其他输入的函数时,格罗弗的算法适用。该算法的工作是找到返回的那个True
。
为此,我们将输入表示为位字符串,并使用一串的和状态对它们进行编码。因此,例如,位串将以四个qubit状态进行编码。0011
我们还需要能够使用量子门来实现该功能。具体而言,我们需要找到门的顺序,将实现统一这样
其中是函数将返回的位串,是函数将返回的位串。True
False
如果我们从所有可能的位串的叠加开始,而这只需通过Hadamarding一切就很容易完成,那么所有输入都以相同的振幅开始(其中为我们正在搜索的位串的长度,因此我们正在使用的qubit数量)。但是,如果我们随后再应用oracle,则所要寻找的状态的振幅将变为。
这不是容易观察到的差异,因此我们需要对其进行放大。要做到这一点,我们使用格罗弗扩散算,。该运算符的作用实质上是查看每个幅度与平均幅度之间的差异,然后将其求逆。因此,如果某个幅度比平均幅度大某个数量,它将变成小于平均值的相同数量,反之亦然。
具体来说,如果您具有位串的叠加,则扩散运算符具有作用
其中是平均幅度。因此,任何振幅都会变成。要了解它为什么具有这种效果以及如何实现它,请参阅这些讲义。
大多数幅度将比平均值大一点点(由于单个),因此它们将变得比平均值小一点此操作。没什么大变化。
我们正在寻找的状态将受到更大的影响。它的幅度比平均值小很多,因此在应用了扩散算子后,平均值将大大提高。因此,扩散算子的最终结果是对状态产生干扰影响,这些状态会从所有错误的答案中撇除的振幅并将其添加到正确的状态。通过重复此过程,我们可以迅速达到解决方案在人群中脱颖而出的程度,以至于我们可以识别它。
当然,这一切都表明所有工作都是由扩散算子完成的。搜索只是我们可以连接到的应用程序。
我发现图形方法非常适合提供一些见识,而又不会太技术化。我们需要一些输入:
最后一项操作可以将我们标记的项目标记为-1阶段。我们还可以将状态为与正交,使得形成以下项的正交基础:。我们定义的两个操作都保留了该空间:您以范围内的某个状态开始,并且它们返回范围内的状态。而且,两者都是单一的,因此保留了输入矢量的长度。
二维空间内固定长度的向量可以可视化为圆的圆周。因此,让我们建立一个具有两个正交方向的圆,分别对应于和。
我们的初始状态与重叠较小,而与重叠较大。如果不是这样,则搜索将很容易:我们只需准备,测量并使用标记为单一的输出进行测试,重复进行直到获得标记的项目为止。不会花很长时间。让我们称与角的角度。
现在,让我们花点时间考虑一下我们的两个统一动作的作用。两者的特征值均为-1,所有其他特征值均为+1。在我们的二维子空间中,它减少为+1个特征值和-1个特征值。这样的操作是在由+1特征向量定义的轴上的反射。因此,是轴的反射,而是的反射轴。