量子计算模拟器。

pyqcs的Python项目详细描述


https://travis-ci.org/daknuett/PyQCS.svg?branch=masterhttps://api.codacy.com/project/badge/Grade/a6ca800c070a46f297216d03f9351129

What Is PyQCS?

PyQCS是一个为物理而构建的量子计算模拟器。它目前的特点是 两个用于不同目的的模拟器后端,以及一种构造电路的方法 以相对可读的方式。在

默认情况下,PyQCS使用相对较慢的模拟器后端,使用密集状态 存储在NumPy数组中的向量。NumPy实现了NumPy。 因为状态被实现为NumPy数组,所以 与其他模拟器相比的开销。请注意,任何使用dense的实现 状态向量的数量呈指数增长。所以这个 模拟器后端被限制在30以下的qbit数字为合理 性能。对于需要更多Qbit的模拟,我们建议使用高 性能框架,例如GPT’s QIS module。在

第二个后端使用图形化的状态表示(例如,请参见 arXiv:quant-ph/0504117)哪个 允许模拟稳定器状态和电路。图形 模拟器相当快,特别是它不显示指数 Qbit数量的增长。图形状态可用作 pyqcs.graph.state.GraphState。在

与其他模拟器不同,PyQCS关注的是状态:用户从一个状态开始,修改 状态(使用电路),然后查看状态或从状态采样。 当调试电路或考虑 身体问题。然而,它减慢了计算速度。在

Using PyQCS

为了进行一些计算,我们必须建立一个量子电路并将其应用于一个状态。 使用pyqcs.State.new_zero_state(<number of qbits>)创建状态。在

电路是由基本门(参见Built-in Gates)连接而成的 一起使用|运算符:

from pyqcs import H, CX, X

circuit = H(0) | CX(1, 0) | X(1)

|的用法类似于UNIX管道:门从左到右应用 正确的。这与费曼量子电路图是一致的。在

Note:上面的电路将具有以下矩阵表示:

^{pr2}$

使用乘法将电路应用于某个状态:

from pyqcs import State

state = State.new_zero_state(2)
resulting_state = circuit * state

v2.2.0中的新功能是circuitpng函数,它允许将电路显示为png (使用pdflatex实现和imagemagick):

from pyqcs import H, CX, circuitpng
circuit = (H(1) | H(2)) | CX(2, 1) | (H(1) | H(2))
circuitpng(circuit)

Built-in Gates

PyQCS目前有以下内置门:

X
Pauli-X或不是gate。翻转相应的qbit。
H
哈达玛门。
C = CX
CNOT(受控非)门。如果设置了控制qbit,则翻转实际qbit。
R
R,Rz或R_phi,旋转门。围绕给定的角度旋转相应的qbit。
M
测量门:该门测量相应的门,折叠波函数 并将结果存储在状态的经典部分。
Z
保利Z大门。
B = CZ
受控Z门。

TODOs

  • 添加pyqcs.state.state.BasicState的子类,该子类具有改进的__str__方法。在
  • 写很多文件。在
  • 添加更多测试。在
  • 添加一个NoisyGateListExecutor允许实现噪声模型。在
  • 允许图形状态彼此相乘以计算重叠。在
  • 添加一种使用图形状态作为压缩基础状态的方法。在
  • 添加一个快速密集状态向量模拟器。在
  • 添加了一种将电路导出到GPT的QIS模块的方法。在
[1]Real quantum computers have an intrinsic time evolution. This is omitted in PyQCS and reintroduced for error simulation. PyQCS therefore operates on a discrete quasi-time with every time-site being before or after a gate application.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是从此类字符串中提取数据的最佳方法   filenotfoundexception Java FileOutputStream Windows/Linux   java在SQLite数据库Android SDK中搜索特定字符串   java使用键值访问jsp中Map<Long,Map<String,Object>>的内容   java奇怪的HTMLeditor工具包问题   在java中使用数组只计算字母   每个应用程序都可以有自己独立的Java SDK吗   java如何将jasper报告生成的PDF文件保存在一个项目文件夹中   java BigDecimal包装器:静态字段为零   解码Base64图像时出现java IllegalArgumentException(非法的Base64字符)   将int转换为字节在Java和Actionscript中产生不同的结果   java什么使不可变对象在没有安全发布技术的情况下发布?   java将字节数据写入目录   一个计算器中有多个操作的java问题   面向对象Java重写是如何工作的   带hibernate的java ClassCastException   指向最后一个对象的java对象列表   java单元测试spring项目中的Get请求