量子计算






4.90/5 (35投票s)
2006年2月1日
9分钟阅读

114465
初步了解量子计算。一种有趣的看待计算机器的方式。
为什么写这篇文章?
我们编写软件的方式受到计算架构和技术进步的驱动。随着计算技术的进步,开发人员从编写汇编代码,到高级 C/C++ 代码,再到大规模并行算法,再到非常大规模的分布式 SETI 类软件。下一代技术之一就是量子计算。自 20 世纪 60 年代以来,量子计算在密码学和通信服务器领域已经崭露头角。
量子计算机具有独特的工作原理,并带来了在量子图灵机上运行的全新算法。我们今天的许多开发人员社区实际上可能会有机会为量子计算机编写软件。所以我想,我会与 CodeProject 社区分享我的学习成果,并激发一些对量子计算的兴趣。
抱歉,目前没有源代码。家里还没有量子硬件和编译器 :)。
目录
计算:一种不同的视角
想象一下,我们正在编写一个 C++ 程序来模拟用手投掷的金属球的轨迹。我们的软件以高度、速度和质量作为输入,并使用重力和一些方程来计算行驶的距离作为输出。现在,我们在源代码中编写的所有复杂花哨的东西实际上对大自然来说是“自然而然”的。所以我们可以“只扔一个球”,给定质量、高度和速度,然后“测量”它落在哪里——大自然会为我们“计算”出行驶的距离。很有趣,不是吗?大自然一直在这样做。
那么,为什么不利用大自然的计算优势呢?这正是物理学家们所想的,作为当今晶体管和翻转触发器计算机的替代方法,他们设计了新的机制来使用物理系统“进行计算”。
让我们通过一个例子来理解物理系统计算机。
平方计算机器
图 1 显示了斜坡上的一个球。伽利略在 17 世纪进行了这个实验。他测量了球下落的距离与时间的关系。t=1, 2, 3 单位时间时,下落距离是单位时间内下落距离的 1, 4, 9 倍。
图 1. 平方计算机器。
注意:后来,牛顿用运动定律证明了其控制方程是:下落距离 = u*t - 0.5*g*t2,当球从静止开始时,u = 0。
现在,让我们将自己视为这个系统的操作员。所以,用户可以告诉我们一个数字,我们可以滚一个球,然后告诉他们该数字的平方。这就是物理系统“进行计算”的方式。
让我们了解物理系统与经典计算机的比较。
经典计算机与物理系统
图 2 比较了这两个实体。
图 2. 经典计算机与物理系统。
经典计算机接受一些输入,应用一套规则,然后给出输出,从而执行计算。相比之下,物理系统具有初始状态,它遵循运动定律(物理学),并通过某种运动或物理作用达到系统的最终状态。系统的任何最终状态都包含有关系统初始状态及其自那时以来发生情况的信息。由于任何物体的运动都受确定的定律支配,因此它可以被视为信息处理。因此,从初始状态达到最终状态就是信息处理。
现在,我们有了一种不同的计算视角。让我们开始理解量子计算的术语。
量子比特
在我们定义一些术语之前,这里有一个简要的背景和装置。
光子(光粒子)是量子计算机的基本功能单元。光子受量子力学定律的支配。光子及其在量子计算机中的行为由多重宇宙理论建模。休·埃弗雷特于 1957 年提出了多重宇宙理论。解释现实世界日常物体的经典物理学是多重宇宙理论的近似。经典计算也称为图灵计算。
图 3 显示了一个装置。一个分束器将入射光子分成两部分。每部分称为一个不确定的光子。分束器也可以将不确定的光子合并成一个确定的光子。镜子以相同的“确定性”反射光子——所以如果一个不确定的光子撞击镜子,反射的光子也是不确定的,对于确定的光子也是如此。
图 3. 光子分束器和镜子。
输出由另一个称为光子探测器的有趣装置检测。如果光子入射到它上面,它会输出高电压,否则,它会输出低电压。光子探测器是一种破坏性的测量量子实验结果的方法,但仍然非常有用。
轻松地说,尼尔斯·玻尔(诺贝尔奖得主)曾经说过:“任何没有被量子理论震惊的人都没有真正理解它!”:)
量子比特
量子比特是量子位。量子比特可以是一个简单的光子。量子比特是受量子力学定律支配的量子系统。与基于翻转触发器的经典比特一样,我们可以在量子比特上执行四种基本操作。
- 设置一个量子比特。
- 重置一个量子比特。
- 翻转一个量子比特。
- 空操作(什么都不做)。
量子比特具有明确的操作代数。这种代数称为量子比特的静态构成。系统的动态构成是运动定律。
量子可观测值
量子可观测值是可以在量子系统中观测到的实体。在经典现实世界中,其等价物是长度、角度、温度等。然而,量子可观测值不仅仅是一个数字。它是我们在一个宇宙中观察到的,以及它在多重宇宙中的所有对应物。量子可观测值包含有关多重宇宙物体结构的信息。
量子比特是最小的物理系统,其中所有可观测值都可以是布尔值或单位可观测值的倍数。
对量子比特有一些非常独特的操作。这些操作无法在经典比特上执行。
让我们学习其中一种独特的操作。
量子比特操作示例
图 4 显示了一个量子计算设置。两个分束器 B1 和 B2 在同一平面上。镜子 M1 和 M2 相对。有两个光子探测器——一个在顶部,一个在右侧。光子从左侧入射。
图 4. 量子比特操作示例。
量子可观测值 (Q)
- 如果光子沿屏幕X方向移动,即从左到右,则Q为1。
- 如果光子沿屏幕Y方向移动,即从下到上,则Q为0。
实验分析
- 光子从左到右入射到 B1。这是一个束操作B。Q 为 1。
- B1 将光子分成两个不确定的光子 P1 和 P2。
- 不确定的 P1 入射到镜子 M1,不确定的 P2 入射到镜子 M2。
- M1 将 P1 的方向从 1 改为 0。M2 将 P2 的方向从 0 改为 1。这是一个NOT操作。
- B2 将 P1 和 P2 合并成一个确定的光子。
- 实验表明,右侧的光子探测器总是触发——表明结果是沿右侧方向移动的光子。这也可以通过量子代数、厄米矩阵和期望值函数来证明——为简化起见省略。还记得玻尔 :)吗?这也是一个束操作B。Q 为 1。
- 请注意,量子可观测值 Q 保持不变。
对于上述实验,我们可以将量子操作写为:B·NOT·B = I(读作 B 后面跟 NOT,再跟 B,结果是 I)。I 是恒等可观测值(类似于经典代数中的 1)。I 表示不变。
请注意,B·NOT·B 在经典计算机中没有等价物。经典计算机中没有操作,在执行了其前后两次否定后,会产生不变的结果。
图 5. 独特的量子操作。
另请注意,实验的另一个结论非常奇怪
图 6. NOT 的平方根。
这个NOT 的平方根也是一个有趣的操作,在量子计算理论中有很多有用的应用——值得另一篇文章!:)
到目前为止,即使你能欣赏量子计算非常不同,并且它系统地建立了计算规则,也就足够了。经典计算机只是量子计算的一种近似。
量子计算的应用
量子计算不会帮助我们进行a+b的计算,或实现 MFC/C++ 应用程序。研究人员正在努力找出量子计算机能提供显著加速的计算问题。
- 有证据表明,即使对于量子计算机来说,NP 难问题仍然很困难;这些问题包括旅行商问题,或许多其他优化问题。
- 对于一些不是 NP 难但又不知道能否在经典计算机上以多项式时间解决的问题,计算时间将可能实现指数级加速。其中最重要的是 Shor 算法:对一个 100 位数的数字进行因式分解。经典计算机需要 1024 年,而量子计算机可以在 20 分钟内完成!如果你意识到 Shor 算法(及类似算法)是稳健的加密应用的关键,那么这是一个巨大的进步。
- 数据安全和搜索应用的指纹识别:仅 40 个量子比特就可以为一本 1000 页的小说制作指纹。
- 量子通信和高速、安全的网络。
此外,还有一些非常具有未来感的应用,例如分子的“谷歌”——Paul Benioff 对此类量子机器人进行了一些基础研究。
当然,可能性是无限的。未来将比我们可能想象的要令人兴奋得多!
资源
关于量子计算的优秀参考资料可以在下面找到
致谢
Christoph Dürr 提供了量子计算机可以解决的计算问题的确切细节。感谢 Christoph。
您的评论、建议,都欢迎!要么给我发封邮件 Suchit.Tiwari@Ge.com,要么在这里发表评论。我将非常乐意与您取得联系。