本文将从可视化量子编程软件界面可视化、操作便捷性、易用性等方面分析IBM Quantum Composer、QCEngine、Qin的量子电路绘制功能。
## 1.基础量子知识介绍
量子线路由许多不同的量子逻辑门组合而成,因此在开启量子线路拖拽之旅前,需要对量子相关的基础知识有一些了解。下文将简要介绍量子电路、量子比特、量子逻辑门等相关知识。
### 1.1量子线路
量子线路也称量子电路,即对量子比特进行操作的线路,是一种常见量子计算模型。它的组成包括量子信息储存单元、线路(时间线)和各种逻辑门。组成量子线路的每一个量子逻辑门都是一个酉矩阵,所以整个量子线路是一个大的酉矩阵。在量子计算理论研究中,常用各种量子线路表示不同的量子算法。量子计算简单而言就是对n个qubit执行一系列算符操作,最后测量所得结果的计算过程。在量子线路的图形表示中,有多条并排直线。其中每条横线都代表着不同的量子比特,从左到右表示时间顺序,线上的每个位置都会对应相应的量子态。直线上排列的不同符号表示不同的量子逻辑门。两个或多个量子比特之间处于分离状态,可以相距很远。当两个量子比特处于纠缠状态时,对其中一个量子比特的测量将会影响另一个量子比特的状态,这就是量子的坍缩特性。通过使用量子门操作量子比特,可以将已被输入且未经纠缠的两个量子比特产生纠缠。常见且较实用的量子电路有贝尔电路和反贝尔电路等。
图1 贝尔电路
图2 反贝尔电路
图3 一般量子线路图示例
### 1.2单量子比特
量子比特在不同学科中有不同表示方式。经典计算机信息的基本单元是比特(bit),数学中通常用0和1表示比特的两种状态,也可以通过晶体管中的电信号(高电压或低电压)表示。量子计算机信息中最基本单元是量子比特(qubit),以量子状态形式存储。数学上用狄拉克符号来表示用两个量子态即|0⟩和|1⟩(两种量子态均为右矢),可类比经典比特状态0和1,每个量子比特的状态是0或1的线性组合(通常称为叠加态);物理上量子比特可以是光子的偏振(方向水平或垂直)、围绕单个原子核的电子的两种状态(基态或激发态)、均匀电磁场中的电子或原子核的自旋(向上或向下)等。
### 1.3多量子比特
拥有两个或两个以上的量子比特的量子系统通常被称为复合系统(Composite Systems)。在量子力学中,量子的状态由希尔伯特空间(Hilbert spaces)中的单位向量来描述。类比两个经典比特的表示,00、01、10、11对应的两个量子比特用计算基态(Computational Basis State)可分别表示为|00⟩、|01⟩、|10⟩、|11⟩。两个量子比特的总状态|ψab⟩可以写成两个量子比特|ψa⟩和|ψb⟩的张量积形式即$`|ψa⟩⊗|ψb⟩`$。张量积是两个向量空间形成一个更大向量空间的运算其计算公式如下:
![image-3.png](/media/images/image-3_VwGthuM.original.png)
### 1.4量子叠加态
一个量子比特(qubit)能够以其经典比特的叠加态(superposition)的形式存在,即一个量子比特可以同时处于两种状态。在计算机构建的数字世界,比特就是最基本的存在,一切计算的最小单元就是比特。由于采用二进制,一个比特只取2种可能的状态,分别用0和1来标记它们。而一个量子比特|ψ⟩可以同时处于|0⟩和|1⟩两个状态,可用线性代数中的线性组合(linear combination)来表示为$`|Ψ〉=α|0〉 β|1〉`$,则在量子力学中称量子比特|ψ⟩处于|0⟩和|1⟩的叠加态(superpositions),其中α、β都是复数,为对应量子比特状态的概率且$`α^2 β^2=1`$,两维复向量空间的一组标准正交基|0⟩和|1⟩组成一组计算基。
### 1.5布洛赫球
单个量子状态除了能用狄拉克符号|φ⟩表示用以外,还可用布洛赫球(Bloch Sphere)更直观表示单量子比特的状态。在布洛赫球表示法中,单个量子比特由三维球面上的某个点表示。在布洛赫球面上,任一纯态均可唯一对应到布洛赫球面上的一个点,布洛赫球的中心点表示完全混合态。
图4 布洛赫球1
图5 布洛赫球2
在布洛赫球中θ表示量子态概率信息,如当θ=0时,量子比特测量得到|0⟩态的概率为100%;当θ=90°时,量子比特测量得到|0⟩态和|1⟩态的概率均为50%;当θ=180°时,量子比特测量得到|1⟩态的概率为100%。而φ可以表示相位信息,如当φ=0时,量子比特的狄拉克符号表示方式变成![image-8.png](./p/image-8.png);当φ=180°时,量子比特的狄拉克符号表示方式变成$`|Ψ〉=α|0〉-β|1〉`$,其中α和β是实数。布洛赫球的半径为1,所以也可以通过量子比特处于球面点的z轴坐标表示|0⟩态和|1⟩态的概率:
[image-10.png]!(http://developer.queco.cn/media/images/image-10.original.png)
[image-11.png]!(http://developer.queco.cn/media/images/image-11.original.png)
### 1.6单量子比特逻辑门
经典计算中,最基本的单元是比特,而最基本的控制模式是逻辑门,可以通过逻辑门的组合来达到控制电路的目的。类似地,处理量子比特的方式就是量子逻辑门,使用量子逻辑门可以有意识的使量子态发生演化,所以量子逻辑门是构成量子算法的基础。经典计算机中单比特逻辑门只有一种——非门(NOT Gate)。但是在量子计算机中,量子比特情况相对复杂,存在叠加态、相位,所以单量子比特逻辑门会有更加丰富的种类。
例如,下图中横线表示一个量子比特从左到右按照时间顺序演化的路线即时间线,蓝色方框U表示量子逻辑门。该图标表示一个名为U的逻辑门作用在这条路线所代表的量子比特上。将一个处于|ψ0〉的量子态经过该逻辑门的操作后,相当于将这个量子逻辑门代表的酉矩阵左乘|ψ0〉,得到下一个时刻的量子态ψ1,此时$`U|ψ0〉 = |ψ1〉`$。
图6 量子比特逻辑门示例
### 1.7常见的单量子逻辑门
**H门**
Hadamard(H)门,是一种可将量子比特的基态变为叠加态的量子逻辑门,简称H门。H门和类似门的作用是扩大计算机可能执行的操作范围。举个简单的例子,当一块陆地被河道分为A和B两个部分,经典计算在没有船只的情况下,从陆地A前往陆地B只能寻找其他的陆地绕过河流才能成功登录。而量子计算中,H门相当于新科技传来的福音——一只动力十足的舰艇,此时通过H门的操作处理,就可以在陆地通行的基础上乘坐舰艇径直抵达B岸即可。这种扩展使计算机可以采用快捷方式,因为可以以传统计算机无法实现的方式“移动”。
H门的运算公式:H门作用在单量子比特上,可以将基态|0⟩变为$`2^{-1/2}(|0〉 |1〉)`$,将|1⟩变为$`2^{-1/2}(|0〉-|1〉)`$。
图7 H门
**Pauli-X门**
Pauli-X门(NOT门),作用在单量子比特上,等价于经典计算机NOT门,其主要作用就是对量子态进行翻转处理。Pauli-X门的计算公式:|0⟩→|1⟩,|1⟩→|0⟩。
图8 Pauli-X门
**Pauli-Y门**
Pauli-Y门,作用在单量子比特上,主要作用是绕布洛赫球Y轴旋转角度pie。Pauli-Y门的计算公式:当量子态为$`|Ψ〉=α|0〉 β|1〉`$,经过Pauli-Y
门作用之后得到新的量子态即![image-18.png](/media/images/image-18.original.png)。
图9 Pauli-Y门
**Pauli-Z门**
Pauli-Z门,Pauli-Y门作用在单量子比特上,主要作用是绕布洛赫球Z轴旋转角度pie。Pauli-Z门的计算公式:当量子态为$`|Ψ〉=α|0〉-β|1〉`$,经过Pauli-Z门的作用之后得到新的量子态![image-21.png](/media/images/image-21.original.png)。
图10 Pauli-Z门
**CNOT门**
CNOT门(ControlledNOT或CNOT)也称为受控非门,可作用于多量子比特,是量子计算机超越经典计算机的关键所在。下图中两段线条分别表示两个量子位,其中顶部线条中的黑点被称为控制量子位,底部圆圈表示目标量子位。
图11 CNOT门
CNOT可类比为一种简单的if-then语句,是构建其他复杂条件行为的基础——如果(if)设置了控制量子位,则(then)不是目标量子位。CNOT主要作用是if控制量子位为0时,则目标量子为保持不变;if控制量子位为1时,目标量子位实行翻转。
[image-24.png]!(http://developer.queco.cn/media/images/image-24.original.png)
通用表达式可以表述为:[image-25.png]!(http://developer.queco.cn/media/images/image-25.original.png);当有三个量子位且控制量子位和目标量子位分别为y和z时,第一个量子位x保持不变,经过CNOT的操作表达式为![image-26.png](http://developer.queco.cn/media/images/image-26.original.png)。
## 2.Composer竞品对比
根据产品功能区域的共性及产品特点,建立以下表格进行量子线路产品功能对比,具体对比见各产品文字部分。
### 2.1.IBM Quantum Composer
简要介绍:IBM Quantum Composer是一个图形化的量子编程工具,支持通过拖拽的方式构建量子电路,并能在量子硬件设备或模拟器上运行。该composer主要有三个特点:实现量子比特状态可视化,能随时查看电路变化如何影响量子位状态,显示交互式的布洛赫球、测量概率、状态向量模拟直方图;可在量子硬件上运行电路图,理解设备噪声的影响;无需手动编写代码即可自动生成Python代码。
界面构成:IBM Quantum Composer可视化界面由量子线路界面、概率直方图、布洛赫球、代码编辑界面四部分组成。量子线路界面中包含多种量子逻辑门符号、量子态、相位盘。
- 支持逻辑门拖拽功能,当拖动逻辑门构建量子电路后,右侧有对应的代码显示;
- 电路与代码双侧联动功能,当修改代码后,量子电路会自动做出更新。
- 相位显示功能,每个量子比特末端均有圆形表示的相位盘,颜色表示概率、圆圈中的横线表示相位;
- 支持鼠标悬停功能,可显示悬停处对应的详细信息;
- 布洛赫球可视化,可实现鼠标旋转布洛赫球,其中还显示量子状态信息。
图12 IBM Quantum composer界面图
使用体验:IBM Quantum
Composer能直观显示量子电路及量子状态信息,界面分布清晰、功能多样,可实现量子电路与代码双侧联动,文档资料较丰富,便于开发人员使用。
### 2.2QCEngine
简要介绍:QCEngine是一个计算程序模拟器,也可在线使用。QCEngine中用圆形符号实现可视化,可以创建量子电路。QCEngine旨在打造成一个轻量级的量子计算模拟器,可用于快速制作sketches和demo。它可以模拟量子计算运行JavaScript代码,最多可实现25个量子比特(取决于所用浏览器)。
界面构成:QCEngine界面由代码编辑区、量子线路区、圆形符号区(量子比特相位和概率状态)、结果程序输出区四个部分组成。代码编辑区提供了代码样例,点击运行程序按钮时,其他三个区会生成相应量子电路、相位状态和概率并以可视化的方式显示。
- 代码编辑窗口用于输入和运行代码。在文本框中输入的JavaScript可突出显示语法,代码编辑窗口底部附有多种代码资源库。该代码编辑窗口的代码描述了使用QCEngine的运行模拟,已编辑的代码块仅在单击“运行程序”按钮后才可以实际运行。
- 代码编辑窗口完成运行后,量子线路窗口会输出相应的线路图。当光标悬停于量子电路上时,会出现一个垂直的橙色线条,单击鼠标确定橙色位置后,圆形区与量子线路区会发生交互,相位和概率会发生相应改变。
- 圆形区共有六种量子状态显示模式。
圆形图形表示法:圆的填充半径表示叠加振幅的强度,如果读取量子比特,则每个圆中的已填充面积与该圆所对应的值的概率成正比。其中圆的旋转即量子比特状态的相对相位,取值范围在0°-360°,圆形表示法中,只有圆之间的相对旋转才有意义,当两个圆都旋转时一其中一个圆为参考,对另一个圆做等价旋转,且对圆进行旋转后的两种量子比特的状态也是等价的。
图13 QCEngine界面图
使用体验:QCEngine支持代码生成量子电路,没有量子电路和代码的联动功能,可视化程度较低。使用过程中给以代码编辑区为主,即可操作部分只有代码编辑区域。鼠标查看量子状态信息功能较突出,但量子状态信息较简单,只显示量子态概率而不以数字形式显示相位信息。此外文档资料丰富,便于开发人员使用和查看。
## 2.3HiQ Composer
简要介绍:HiQ Composer是华为开发在线图形化量子线路编程环境。HiQ Composer提供全振幅模拟器,开发者可自由拖拽量子门搭建量子线路。该Composer包含基本的量子逻辑门操作和测量操作,可完成简单的量子线路拖拽功能,但没有设计代码编辑功能。其中,量子线路元件不支持悬停信息查看,此处无互动效果。最终的运行结果支持查看期望结果概率和运行结果,可鼠标悬停查看具体值。
图14 HiQ Composer界面图
使用体验:HiQ Composer的产品界面总体比较简洁。相较于IBM QuComposer,HiQ Composer功能相对简单,支持量子元件拖拽功能,但没有代码编辑功能。其次,量子线路元件不支持鼠标悬停显示具体信息,对于没有量子力学知识背景的初学者而言必须通过文档理解量子线路元件的含义及作用。此外,HiQ Composer与其他量子线路绘制产品都没有运行结果的简要解释。总体而言,HiQ Composer可视化效果较好,功能比较简单,初学者对产品熟悉门槛不高,更容易集中精力学习如何绘制量子线路。
## 2.4Qni
Qni介绍:Qni界面较单一,界面顶端为各种量子逻辑门和布洛赫球,界面底部是圆形表示的量子态概率和相位。支持鼠标悬停功能,当鼠标悬停于各种量子门上时,可以图形方式显示对应逻辑门的作用。此外,将布洛赫球拖入量子电路中时,可通过布洛赫球查看量子态信息。
图14 Qni界面图
使用体验:总体而言,在代码编辑方面功能缺失,整体界面单一。然而该量子电路生成器的交互性功能是一大亮点,信息集中程度较高,均隐藏于界面中的图形之中。该量子电路生成器最大的亮点在于用可视化的方式清晰直观的说明了每个量子逻辑门的作用,可省去学习物理知识步骤直接动手操作实践,便于初学者使用。(qniapp.net)
## 3.启科量子QuComposer
QuComposer介绍:QuComposer是[QuBranch](http://119.146.181.238:18001/download/list)中的一部分功能,其中可视化量子逻辑门功能依赖量子编程框架QuTrunk实现。QuBranch是由启科量子计算研发团队负责研发的一款专为量子编程开发一种编程工具。其中包括编辑、调试、量子模拟执行等功能,可为量子计算编程提供一站式集成开发环境,支持Windows、Mac、Linux等操作系统。QuComposer已实现量子电路拖拽和代码编辑两种方式绘制量子电路功能、量子电路图与代码双侧联动等功能。Composer也可译为创作者、作曲家,通过Composer功能生成的量子电路图中,每个量子态用一根横线表示,与五线谱类似。而在线谱上,量子逻辑门如同各色的音符,量子比特通过不同音符(量子逻辑门)可输出相应的旋律。
使用操作:在QuBranch中点击【查看】-【命令面板】-输入【quan】-选择【quan:量子编程可视化】即可打开QuComposer体验可视化量子编程操作。
界面构成:QuComposer界面由代码编辑区图形拖拽区、量子态概率信息显示区域、代码编辑区域三个部分组成。量子图形拖拽区域、量子态概率信息显示区域、代码编辑区可实现三区联动变化。
- QuComposer可实现拖拽式的可视化量子线路编程;
- 自由进行量子逻辑门拖拽后,概率信息显示区域即可以柱状图方式显示相应的概率信息;
- 悬浮信息显示功能。当鼠标置于概率柱状图上时,会显示具体的概率信息。
- 支持代码编辑生成量子电路;
- 可实现量子电路与代码双侧联动,即改变量子电路时,代码可以发生相应改变,当编辑代码时,量子电路会发生对应变化;
- 可剪切、复制、粘贴量子逻辑门,以简化相同门的拖拽动作,更高效的拖拽量子逻辑门。
图15 QuComposer界面图
如上图将H门作用于︱0〉态的代码操作为 `H | qr[0]`,将CNOT门作用于︱0〉态和︱1〉态的代码操作为 `CNOT | (qr[0],qr[1])`。
**结尾**
QuComposer目前已实现拖拽式量子线路编程、量子程序代码与五线谱联动、量子态信息动态显示等功能。在产品设计之初启科量子研发团队已充分考虑了量子开发人员的知识背景,支持代码编辑功能生成量子电路,便于想要进入量子编程领域的开发人员学习和使用。同时支持量子逻辑门拖拽生成对应代码,实现电路代码双侧联动。未来,启科量子研发团队将会继续升级现有功能,完善Composer的代码资源、界面可视化设计、丰富界面的交互性、增加Composer的易用性和可操作性,使其更符合开发人员的操作习惯。量子编程将是量子计算发展过程中的必然产物和必备能力,追随科技的脚步才能跟上时代发展的速度。