为什么选择QPanda

QPanda是由本源量子开发的开源量子计算框架,它可以用于构建、运行和优化量子算法。QPanda作为本源量子计算系列软件的基础库,为QRunes、Qurator、量子计算服务提供核心部件。 用户API参考文档参见 使用文档

对接不同平台

Docking different platforms

QPanda可对接不同的量子计算平台,它可把QPanda编写的量子程序编译到不同量子计算平台的对应的量子语言,目前已支持QASM、QRunes、Quil等多种量子语言

优化/转换工具

Optimizing/Conversion Tools

QPanda可根据真实量子计算机的数据参数,提供量子线路优化/转换工具,方便用户探索NISQ装置上有实用价值的量子算法

量子虚拟机

Quantum Virtual Machine

QPanda提供本地的部分振幅、单振幅、全振幅、含噪声量子虚拟机,并可直接连接到本源的量子云服务器,运行量子程序

量子算法

量子算法是量子计算落地实用的最大驱动力。好的量子算法设计将更快速推动量子计算的发展
Q
QAOA算法
多项式时间算法
寻最优解决方案
查看详情
V
VQE算法
量子经典混合算法
求解分子基态能量
查看详情
S
Shor算法
快速质因分解
破解RSA加密
查看详情
多项式时间算法,寻最优解决方案
量子近似优化算法(QAOA),是由Farhi, Goldstone和Gutmann开发的一个多项式时间算法,用于寻找“最优化问题的一种‘好’的解决方案”。对于给定的NP-Hard问题,近似算法是一种多项式时间算法,QAOA算法以期望的一些质量保证来解决每个问题实例。品质因数是多项式时间解的质量与真实解的质量之间的比率。

NP-Hard Problem

最大切割问题(MAX-CUT)是原始量子近似优化算法论文中描述的第一个应用。此问题类似于图形着色。给定节点和边的图形,将每个节点着色为黑色或白色,然后对有不同颜色节点的边给定一个分值。目的是找到得分最高的着色点。 更正式地说,问题是将图的节点划分为两组,使得连接相对组中的节点的边的数量最大化。

例如,杠铃图

有4种方法将节点分为两组:

我们仅对连接不同集合中的节点时才会绘制边。带有剪刀符号的线条表示我们要计算的切割边。对于杠铃图,有两个相等的权重分区对应于最大切割(如上图,右侧两个分区),将杠铃切成两半。我们可以将集合S或$\vec{S}$中的节点表示为 0或1,组成一个长度为N的比特串 。上图的四个分区可以表示为 {00, 11, 01, 10} 其中最左边的比特对应节点 A,最右边的比特对应节点B。用比特串来表示使得表示图的特定分区变得很容易。每个比特串具有相关联的切割权重。 对任意一个图中,节点分割所使用的比特串长度总是N。可分割的情况总数是$2^{n}$。例如,方形环见下图:

有16个可能的分区($2^{4}$)。以下是两种可能的节点分区方式:

与每个分区相关联的比特串如上图所示,其中最右边的比特对应节点A,最左边的比特对应节点D。

量子经典混合算法,求解分子基态能量
变分量子特征值求解算法(Variational-Quantum-Eigensolver,简称VQE)是用于找到一个矩阵H(通常是一个较大矩阵)的特征值的量子与经典混合算法。当这个算法用在量子模拟时,H就是某系统的哈密顿量(Hamiltonian)。在这个混合算法中,量子子程序是在经典优化回路内部运行。
这里的量子子程序有两个基本的步骤:
  • 制备量子态∣Ψ($\vec{θ}$);
  • 测量期望值 ﹤Ψ($\vec{θ}$)∣H∣Ψ($\vec{θ}$)

由变分原理(variational principle)可知,这个期望值不小于 的最小特征值。这个限定使得我们能够运行循环优化(optimization loop)的经典计算方法来找特征值:

  • 运用经典的非线性优化器通过改变参数θ ⃑来最小化期望值.
  • 不断迭代,直到收敛.

事实上,VQE的量子子程序等价于基于参数θ ⃑的集合来制备一个状态,并在适当的基上进行一系列的测量。在这个算法中参数化的状态的制备是比较困难的,并且参数化状态的制备显著地影响到算法的工作性能。

利用VQE计算基态

了解了VQE算法的原理之后,我们可以使用VQE算法计算分子的基态。

下面我们对此步骤进行详细说明:

1.我们可以调用Psi4计算包,利用量子化学里面的各种理论和近似得到的分子或原子的哈密顿量。这个哈密顿量是通过升降算符描述的,我们称之为FermionOperator;

2. 将分子的哈密顿量转换为用泡利算符表示的哈密顿量。这个通常是使用JW变换或者BK变换进行的。变换后的哈密顿量我们称之为PauliOperator。

3.制备试验态。在这个算法中,试验态是通过UCC理论制备的。UCC的形式可见后面的拓展介绍。UCC中包含一组未定的参数(UCC($\vec{θ}$))。我们先将量子比特制备到某个态上(例如基态或全部执行Hadamard门后的叠加态),之后将UCC作用在这个态上,得到一个含参数($\vec{θ}$)的试验态。

4.计算试验状态对PauliOperator的期望值。通过量子期望估计方法实现。

5. 根据计算出的期望值,放入到经典计算机的优化器程序中(例如基于梯度的优化器,或者不基于梯度的优化器)。如果没有收敛,或者达到优化最大步骤,优化器会修改这个参数$\vec{θ}$,再从3开始进行重复。否则,我们就得到了当前状态下的最优化期望值,即该分子的基态能量。

快速质因分解,破解RSA加密
舒尔算法,即秀尔算法(Shor算法),以数学家彼得•秀尔命名,是一个在1994年发现的,针对整数分解这题目的的量子算法(在量子计算机上面运作的算法)。它解决如下题目:给定一个整数N,找出他的质因数。
在一个量子计算机上面,要分解整数N,秀尔算法的运作需要多项式时间(时间是logN的某个多项式这么长,logN在这里的意义是输入的档案长度)。更精确的说,这个算法花费O((logN))的时间,展示出质因数分解问题可以使用量子计算机以多项式时间解出,因此在复杂度类BQP里面。这比起传统已知最快的因数分解算法,普通数域筛选法还要快了一个指数的差异。
秀尔算法非常重要,因为它代表使用量子计算机的话,我们可以用来破解已被广泛使用的公开密钥加密方法,也就是RSA加密算法。RSA算法的基础在于假设了我们不能很有效率的分解一个已知的整数。就目前所知,这假设对传统的(也就是非量子)电脑为真;没有已知传统的算法可以在多项式时间内解决这个问题。然而,秀尔算法展示了因数分解这问题在量子计算机上可以很有效率的解决,所以一个足够大的量子计算机可以破解RSA。这对于建立量子计算机和研究新的量子计算机算法,是一个非常大的动力。
将两个质数乘起来,例如907*641=581387,是一件小学生都能做到的事情,用计算机去处理,看起来也没有什么难度。但是如果我给你581387,让你去找它的质因数,问题就变得很复杂了。也许你可以用计算机一个一个的去尝试,但是当数字变得更大,达到成百上千位的时候,就连计算机也无能为力。世界上面有很多问题都是这样,难以找到答案,但是一旦找到答案就很容易去验证。类似的问题我们称之为NP问题。NP问题之所以难于处理,是因为它的时间复杂度往往具有指数级别。这意味着随着问题规模的线性扩大,需要的时间却是指数增长的。利用这个原理,人们创造了RSA算法,它利用大数难以分解,但是易于验证的原理,对数据进行有效的加密。
量子计算机有将问题指数加速的能力,那是否意味着能攻克所有的NP问题呢?很遗憾,不能。但是幸运的是,我们有能力把“质因数分解”的时间复杂度降低到多项式级别,使大数分解问题的解决变为可能。这就是Shor算法。Shor算法的提出意味着RSA密钥的安全性受到了挑战。
更多算法

资源与社区支持

我们致力于培养一个开放、热情的量子交流社区,每个用户都可以在上面书写、发布量子相关信息和看法
量子社区
用户可以在上面发表自己对于量子计算的看法或疑问,也可选择性浏览相关帖子增长自己对量子计算的了解。
前 往
Github
QPanda2的github地址,可以参阅QPanda2的正在进行、计划和已完成开发活动的详细信息。
前 往
readthedocs
包含QPanda的基础介绍、深入学习、工具组件、算法组件等
前 往

合作案例

本源与合作伙伴一起致力于量子计算在各类场景的应用开发,努力实现更多核心技术的突破,共同推进量子计算产业经济的发展

下载中心

多版本可供选择,安装指导
QPanda
版本:2.0
适用系统:Windows Linux Mac版
安装命令pyQPanda
pip install pyqpanda