写下您的第一个量子计划(常见的LISP)

2021-04-22 11:33:27

量子计算被准备成为颠覆性技术的下一个波之一,这将在互联网所做的方式变换沟通,工业和商业。本领域尚未少数玩家虽然很多球员:谷歌和微软都积极寻求建立量子计算机。 D-Waveof不列颠哥伦比亚省,加拿大声称已经建立了一台量子电脑和工具的开放部分。

最近,传送到无数星际跋涉电影的主题,成为加拿大卡尔加里进行的实验中的电子的现实。量子计算机将能够实现什么?在辩论的主题的同时,我们可以根据量子力学的vaunted特征来推断。 NASA操作量子人工智能实验室,该实验室将运行D波量子处理器。

人工智能,Cryptanalysis&加密,传送和先进的雷达系统,但量子计算的一些潜在应用。

在量子计算机的核心处是Qbit或量子位。它是构成传统计算机存储器的模拟与传统的计算机存储器,并且传统上是0或1. Quantum位,相反,据说在“叠加”中存在,这就是它们可以在两个状态中同时存在。

由于Qbit的Qbit的Qbit的概率是0或1的概率。

alpha是Qbit为零的概率。 Beta是Qbit为1.α和β的概率被称为Qbit的概率幅度。变化的概率幅度,这是至关重要的,这意味着可以在Qbit中编码无限量的信息,从古典计算的主要偏离。

在软膏中有一只苍蝇 - 或者是一只猫,猫是埃尔文鲁道夫约瑟夫亚历山大·施林德​​的想象中的宠物。 Schrödinger假设在一个着名的思想中,实验到量子力学,猫可能同时活着,并不活着 - 在“叠加”中 - 直到观察到的那一点只是通过观察决定了猫的命运。

虽然这一思想实验背后的直觉对人类思考挑战,但可以在英国科学家托马斯年轻人中获得机械师所谓的双重裂缝实验。有趣的是,您可以在家里重复这个实验。

以下是我们现在考虑计算机的方式构建通用量子计算机的含义。计算机使用编程语言编程。大多数,就像Java或C ++先驱报先生,基于现代计算机的Van Neumann架构的编程语言系列。该概念很简单:一组指令由一个或多个处理器执行,并且使用一个或多个输入/输出设备从存储器读取并写入存储器单元。这是一个非常简单,必不可少的编程语言构造:

上面的语句取得了变量x的值,将1添加到它并将结果分配给相同的变量x。让我们想象一下,如果x不是由古典比特表示但是由量子比特表示,则会发生什么。分解陈述的第一步是“取X的价值”。在量子术语中,这意味着“观察x的值”。这样做的问题是它立即坍塌了叠加。因此,这种构造和任何其他类似于它在量子计算中的不可行。大型势在必行编程与量子计算不相容。相比之下,Lambda微积分与量子计算兼容。 Peter Selinger和Benoıtvaliron提出了Quantum Lambda微积分。

那么量子计算机如何编程?理解的D-Wave是关于其系统内部的紧密锁定,但我们可以根据工作广告进行推断。 D-Wave,紧密锁定,已删除广告,但是Wayback Machinesnappotted它。广告说明:

“成功的候选人将负责架构,设计,编程,测试和维护支持D-Wave的量子计算硬件的测试和操作所需的整个软件套件。该软件主要是基于LISP的常见且是量子计算系统的一个组成部分。“

这里建议的是,尽管D-Wave的开源提供了C以及它们的API是Python,但是D波量子计算机本身的内部是用常见的LISP编写的。

虽然Quantum Computing的可扩展性的好处只能在量子硬件上实现,但是在古典计算机中可以非常好地模拟量子计算的基本操作及其概率模型。这意味着鉴于Lambda微积分的实现,可以编程理论量子计算机 - 如果我们想要的只是了解概念并熟悉域名。

让我们来破解......我们将使用QGame,量子门和测量仿真器。 QGame由国家科学基金会(NSF),国防高级研究项目(DARPA)和美国空军研究实验室赞助。在github上,在github上提供了一个非官方的qgame港,在https://github.com/thephoeron/qgame上。我们将使用钢铁银行共同的LISP和Emacs(粘液)的卓越的LISP交互模式。

无需进一步的ADO,这是我们的第一个量子程序:Grover的算法应用于3 Qbit量子系统,以便通过无序数据库进行数据库搜索。我们将详细阐述为什么稍后有趣。

我们正在开始查看构成量子程序的一些核心抽象:门,转换(函数)和Qbits。这些构成了一个图表。上述量子程序的图表如下所示:

但为什么格洛的算法有趣?它解决了什么?想象一下,您有一个商品数据库,您希望找到特定的数据库 - 搜索。计算机科学家转到极端的长度,以详细说明这一算法。首先,大多数数据库确保他们的内容以某种方式排序。存在众多排序算法以使数据易于访问 - 可搜索。但如果数据未被侵蚀,该怎么办?然后怎样呢?我们会对它进行解决,希望与我们想要检索它的方式相关。在典型的数据库中,员工表可能会按“名称”按字母顺序索引,或者我们可能希望被“部门”的内容索引,无论我们的主导使用情况如何。

现在让我们想象一下我们可以同时查看数据库中的所有条目,并将一种成本函数应用于称为Oracle的成本函数,“摇动”答案“一体化?”我们可能不再打扰这些数据库指数,或者询问我们如何在稍后检索该数据的前面的问题。如果您是计算机程序员,您可能知道反映算法复杂性的讨厌的“o表示法”。实际上,这远远超过数据库查找。它归功于组合中的一类问题的核心,这些问题被统称为NP-Tress。 GROVER的算法是一种设计模式,解决了NP完整的问题。将NP完全解决Quantum Search,MartinFürer解决了问题。如果你有了我,你的生活中的大部分时间都在寻找使用算法的艰难问题的最佳解决方案,你将欣赏如何在一旦被证明是能够尝试所有答案的深度。 GROVER的算法是一种达到的量子设计模式。怎么可能,尝试所有答案“一下子”,你问?还记得那些Qbit的无限状态吗?

完全赞赏了这种情况的重力,让我们回到我们的榜样。

我们定义了我们的数据库只是一个零的未缺陷列表。问题:找到1.在经典计算中,平均查找数将平均为1/2 * N.我们的任务将使用Grover的算法找到1“全部”。

这是我们的量子系统:量子计划,3位&我们的投入。执行后的状态是概率,而不是离散,就像经典计算中的情况一样。

...编码我们的系统状态。我们查询Qbits 1和2以“摇动”解决方案。

请注意我们的2 Qbits概率的幅度如何提供我们寻求的数据库中的数字1的位置。这可能不会看起来像一个压倒性结果,因为我们的输入与我们的输出相同。然而,我们已经将数据结构(这里列出)减少到其位表示,其中这些位的值代表了我们问题的解决方案。很容易想象一个16个Qbit解决方案,它在单个32位整数中编码2 ^ 32可能的数据库位置。

这对应于超过40亿可能的数据库条目。我们在这里使用了指数32,因为每个Qbit都有两个可用于编码的幅度。当前量子计算机支持多少Qbits?

我们的图表的第一个元素和我们应用于我们的Qbits的第一个盖茨被称为“Hadamard盖茨”。 Hadamard门形成了“均匀随机”的Qbit,即表示,当测量时,它表现得像一个公平的硬币折腾。当我们尝试并行尝试所有可能性时,这就是我们想要的。把它想象成旋转的两个摇晃的硬币在桌子上。在任何时候,他们都有概率对头或尾部的“倾斜”。然后,当我们“执行”量子程序时,我们用真理表将Oracle应用于Quantum程序 - 如碰撞桌子以解决硬币。实质上,我们使用需要产生输出所需的算法来测试输入,输出为“真相”。我们的算法偏置了硬币将定位的概率模型。这是Quantum算法的反向直观性:我们假设输出并测量(破坏性地观察)将产生该输出的输入。输出是问题。输入是答案。这也被称为单一门的“后部动作”。

在势在必行的计算机编程中,我们具有破坏性的操作(副作用),为给定输入产生可观察的输出。在量子计算中,普遍的成语是假设(输出),其被破坏性观察结果被解析为输入。

在我们的标题中,我们提到了与制造过程的联系。该技术特别适用于供应链优化。优化供应链涉及几种经典的非多项式时间算法问题,例如旅行推销员问题舰队路线优化。通常,这类问题围绕着在给定的约束下找到最佳的最佳,其中组合人产生非多项式时间执行。这正是量子计算解决的问题类。此外,我们可以将一个复杂的并发演员的复杂系统视为一组连续时间序列,以实时优化。由于旅行推销员问题或车队路线优化等问题是计算密集的,因此整个系统将从用作计算输入的任何快照开始。量子计算机具有几乎连续和大规模并行优化的承诺。

该国家首先设法将这项技术集成到其供应链中可以期待显着的经济乘数。 如果您跟进,您刚刚为非如此理论量子计算机写入您的第一个程序 - 在大约25行代码中。 绝对最小值以在没有语法的情况下表达语义。 Quantum编程的另一个有趣应用是素数分子 - 保护互联网的公钥基础设施的核心。 它是安全的,因为在多项式时间内无法完成整数。 Shor的算法解决了这一点。 短裤算法量子图......在遵循这个简单的教程之后,您应该能够识别此处显示的大多数量子门。 如果有足够的兴趣,我很乐意写一下实验演示。