量子计算将如何改变编程?[关闭]


33

编程量子算法有何不同?如果是为qubit设计的,类似C的语言会是什么样?类型会改变吗?


注意:我不确定这是否是有效问题。很抱歉,如果不是这样。
MaiaVictor 2012年

4
我认为是这样。再说一次,我真的不太了解这个站点的规则。而且我对这个问题没有很好的答案,但是我知道该算法可用于更有效地分解
John Davis,

3
我认为尽管这个话题仍在科学研究中,但假想的量子计算机的基础是众所周知的AFAIK,因此该问题应该由领域专家来回答(我不是)。所以我投票决定关闭它。
布朗

Answers:


17

当我前一段时间对此进行研究时,很明显,量子算法虽然不是特别快,但是却允许指数级的大规模并行性。因此,在涉及在顺序硬件,甚至大规模并行顺序硬件不实用的空间中进行搜索的情况下,它们会大放异彩。

量子算法的一个特性是它们必须是可逆的。通过将足够多的记录保持到允许向后运行的方式,可以将任何给定的算法转换为可逆的算法。

另一个特性是,从量子算法中得到答案是一桩偶然的事情,因为在计算结束时得到的是多个答案,每个答案都有自己的概率。它的运行方式必须使您所需的答案具有很高的概率。这可能涉及多次向前和向后运行算法。

查看Grover的搜索算法


插入以显示Grover算法的基本操作。假设存在搜索问题。可能的答案是0、1、2和3,但正确的答案是2。因此,将量子计算机置于所有四个状态的叠加上,并通过一系列步骤来确定哪个是正确的,以及反转其幅度,如下面的黑点和箭头所示:

在此处输入图片说明

您可以看到箭头2在机器内部已被反转,但是无法在外部分辨出来,因为在外部仅可见概率,它们是振幅平方,当平方时都相等。

但是,振幅具有平均值,用红线表示,可以使计算机执行一系列步骤,以使各个振幅围绕平均值反转。完成后,振幅和几率转移到状态2,正确答案!因此,如果观察到机器,则状态2发光。

这不是那么简单。通常,需要花费机器的多个周期(正向和反向),然后在每个周期的末尾反转,才能最大程度地获得正确答案的可能性。另外,必须注意不要重复次数超过此次数,因为它很容易反转。

那么为什么他们说量子计算机如此之呢?因为每次将位数增加一倍,就对并行度求平方,但对时间长度不求平方,因此最终取胜。

那不是很有趣吗?


我个人对如何将其应用于软件正确性验证感兴趣。现在,我们通过向软件抛出大量测试输入并(如果过于简单)来查看软件是否达到了断言,从而对软件进行测试。在量子计算机中,可能有可能对一组更为密集的输入并行运行它,并查看是否有任何情况触及了Assert。

就像算法的输入是128字节或1024位一样,也有2 ^ 1024或10 ^ 308个可能的不同输入。无法在传统计算机上测试这么多输入,但是量子计算机可以并行尝试所有输入。


2
正在检查Grover的搜索算法...天哪!我还没准备好!
菲利普(Philip)

1
@Philip:我知道数学很不合理,但是关键思想是均值的旋转,这具有将概率转移到答案状态的作用。然后,您从头开始,向前奔跑,然后再次执行一定次数。然后,如果您进行观察,则可以最大程度地看到答案状态。
迈克·邓拉维

你看,这么说真的还不错。我猜我不熟悉他们使用的符号或量子电路。关于量子算法的页面同样令人生畏。我相信Qubit是一个起点。(简单的Wikipedia在Quantum计算机上有一个页面,但它可能需要一些工作)
Philip

@Philip:假设您有一个1024个条目的表,因此它需要10位索引。您有一个10位(qu)位寄存器,并且它具有1024种可能的状态。OK,所以您创建一个Universe,其中寄存器为0,另一个寄存器为1,最多1024个并行Universe。然后,量子“指令”并行地对所有这些指令进行操作。每个宇宙都有一个“幅值向量”,其幅值是它的概率,但是它也有一个方向,那些正被操纵。由于1024个向量的集合具有一个非零的平均向量,因此旋转使一个变大,其余的变小。
Mike Dunlavey 2012年

我是一位改革的物理学家,我否决了这个答案,因为它具有误导性。1)量子算法经常特别是(渐近)快-格罗弗的搜索算法运行在O(开方(N)),而传统计算机能做的最好的是O(n)。如果量子计算机没有渐近速度,它们将不会很有趣。硬件可能现在很慢,但这不是算法的问题!
本杰明·霍奇森

7

如果是为qubit设计的,类似C的语言会是什么样?类型会改变吗?

这将是如此巨大,以至于无法像C一样理解。

主要问题(据我了解)是,量子计算不能以一种很好的命令性方式工作:“先做到这一点,再做到那件事,然后再做这件事”。试图将C的能力强加到量子计算机的“处理器”中,即使不是不可能的,也将导致效率低下。

量子计算机的编程算法(再次,据我所知)往往更接近于函数式编程样式映射/归约,因为量子计算允许“归约”部分中的所有候选者同时存在并“退出”计算机当观察时。

请注意,即使不存在运行量子计算机的设备,也存在一些用于量子计算机的现有算法。例如西蒙的算法


量子算法的ELI5会很棒。
MaiaVictor 2012年

3

为了最有效地利用量子计算机,人们需要能够处理作为量子寄存器状态的输入和输出,对于这种输入和输出,实际上并没有经典的类似物。从量子信息领域的多年经验谈起,我必须警告您,除了C *代数的抽象数学之外,没有人真的对此有一个很好的直觉,而且我被告知,即使这种直觉也证明是不够的如果您开始怀疑相对论。

对于有界量子多项式,在量子计算机上可以有效解决的一类问题称为BQP。这是BPP的量子版本,您可以在本文中找到更多信息:http : //www.scottaaronson.com/papers/bqpph.pdf

量子算法研究人员昨晚才告诉我,有一个非常重要的问题是BQP完全的:求解一个由N个方程组成的线性系统。传统上,这可以通过高斯消除在O(N)步骤中解决。Harrow-Hassidim-Lloyd算法(http://arxiv.org/abs/0811.3171)使用polylog (N)解决了该问题,只要您愿意接受一个答案,且该答案的解编码为量子态即可。如果要充分利用量子计算机,那么似乎有必要具有与量子寄存器的状态相对应的类型。

尽管我现在还不擅长于我的专业知识,但我会猜测,只要您能够访问与魔术状态相对应的类型,就可以对量子计算机进行编程。但是,这是一个困难的概念,需要对此主题进行一些研究。

警告我们拥有量子编程语言已经很长时间了,因为我们处于量子计算研究的非常原始的阶段。现在问量子C就像去Alan Turing并要求他设计Python。我们甚至还没有真空管的量子版本!

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.