格罗弗的简化算法是什么?

时间:2019-08-11 01:31:21

标签: python algorithm quantum-computing

我是量子计算的新手。我的意思是非常新。我看到有一种叫做Grover搜索算法的算法之王。我读过它搜索包含N元素的数据库以查找特定元素。我还读到标准计算机将运行很多年,而量子计算机将在短短几秒钟内完成它。那就是让我最困惑的地方。我如何理解这一点: 假设我们要搜索包含50.000个不同名称的数据库,而我们正在寻找一个名称“ Jack”。标准计算机好几年都不会这样做吗?我认为可能需要几秒钟或几分钟的时间,因为在包含名称(可能是文本)的数据库中进行搜索可能不会花费很长的时间...

python中的示例:

names = ["Mark", "Bob", "Katty", "Susan", "Jack"]

for i in range(len(names)):
    if names[i] == "Jack":
        print("It's Jack!")
    else:
        print("It's not Jack :(")

这就是我的理解。因此,让我们想象一下此列表包含50.000个名称,我们想搜索“杰克”。我想不会很久。

那么格罗弗的算法如何工作?我真的不知道。

1 个答案:

答案 0 :(得分:2)

Grover的搜索确实不能很好地替代传统的数据库查找方法。 (请注意,经典数据库中将包含经典索引,这些索引将加快实现过程之外的查找速度。)您可以在this paper中看到有关Grover搜索的实际应用的讨论。

将oracle视为识别而不是找到的工具是更正确的。例如,如果您想解决SAT problem,则oracle电路将为您要解决的问题的特定实例编码布尔公式。

如果要使用Grover算法进行数据库搜索,则oracle必须对要搜索的条件进行编码,还要对元素是否在数据库中的标准进行编码。例如,如果您要查找以A开头的名称,则oracle需要识别以A开头的所有字符串,但还需要识别数据库中存在哪些字符串-否则该算法将产生一个随机字符串从A开始,这可能不是您想要的。

Grover的算法在推广为amplitude amplification时具有实际应用,它是许多其他量子算法的组成部分。幅度放大是一种提高概率量子算法成功可能性的方法。