【QCompute】在python上运行量子计算代码
除量子云平台仿真外,介绍如何在python上运行量子计算的代码。
在量子密码学(Quantum Cryptography)的学习中,研究的主要部分为:提出并设计协议(Protocol description)、正确性分析(Correctness analysis)以及安全性验证(Security analysis)。对协议的分析需要放到与设计同样重要的地位上来。
然而,大部分的论文重理论推导而轻实践仿真。一方面是由于量子资源不可多得,另一方面涉及到量子理论推导繁琐且工作量庞大。因此,多数论文陷入对安全性推导的奇淫巧计中去,展现其数学理论的精妙绝伦;少数选择在量子云平台中进行仿真。除了国外的IBM对中国地址进行封锁外(翻墙好像都不太行),国内还有很多平台可供选择,这里附上一篇推文供大家选择。
IBM量子云禁止中国IP访问,哪里还能用到量子计算机?
除量子云平台仿真外,还可以进行代码仿真。
下面介绍如何在python上运行量子计算的代码。
1.python的版本是3.8-3.10.
2.PyCharm安装protobuf插件.
3.pip install qcompute.
注意,需要安装的包是qcompute、numpy,代码中写作QCompute;需要的插件为protobuf和自带的pprint。相关的步骤和环境请自行百度,安装完就可以运行了。
这里用的是百度量易伏平台提供的代码:量子隐形传态。
from QCompute import *
import numpy as np
# 不直接给出输出,后续通过print给出需要信息
from QCompute import Define
Define.Settings.drawCircuitControl = []
Define.Settings.outputInfo = False
# 设置量子比特数量
qubit_num = 3
# 设置测量次数
shots = 10000
# 生成要传输量子态 seed(设为14)
np.random.seed(14)
# 生成3个随机的角度
angles = 2*np.pi*np.random.randn(3)
def teleportation():
"""
main
"""
# 创建环境
env = QEnv()
# 选择随机数
seed = int(2147483647 * np.random.random())
# 选择 Backend 为本地模拟器
env.backend(BackendName.LocalBaiduSim2, '-s ' + str(seed))
# 初始化全部量子比特
q = [env.Q[i] for i in range(qubit_num)]
# 步骤 1:Alice 和 Bob之间制备纠缠态
H(q[1])
CX(q[1], q[2])
# 制备量子态 |psi>
U(angles[0], angles[1], angles[2])(q[0])
# 步骤 2:Alice 对持有的 q0 和 q1 进行操作
CX(q[0], q[1])
H(q[0])
# 步骤 3:Bob 进行操作复原量子态 |psi>
CZ(q[0], q[2])
CX(q[1], q[2])
# Bob 对他持有的量子比特 q2 进行测量
MeasureZ([q[2]], [2])
np.random.seed(None)
taskResult = env.commit(shots, fetchMeasure=True)
print("Shots", taskResult['shots'])
print("Counts", taskResult['counts'])
print("Seed", seed)
return taskResult['counts']
if __name__ == '__main__':
teleportation()
运行的结果如下:
最后,希望有关量子计算的代码仿真可以涌现。本人正在学习理论部分,欢迎交流~
更多推荐
所有评论(0)