python 量子计算包_当今的量子计算机编程

本文探讨了量子计算的快速发展,介绍了量子体积作为评估量子计算机性能的指标。文章指出,为量子计算机编程不需要高级物理背景,而是需要理解和应用量子逻辑门。目前存在多种编程方式,包括量子汇编、经典语言的量子库(如IBM的Qiskit、谷歌的Cirq、Rigetti的Pyquil)以及独立的量子编程语言(如微软的Q#、Quipper)。建议初学者从经典编程语言的量子库开始,逐渐过渡到量子编程语言和汇编级别。
摘要由CSDN通过智能技术生成

56c3235d13b35e89c2c526a39c1ce7cd.png

怎样开始从事当代量子计算机的工作

4540b6d416dbad562c2746ce5e5377c2.png
图片来源:Unsplash,Hunter Harritt摄

量子计算是发展最迅速的科技之一。许多公司和研究实验室都在激烈地竞争,力求尽快将功能量子硬件推向市场。在这个领域,任何微小的进步都是重要的进展。

目前,还没有出现完美的量子计算机,能够运行诸如秀尔算法和Grovers算法这类前景广阔的算法。然而,当今的量子设备进展迅速。美国国际商用机器公司(IBM)推测未来的几十年里,量子计算机将提供一个不可否认的优势,它可以解决许多经典计算机无法解决的问题。

在2019年,美国国际商用机器公司提出了一个衡量量子计算机功能性和有效性的度量标准,并称之为量子体积(QV)。量子体积是基于不同的因素计算出的数字,例如计算机中量子位的数量、之间的连通性和测量误差概率。要在实际的硬件中运行日常大小的算法,我们需要巨大的量子体积。可供参考的是,目前美国国际商用机器公司拥有的设备中最高的量子体积是32。

在软件方面,一些研究者预测未来十年里量子程序员的市场需求会指数型增长。诸如谷歌、美国国际商用机器公司和微软的公司正在投入大量的精力和资金来培训下一代的量子研究者/程序员。

给量子计算机编程不需要物理或数学的高学位。在我看来,你只需要拥有丰富的想象力。

经典编程vs.量子编程

8d30a832e99a08a50dd6e53c28987b65.png
图片由作者提供(通过Canva制作)。

量子计算机的运行模式与经典计算机完全不同。我们用简单的方式来谈谈这个差异:经典计算机中有0和1。然而,在量子计算机中,会有0、1,或是“可能是0或1”,这叫做叠加。所有的量子算法凭借这个“可能”的状态来展现量子计算机的全部功能。如今,给量子计算机编程有点类似在20世纪50年代为经典计算机编程——以一种接近汇编语言的方式,但使用更好的语法。

这听起来很有挑战性,因为汇编语言并不容易。事实是,如果你知道基本量子逻辑门以及量子比特和叠加的意思,就能开始量子计算机的编程。要写出合适的量子代码,你不必深入研究物理学。

969f1a3b63897b0d31e62354fbe653bc.png
图片由作者提供(通过Canva制作)。

量子计算机编程的可选方式

公司和研究实验室一直在努力开发一种高级的量子编程语言,这种语言不需要程序员非常熟悉量子物理和量子力学。当前,经典编程语言的独立量子编程语言和量子库比你想象得更多。

所以,可供选择的方式会是在量子汇编级别上编程,通过经典编程语言利用库进行量子计算,或是运用纯粹的量子编程语言。接下来会列出每个范畴中最广为人知/使用最广泛的选项。

4a0b1525ebfc8256f694f9fa29b516a2.png
图片由作者提供(通过Canva制作)。

汇编层级的量子编程

QX模拟器:这个模拟器用来模仿通用量子计算机的行为。它可以让程序员设计并模仿量子算法。要利用QX模拟器来执行算法,程序员需要依照量子汇编语言(QASM)描述算法流程。

附带量子库的经典语言

运用经典编程语言编写量子代码有很多选择方式。下面根据受欢迎程度将其排序。

  • Qiskit:Qiskit(量子信息科学工具包)是2017年由IBM研究会开发维护的Python库建设。它是最受欢迎、使用最广泛的量子编程库。Qiskit受欢迎的原因之一是其活跃繁忙的社区。你也可以在实际的IBM量子计算机上运行Python代码。
  • Cirq: 这是一个由谷歌开发的非官方Python库,测试都在谷歌的量子计算机上进行编写和运行。Cirq可以用来编写和模拟量子算法。然而,谷歌不允许其他人使用他们的设备运行代码。
  • Pyquil: 由Rigetti建立的一个Python库,可使用叫作 Quil(同样由Rigetti开发)的量子指令语言在Rigetti设备上编写和执行量子算法。Quil在语法上与QASM相似。
  • Scaffold: 有别于Python,Scaffold是可用来在经典设备上编写和运行量子算法的C++库。
  • Strange: 这是可编写和运行量子算法的Java应用程序接口。Strange通过传统的Java分布频段分布,利用Maven或Gradle简化其使用。

还有更多基于经典编程语言的量子库,但是很多都过时了,或是开发停滞了。

量子编程语言

为了在经典编程语言的基础上有所发展,建立独立的量子语言,研究者们已经从事开发与著名的经典语言在语法上相近的量子编程语言。这简化了从经典编程到量子编程的过程。这些语言有:

  • Q#:这是由微软开发的量子编程语言,能够编写并执行量子代码。这是微软的量子开发工具包(QDK)的一部分。这份量子开发工具包包括单独的模拟器和电路优化器。
  • Quipper: 这是个嵌入式的量子编程语言,它支持功能性量子编程,相比汇编语言,使得程序员能在更高层级上描述算法。在当前的理论研究中,Quipper还包括了七种应用量子算法。
  • Sliq: 这是最新的量子编程语言,在今年年初发行,由苏黎世联邦理工学院(ETH Zürich)的研究人员开发。Sliq提供了量子算法的高层级表达,语法与Python和C++相似。

如何开始

拥有如此多的选择,你可能会在尝试选择量子旅程的开端时感到不知所措。这是我的建议:以你熟悉的建立在经典编程语言基础上的库为开端。等到你习惯了量子的逻辑和思维方法,再转而使用纯粹的量子编程语言。

如果我想深究量子计算机的工作方法和量子逻辑门之间的动态,我会仅仅考虑使用低层级的语言(例如QX模拟器)。

我在一开始使用了Qiskit,现在仍广泛地使用它——不仅仅因为它是Python的形式,更因为我能在真正的量子计算机上运行我的代码。确实,目前的结果并不好,但能真正在量子计算机上运行代码仍是个有趣的事实。

为了让事情简单化,在执行量子代码时使用上述提及的九种方法吧。你可以检测电路执行的不同方式,并决定从哪一个开始更有趣。

目前,在多数的量子编程中,利用量子门建立一个运用你算法的电路就等同于经典门。我们要尝试执行构建两个量子位间叠加的量子电路。要做到这点,你需要了解魔力之门——构建叠加的门。它叫做哈达玛门。你向它输入0或1,会输出0和1的同等叠加

1. 使用QX模拟器:

33acbd28becc13db1624612681f07dbb.png
图片由作者提供(通过Canva制作)。

2. 使用经典编程语言库:

323ada73fe7581b97160d4e3d02f3e60.png
图片由作者提供(通过Canva制作)。

3. 使用纯粹的量子编程语言:

6b6acbdb9c2c7aa9fd27120193942a54.png
图片由作者提供(通过Canva制作)。

结语

我热衷于学习和探索新事物,但我也知道我们在一个时间点集中力量学习一件事会表现得更好。

这就是我建议你在开始的时候使用基于经典编程语言的量子库的原因。在这个过程中,你只专注于习惯量子的思维方式,并没有同时学习怎样使用专门的编程语言。一旦你习惯了量子逻辑,就开始使用量子编程语言。当你进入了舒适圈,想进一步拓展知识,那么请继续探索量子汇编语言吧

参考来源:

https://medium.com/better-programming/program-a-quantum-computer-today-a62de23268f0​medium.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值