【独家专场直播】字节、阿里、百度专家深入探讨 AI 创新的实际落地场景和关键技术 了解详情
写点什么

物理不好,如何给量子计算机编程?

  • 2020-10-21
  • 本文字数:3333 字

    阅读完需:约 11 分钟

物理不好,如何给量子计算机编程?

量子计算是如今发展最快的科技之一。许多公司和研究实验室都在尽可能快地向市场发布功能强大的量子硬件。在该领域取得的每一点进步都意义重大。


当前还没有绝对完美的量子计算机有能力运行可靠的算法,例如 Shor 算法和 Grover 算法等。然而,现在的量子机器正在迅速的进步。IBM 公司表明,在下一个十年,量子计算机将具备不可否认的优势,足以解决很多传统计算机无法解决的问题。


在 2019 年,IBM 提出了一种度量标准,叫做 Quantum Volume(QV)。该标准是从硬件的角度去衡量一个量子计算机的能力和有效性。QV 是一个基于不同因子计算所得的数值,例如计算机中量子位的数值、它们的连接性以及错误率的度量等。如果我们需要在实际的硬件上运行真实世界规模的算法,我们就需要一个很大的 QV 值。到目前为止,IBM 公司拥有 QV 值最大(32)的设备。


从软件的角度来说,一些研究人员预测,未来十年市场对于量子编程人员的需求将会呈指数级增长。例如 Google、IBM 和 Microsoft 等公司将会投入大量的财力和巨大的努力去培养下一代的量子研究人员和编程人员。


事实上,为了建立一个量子计算机,你不需要在物理和数学领域具备很高的学位。在我看来,你只需要具备很好的想象力即可。

传统编程 vs. 量子编程


图片来自作者(使用 Canva 绘制)


和传统计算机相比,量子计算机的运行基于一种完全不同的模式。用一种简单的思路来理解就是:在传统计算机中,我们使用的是 0 和 1 两个数字。而在量子计算机中,在原有 0 和 1 的基础上,还增加了一个”可能为 0 或者 1“的状态,也被称作"叠加态"(superposition)。所有的量子算法都是利用了这种“可能”的状态来表现量子计算机的强大能力。如今,量子计算机的编程有点像 1950 年代时我们对传统计算机的编程——虽然采用了类似于汇编语言的风格,但是具有更好的语法。


汇编语言并不简单,所以这似乎听上去很有挑战性。但实际情况是,当你了解了基本(https://towardsdatascience.com/take-your-first-step-into-the-quantum-realm-a13e99fab886)的定义,以及量子位和叠加态的意义(https://medium.com/digital-diplomacy/the-three-pillars-of-quantum-computing-d80ff5f50ec7)后,你就可以开始为量子计算机编程了。这也就是说,实际量子代码的编写并不需要对于物理有很深层次的掌握。



图片来自作者(使用 Canva 绘制)

为量子计算机编程的方法有哪些

无论是公司还是研究实验室都在致力于开发一种高级的量子编程语言,使程序员可以不需要非常熟悉量子物理学和量子力学就能够使用。事实上,现如今存在的量子编程语言和在传统编程语言基础上建立的量子编程库的数量可能比你想象的还要多。


因此,你的选择要么是在量子汇编的级别上编程,要么是使用一个基于传统编程语言的、用于量子计算的库,或者也可以使用一个纯粹的量子编程语言。我在下图中列举了在每一个类别中最广为人知和使用最广的选择。



图片来自作者(使用 Canva 绘制)


汇编级别的量子编程



具有量子编程库的传统编程语言


使用传统编程语言去写量子代码已经有很多的选择。我将会按照受欢迎的程度进行排序。


  • Qiskit(https://qiskit.org/):Qiskit (Quantum Information Science Kit)是一个诞生于 2017 年的 Python 库,由 IBM Research 负责开发和维护。它也是最受欢迎和使用最广泛的量子编程库。Qiskit 很受欢迎的其中一个原因是它具有非常活跃和繁荣的社区。并且你还可以在 IBM 的真实的量子计算机上运行你用 Python 写的代码。

  • Cirq(https://github.com/quantumlib/Cirq):这是一个由 Google 的开发者们开发的非官方的 Python 库,用于在 Google 的量子计算机上编写和运行测试。你可以使用 Cirq 来编写和模拟运行量子算法。不过 Google 并不允许任何人在他们的设备上运行代码。

  • Pyquil(https://github.com/rigetti/pyquil):这是一个由 Rigetti 编写的 Python 库,可以在使用量子指令语言 Quil(同样由 Rigetti 开发,https://arxiv.org/abs/1608.03355)的 Rigetti 机器上编写和实现量子算法。Quil 在语法上类似于 QASM。

  • Scaffold(https://www.cs.princeton.edu/research/techreps/TR-934-12):Scaffold 是一个从 Python 迁移到 C++的库,可以用于在传统机器上编写和运行量子算法。

  • Strange(https://github.com/redfx-quantum/strange):这是一个可以用于编写和运行量子算法的 Java API。通过使用传统的 Java 分布式渠道使得 Strange 可以是分布式的,并且通过利用 Maven 或者 Gradle 可以使得它用起来非常简单。


事实上还有一些其他的基于传统编程语言的量子编程库存在,但是他们中的大多数已经过时或者在某一时刻已经停止了开发,这里就不再赘述。

量子编程语言

为了摒弃传统编程语言并建立独立的量子编程语言,研究人员已经开发出了在语法上和著名的传统语言相类似的量子编程语言。这也简化了从传统编程到量子编程的转换过程。这些语言包括:


  • Q#(https://docs.microsoft.com/en-us/quantum/overview/what-is-qsharp-and-qdk?view=qsharp-preview):这是一个由 Microsoft 开发的用于编写和执行量子代码的量子编程语言。它是 Microsoft’s Quantum Development Kit(QDK)的一部分。QDK 包括一个分离的模拟器和电路优化器。

  • Quipper(https://www.mathstat.dal.ca/~selinger/quipper/):这是一个支持函数式量子编程的嵌入式量子编程语言,同时允许程序员采用比汇编语言更高级的方式去描述他们的算法。Quipper 也包括七个已经实现的、基于当前理论研究的量子算法。

  • Sliq(https://silq.ethz.ch/):这是最新的量子编程语言,由 ETH Zürich 的研究员们开发并于今年早些时候发布。Sliq 可以提供量子算法的更高级别表征,且其在语法上类似 Python 和 C++。

如何开始

有了这么多选择,你可能会对于应该选择从哪开始你的量子旅程感到不知所措。我的建议是:从一个基于你曾经使用过的传统编程语言编写的量子编程库着手,慢慢适应了量子逻辑和思考方法后,再转到一个纯粹的量子编程语言上。


只有在我想深入了解量子计算机的工作原理和门之间的动态关系时,我才会考虑使用一个低级别的语言(例如 QX Simulator)。


我是从 Qiskit 入手的,而且今天仍然用得很多——不仅因为它是用 Python 写的,还因为我可以在一个真实的量子计算机上运行我的代码。虽然目前为止结果依然很糟,但可以在真实的量子计算机上运行你的代码仍然是非常有趣的事。


为了方便说明,我们使用之前提到的九种方法来实现相同的量子代码。你可以分析实现一个电路的不同方法,来选择你觉得有趣的那一个入手。


在当前的很多量子编程里,你需要搭建一个使用量子门(等同于经典门)的电路来应用你的算法。让我们来尝试实现一个可以在两个量子位之间创造叠加态的量子回路。为了完成这个任务,你需要了解用于创建叠加态的“魔法门”,称为 Hadamard Gate。输入 0 或者 1,它将会返回一个 0 和 1 的对等叠加态。


  1. 使用 QX Simulator:



图片来自作者(使用 Canva 绘制)


  1. 使用基于传统编程语言的库



图片来自作者(使用 Canva 绘制)


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



图片来自作者(使用 Canva 绘制)

结论

我是一个喜欢学习和探索新事物的人,但我同时也明白,我们需要在一个时间点把自身的能量专注学习一件事才能表现得更好。


这也是我建议你可以从基于传统编程语言的量子编程库着手的原因。这样,你只需要关注量子的思维方式,而不需要同时学习一种特定的编程语言。当你适应了量子编程的逻辑后,再去关注一个量子编程语言,就会容易得多。在这之后,如果你还想进一步拓展你的知识,就可以继续往下走去探索 QASM 了。


参考文献


  1. A. W. Cross, L. S. Bishop, S. Sheldon, P. D. Nation, and J. M.Gambetta,“Validating quantum computers using randomized model circuits.”

  2. Wexelblat, Richard L., ed. History of programming languages. Academic Press, 2014.


原文链接:


https://medium.com/better-programming/program-a-quantum-computer-today-a62de23268f0


2020-10-21 10:085202

评论

发布
暂无评论
发现更多内容

IntelliJ IDEA激活教程,2024年永久破解方法

大师兄

IDEA idea激活码 idea破解教程

如何在Kubernetes集群中设置动态NFS配置

百度搜索:蓝易云

NFT铸造挖矿交易系统开发部署搭建

V\TG【ch3nguang】

深度挖掘 1688 商品评论数据接口,洞察用户心声

tbapi

1688商品评论接口 1688API

黑神话 悟空|风灵月影 V1.0-35项修改器

理理

智源研究院推出全球首个包含文生视频的模型对战评测服务

智源研究院

深智城基于超融合数据库MatrixOne的一站式交通大数据平台改造

MatrixOrigin

数据库 深圳

生成式AI的天命:“不疯魔,不成活”!

博文视点Broadview

“创造神迹” -> “打造利器”:AI 从实验室走向市场的五大障碍

Baihai IDP

程序员 AI LLMs 企业 9 月 PK 榜 AI 产品

南开大学携手火山引擎,联合打造全国“AI+教育”成果新示范

新消费日报

我的 Linux 利器

玄兴梦影

Linux

在RHEL配置网络绑定(成组)

百度搜索:蓝易云

首个大数据批流融合国家标准正式发布,阿里云为牵头起草单位!

阿里云大数据AI技术

大数据 阿里云 信息技术 国家标准

GraphPad Prism 10破解版安装 含永久激活码 mac/win

理理

SketchUp Pro 2024 for mac强大三维建模软件

Mac相关知识分享

三维建模软件

(spss统计软件)IBM SPSS Statistics 27 许可证代码

理理

Python实现动图生成:轻松创建自定义表情包

幂简集成

API

「邀您参会」9月20日 中国可观测日成都站

观测云

可观测性

站在 AI、DePIN 蓝海赛道交汇处,MelosBoom 如何带用户捕获市场红利

股市老人

如何配置docker或者k8s拉取https私人镜像仓库

百度搜索:蓝易云

NineData云原生智能数据管理平台新功能发布|2024年8月版

NineData

DevOps 数据迁移 数据管理 新功能 NineData

XIAOJUSURVEY vs Google Forms(一)

XIAOJUSURVEY

表单 问卷 竞品分析 调研系统 googleform

每个端侧产品都需要的用户体验监控

阿里巴巴云原生

阿里云 云原生

CAD快速看图 v9.9.9 VIP激活版

理理

Next.js的一次cookies处理过程

麦兜

第66期 | GPTSecurity周报

云起无垠

活动回顾|矩阵起源亮相第15届中国数据库技术大会DTCC

MatrixOrigin

Docker启动容器报错:cannot allocate memory: unknown

百度搜索:蓝易云

如何在Linux中映射LUN、磁盘、LVM和文件系统

百度搜索:蓝易云

Cookie的secure属性引起循环登录问题分析及解决方案

vivo互联网技术

https Cookie 单点登录

物理不好,如何给量子计算机编程?_语言 & 开发_Sara A. Metwalli_InfoQ精选文章