使用ZXcalculus的量子电路重写和优化库
pyzx的Python项目详细描述
PyZX公司
PyZX(发音为Pisics)是一个Py实现ZX微积分理论的工具,用于创建、可视化和自动重写大规模量子电路。请观看this 2-minute video进行简短介绍。在
PyZX目前允许您:
- 以QASM、Quipper或Quantomatic文件格式读入量子电路。在
- 用ZX演算重写电路为伪正规形式。在
- 从这些简化图中提取新的简化电路。在
- 可视化ZX图形,并使用Matplotlib、Quantomatic或作为TikZ文件重写,以便在LaTeX文档中使用。在
- 以QASM、QC或QUIPPER格式输出优化后的电路。在
您可以尝试在浏览器内演示,其中显示了这些功能here。在
关于ZX微积分
ZX图是一种张量网络,由称为spider的线性映射组合而成。蜘蛛有两种类型:Z型蜘蛛(在PyZX中用绿点表示)和X型蜘蛛(用红点表示)。一组量子位之间的每一个线性映射都可以用ZX图表示。 ZX演算是ZX图的一组重写规则。有各种各样的重写规则。然而,PyZX只使用关于ZX演算的Clifford片段的重写规则。重要的是,对于Clifford图,这组重写规则是complete,这意味着Clifford映射的两个表示可以被重写成另一个,当且仅当它们表示的两个线性映射相等时。在
Here是一个提供有关ZX微积分的资源和信息的网站。有关ZX演算的简短介绍,请参见this paper,而要获得完整的概述,我们推荐this book。PyZX广泛地使用了两个派生重写规则,称为local compensation和pivoting。有关这些操作的更多信息可以在this paper中找到。在
安装
如果您希望在其他项目中使用PyZX作为Python模块,我们建议通过pip安装:
pip install pyzx
如果您想使用演示或基准电路,您应该通过克隆git存储库从源代码安装PyZX。在
PyZX没有严格的依赖关系,尽管有些功能需要numpy。PyZX是为了与Jupyter良好地交互而构建的,因此我们另外建议您安装Jupyter和matplotlib。在
使用
请参阅Documentation,以获得PyZX特性的完整概述。在
如果您已经安装了Jupyter,那么您可以使用demos文件夹中的一个演示笔记本来演示PyZX的功能。在
以下是一些Python代码示例,用于生成随机电路、优化电路并最终显示:
^{pr2}$PyZX也可以从命令行运行。例如,为了优化电路,您可以运行
python -m pyzx opt input_circuit.qasm
归属
如果你想在学术著作中引用PyZX,请引用accompanying paper:
@inproceedings{kissinger2020Pyzx, author = {Kissinger, Aleks and van de Wetering, John}, title = {{PyZX: Large Scale Automated Diagrammatic Reasoning}}, year = {2020}, booktitle = {{\rm Proceedings 16th International Conference on} Quantum Physics and Logic, {\rm Chapman University, Orange, CA, USA., 10-14 June 2019}}, editor = {Coecke, Bob and Leifer, Matthew}, series = {Electronic Proceedings in Theoretical Computer Science}, volume = {318}, pages = {229-241}, publisher = {Open Publishing Association}, doi = {10.4204/EPTCS.318.14} }
这架飞机上写着PYZX:
- 项目
标签: