量子程序设计基础 | 量子程序与量子编程
01、量子程序与量子编程
量子计算的基本单元是量子比特。量子计算机中的测控设备能够可控地制备、操作与测量量子比特的状态。一台 n 量子比特的量子计算机可以表示的状态空间是整个 2n维的希尔伯特空间,每个量子态(波函数)表示该空间中的一个态矢。只要该计算机与环境的耦合可以忽略不计,那么其量子态(波函数)随时间的演化就是幺正(酉)的,且该演化是遵守薛定谔方程的。
图 1.2 描述了一个量子程序的开发和执行过程。针对实际问题设计量子算法,量子编程将量子算法实现为“经典+量子”的量子程序。经典部分主要包括经典计算机与量子计算机的交互、结果数据的分析和可视化等工作;量子部分的核心是量子算法中量子线路的创建和后端执行。后端(backend)是指真正执行量子线路的设备,可以是模拟器或真实的量子计算机。图 1.2 中虚框外的部分在经典计算机上实现,虚框内的部分由量子计算机或模拟器实现。
■ 图 1.2 量子程序的开发和执行
图 1.2 中虚框内示意的是量子程序对应的量子线路的执行过程,分为三个基本步骤: 初态制备、幺正变换和对末态进行量子测量。在|ψ〉final=U|ψ(0)〉中,|ψ(0)〉为量子线路的初态,执行整个量子线路相当于执行其对应的酉变换 U,从而得到末态|ψ〉final。U=U1U2…UN代表量子线路由 N 个量子门 U1,U2,…,UN组成。需要注意的是,UN是最靠近初态的门。
测量结果在本质上是概率性的,不同结果出现的概率是由每个量子态的幅值决定的。一个量子算法通常需要重复测量多次,才能获得量子态统计学上的概率分布,进而获得概率值的最大输出。由于利用了量子叠加性、相干性和纠缠特性,量子计算机的潜在能力远强于目前的经典计算机。
02、典型量子程序开发平台
1. Qiskit
Qiskit 是 IBM 公司开放源码的量子计算软件开发框架,主要由四大模块组成: ①Terra 为 Qiskit 软件栈的基础模块,负责量子线路的构建、优化、执行和测量等工作,可在量子门和脉冲级别编程; ②Aer 是一个高性能模拟器框架; ③Ignis 用来表征和消除量子线路和量子系统中的噪声,可以检查并改进量子门的实现; ④Aqua 提供了量子化学、优化问题和人工智能等领域的量子算法库,可在其上构建用于近期量子计算机的应用程序。
2. Cirq
Google 公司的 Cirq 开源框架能使开发者基于 Python 语言为含噪中等规模量子机(Noisy Intermediate-Scale Quantum,NISQ)高效地编写量子线路和量子算法。Cirq 支持在模拟器或量子计算机上运行算法。
3. Forest SDK
Rigetti Computing 公司的量子汇编指令语言 Quil 支持量子门和脉冲级的量子线路设计。该公司的开源开发套件 Forest SDK 主要包含三部分内容: ①PyQuil 是一个 Python 库,为 Quil 提供了 Python 语言的开发接口; ②Quilc 是一款基于门的量子程序优化编译器,它可将 PyQuil、Qiskit、Cirq 或 QASM 生成的量子线路作为输入,并通过配置指令集架构(ISA)将代码翻译到非 Rigetti QPU 的其他量子处理器上; ③量子虚拟机 QVM 是 Rigetti 的开源量子计算模拟器,可以在无噪声或有噪声的条件下模拟 Quil 程序的执行。
4. Quantum Development Kit
Microsoft 公司的量子程序开发套件 Quantum Development Kit(QDK)提供了 Microsoft 高级量子编程语言 Q#。开发者可在 Windows、macOS 或 Linux 系统的集成用户环境 Visual Studio 中方便快捷地进行量子程序的开发。
5. QPanda
本源量子开发的量子计算开发工具库 QPanda 可以快捷地构建、运行和优化量子算法,支持全振幅量子计算模拟、单振幅量子计算模拟和部分振幅量子计算模拟,也可用于模拟含噪声的量子逻辑门计算。QPanda 集成了很多主流的量子算法,是量子计算学习及量子算法验证的有力工具。
6. HiQ
华为的 HiQ 量子计算云平台提供的模拟器 HiQ Simulator 包括分布式单振幅模拟器、分布式全振幅模拟器和量子纠错线路模拟器。HiQ 兼容开源 ProjectQ,通过华为自研的 CloudIDE,依托华为云提供的计算、网络、存储和安全等资源服务,可为开发者和合作伙伴提供良好的编程体验和生态能力。
版权声明: 本文为 InfoQ 作者【TiAmo】的原创文章。
原文链接:【http://xie.infoq.cn/article/97561067d3b47d983be263775】。文章转载请联系作者。
评论