量子信息与量子计算_动手看量子计算

量子信息与量子计算

尽管量子比特数量少,衰减率高且有大量噪声,但1980年代提出的量子计算才刚刚开始可用。 正如我们将要讨论的那样,IBM和Microsoft开始在其云中提供量子计算机和量子模拟器访问。

在其他地方,Google已在其实验室中展示了量子计算功能(并声称具有量子至上性 ),但尚未宣布公开访问。 英特尔也在开发量子芯片和系统,但尚未宣布商用。

[ InfoWorld的2020年度技术奖获奖者:年度最佳软件开发,云计算,数据分析和机器学习产品 ]

量子计算定义

量子位是量子位。 经典位具有两个可能的值0和1。量子位可以具有无限多个值,所有这些值都是两个经典状态的组合或叠加。 范数为1的任何实数或复数的二维列向量都表示一个量子位所持有的可能的量子状态。

您可以将其以3D形式描绘为位于单位球体表面(称为Bloch球体 )上的向量的矢量(请参见下图)。 当您以叠加态测量量子位时,量子态将随机分解为两个经典态之一。 您也可以将qubit显式设置为经典值(0或1)。 测量具有经典值的量子位不会影响其状态。

量子信息与量子计算_动手看量子计算_第1张图片 微软

三种量子力学性质-叠加,纠缠和干涉-用于操纵量子位。 叠加是经典状态的组合,本质上允许它们同时存在直到被测量。 纠缠是爱因斯坦著名的“远距离怪异行为”。 测量时,两个纠缠的量子位始终具有相同的状态。 干扰可以是建设性的或破坏性的。 在量子计算机中,相长量子干扰用于放大导致正确答案的信号,相消量子干扰用于消除导致错误答案的信号。

量子门或单量子位算子的主题很快就获得了技术性的支持。 如果您进行了复杂的分析,线性代数和量子力学,那么您应该可以按照此讨论进行操作 。 如果没有,请假定存在单量子位运算符,包括基本的Hadamard门和T门,它们可以组合成更大的Clifford门。 多个量子位可以纠缠; 这对于包括量子隐形传送和量子纠错在内的许多量子协议都是必不可少的。

量子算法

如果我们拥有具有足够量子位,足够长的相干时间和足够低的错误率的量子计算机,那么已经提出了几种量子算法,它们应该比经典算法更快。 例如, 由罗夫·格罗弗(Lov Grover)在1996年设计的 格罗弗(Grover)算法以O(√N)个步长求函数的逆。 它也可以用于搜索无序列表。 它比传统方法(需要O(N)个步骤)提供了二次加速。

Peter Shor在1994年设计的 Shor算法可找到整数的素因子。 它以log(N)的多项式时间运行,使其比经典的通用数字字段筛网快几倍。 当存在量子计算机具有“足够”的量子位(确切数量取决于要分解的整数的大小)而没有量子噪声和其他噪声时,这种指数级加速有望最终打破诸如RSA之类的公钥加密方案。量子退相干现象。

量子至上

量子优势是量子计算机可以快速执行有意义的操作的条件,而传统计算机将花费很长时间。 谷歌于2019年10月要求进行量子至上计算,以计算随机性; IBM指出,经典的超级计算机可以在几天内完成相同的计算,而不是Google估计的10,000年。 无论如何,谷歌展示的无论多么令人印象深刻的不是通用的量子计算,使用RSA加密的人们至少不必担心。

[ 也在InfoWorld上:2020年的人工智能预测 ]

Microsoft Q#,Quantum开发工具包和Azure Quantum

Microsoft Quantum Development Kit ( QDK )包含Q#编程语言,一组抽象化Q#中复杂功能的库,用于Python和.NET语言(C#,F#和VB.NET)的API,用于运行编写的量子程序在Q#中,以及用于促进开发的工具。 您可以在Windows,Linux和macOS上为C#安装Q# , 为Python安装Q#和/或为Jupyter Notebook安装Q# 。

在自己的计算机上运行Q#时,必须使用量子模拟器。 如果在Azure上运行它,则最终将可以连接到由低温冷却的纳米线构建的实际量子计算机(请参见下图)。 微软表示,量子访问预览版将在2020年的某个时候推出。

量子信息与量子计算_动手看量子计算_第2张图片 微软

Q#的“ Hello,World”程序生成随机整数。 本质上,它的工作原理是将通过Hadamard门的量子比特设置为一个量子叠加,该量子叠加在被测量时(返回贝尔状态)可能等于返回0或1,然后将这些“ H”和“ M”操作重复多次。需要生成所需范围内的整数。 在Q#中,用于生成随机位的量子操作代码如下所示:

namespace Qrng {
    open Microsoft.Quantum.Intrinsic;
    operation SampleQuantumRandomNumberGenerator() : Result {
        using (q = Qubit())  { // Allocate a qubit.
            H(q);             // Put the qubit to superposition. It now has a 50% chance of being 0 or 1.
            let r = M(q);     // Measure the qubit value.
            Reset(q);
            return r;
        }
    }
}

您可以通过Python或.NET语言(例如C# )调用此Q#代码在量子计算机上运行(或者最终可以运行)或量子模拟器(现在)上运行。

IBM Q和IBM Qiskit SDK

IBM Q Experience(请参见下面的屏幕截图)提供了两种创建量子电路的方法:Circuit Composer(一种图形化的拖放环境)和Qiskit Notebook(使用Python和Jupyter Notebooks在代码中创建电路)。 两种方法的效果相同,但是如果您在Windows,Ubuntu或macOS上安装Qiskit SDK,也可以在自己的计算机上运行Qiskit笔记本。

量子信息与量子计算_动手看量子计算_第3张图片 IDG

IBM的“ Hello,World”电路使用Hadamard门(H)将量子位0设置为叠加的贝尔状态,并使用CNOT门(CX)纠缠量子位0和1。然后,它两次测量了两个量子位。 预期的答案应该大约是[0,0]和一半[1,1]的一半,几乎没有[0,1]和[1,0]。

[ 也在InfoWorld上:用于AI开发的6种最佳编程语言 ]

如果您使用带有模拟器后端的Qiskit路线,则该实验看起来像下面的屏幕截图:

量子信息与量子计算_动手看量子计算_第4张图片 IDG

您可以从在线IBM Quantum Experience中的电路图开始,然后将四个门拖动到该图中以完成相同的操作。

量子信息与量子计算_动手看量子计算_第5张图片 IDG

但是,您可以在此处以图形方式选择后端以及运行电路更改代码的次数。

量子信息与量子计算_动手看量子计算_第6张图片 IDG

在模拟器上运行,我们仅测量[0,0]和[1,1]状态。 这是完美的,但并不代表现实生活中的量子电路噪声。

量子信息与量子计算_动手看量子计算_第7张图片 IDG

让我们尝试在IBM Q Armonk上运行相同的电路。

量子信息与量子计算_动手看量子计算_第8张图片 IDG

它没有转。 为什么? 糟糕:那台量子计算机只有一个量子位,而我们需要两个量子位。 难怪没有队列可以使用它。

量子信息与量子计算_动手看量子计算_第9张图片 IDG

让我们尝试一下IBM Q Burlington,它有五个量子位。

量子信息与量子计算_动手看量子计算_第10张图片 IDG

现在,我们看到了现实生活中的行为:量子误差使我们获得了约20%的无纠结结果。 请注意,对于这种小电路,我们没有使用真正的量子计算机来节省任何时间:我们不仅必须在队列中等待近两分钟,而且还使用了10秒的运行时间,在模拟器上我们等待了队列等待一秒钟,并使用了4毫秒的运行时间。

[ 通过InfoWorld Daily新闻通讯了解软件开发,云计算,数据分析和机器学习方面的最新发展 ]

这种总结概括了我们现在使用量子计算的情况:公众可以访问的现有量子计算机具有少量的量子位和显着的错误率。 人们正在努力实现量子误差校正和更长的量子位状态衰减时间,但是两者都很难。

开放试用后,我将有兴趣试用Microsoft的Azure Quantum。 根据微软的说法,其超导纳米线拓扑量子位在线的末端产生马约拉纳粒子,其固有的错误率应低于IBM的约瑟夫森结量子位。

翻译自: https://www.infoworld.com/article/3532452/a-hands-on-look-at-quantum-computing.html

量子信息与量子计算

你可能感兴趣的:(量子信息与量子计算_动手看量子计算)