写点什么

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

  • 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:086299

评论

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

从原生分布式缓存加速服务谈Serverless AI-ready Data Cloud

AI数据云Relyt

NDP 数据云 数据湖 Spark AI-ready 原生分布式缓存

京东零售广告创意:基于人类反馈的可信赖图像生成

京东科技开发者

京东零售广告创意:基于人类反馈的可信赖图像生成

京东科技开发者

🥳重磅更新!Fluent Editor 开源富文本支持 LaTeX 可编辑公式啦~

OpenTiny社区

开源 OpenTiny 富文本组件

技术前沿|NeurIPS 2024 中稿快讯!两方密态推理框架 Nimbus,大模型隐私推理场景的重要技术

隐语SecretFlow

人工智能行业定义以及特点简单说明

行云管家

人工智能 堡垒机 智能化 AI智能

全国最新版本居民小区AOI,总量超过63.6万个

Geek_f9782a

GIS AOI数据 全国居民小区AOI 居民小区 住宅小区AOI

关键词感知检索

DashVector

数据库 向量检索 大模型

聚焦高校人才培养,和鲸科技CEO范向伟受邀出席第十三届全国概率统计会议并发表主题演讲

ModelWhale

人工智能 人才培养 数据科学 学科建设

IPQ5312: 5gwifi The Cost-Effective Champion Driving WiFi 7 Experience

wifi6-yiyi

5G 6gwifi

观测云产品更新 | OpenAPI、应用性能监测、DQL 查询等

观测云

产品迭代

【JIT/极态云】技术文档--定时任务

武汉万云网络科技有限公司

向量动态量化

DashVector

数据库 向量检索 大模型 向量数据库

成本减半+效率翻倍:这家企业用11天实现数据处理飞跃

字节跳动数据平台

数据仓库 OLAP 降本增效

NebulaAI携手Eolink:AI落地,快人一步

行云创新

API 接口 AI Agent AI 智能体

荣耀开发者服务平台越来越AI

荣耀开发者服务平台

开发者生态 大模型时代 AI智能客服 荣耀HONOR

永州等保测评机构有哪些?电话多少?

行云管家

等保 等级保护 等保测评 永州

解读Karmada多云容器编排技术,加速分布式云原生应用升级

华为云开发者联盟

集群 Karmada kubernetes 云

HyperWorks的四面体网格剖分

智造软件

仿真 仿真软件 Hypermesh

轻松上手,轻量级低代码助力企业数字化转型

天津汇柏科技有限公司

数字化转型 低代码平台

七牛云 Miku 直播兼容杜比全景声格式

七牛云

直播 传输协议 七牛云

CST软件如何设置硬件加速选项GPUDCMPItoken

思茂信息

gpu cst CST软件

分区Partition

DashVector

人工智能 数据库 大模型 向量数据库

汽车行业数字化痛点凸显,“数据飞轮”提供企业破局新思路

字节跳动数据平台

数字化转型 数据飞轮

Topaz Gigapixel AI for Mac(无损放大图像工具)

Mac相关知识分享

vivo 游戏中心包体积优化方案与实践

vivo互联网技术

动态化 资源配置 包体积优化 PAG

LowCode:低代码平台,2024国内十大主流低代码平台年终盘点

优秀

低代码 低代码开发 低代码开发平台 低代码平台 低代码paas平台

前端调试实践

京东科技开发者

Photoshop 2025 for mac25.11.0中文直装版

Mac相关知识分享

一文了解LCD,LED和OLED屏幕的区别

Dylan

技术 LED display LED显示屏 OLED lcd

淘宝京东商品属性参数接口

tbapi

淘宝商品详情接口 京东商品详情接口

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