快速开始
概述
本章将引导你在 5 分钟内完成 UnitaryLab 模拟器的上手流程。完成后,你将能够:
- 使用
Circuit创建量子线路 - 添加基本量子门
- 执行模拟并读取状态向量和概率分布
- 添加测量并读取经典比特结果
安装
pip install unitarylab安装完成后,验证是否可以导入:
import unitarylab
print(unitarylab.__version__)推荐导入方式
from unitarylab.core import CircuitCircuit 是用户最常用的高层接口,绝大多数操作都通过它完成。底层的 GateSequence、CircuitExecutor 等在普通使用中无需直接导入。
最小示例:Bell 态
Bell 态是量子纠缠的标准示例,由一个 Hadamard 门和一个 CNOT 门构成。
from unitarylab.core import Circuit
# 1. 创建 2 量子比特线路
qc = Circuit(2)
# 2. 对第 0 号量子比特施加 Hadamard 门
qc.h(0)
# 3. 添加 CNOT 门(控制比特 0,目标比特 1)
qc.cx(0, 1)
# 4. 执行模拟
result = qc.execute()
# 5. 查看状态向量
print(result.state)预期输出:
[0.70710678+0.j 0. +0.j 0. +0.j 0.70710678+0.j]查看概率分布
probs = result.probabilities
print(probs)预期输出:
{'00': 0.4999999999999999, '11': 0.4999999999999999}probabilities 返回一个字典,键为计算基态的二进制字符串(小端序),值为对应的测量概率。Bell 态下 |00⟩ 和 |11⟩ 各占约 50%。
添加测量
如果需要读取经典比特的测量结果,需要先创建经典寄存器并添加测量操作:
from unitarylab.core import Circuit, Register
from unitarylab.core.classical_register import ClassicalRegister
# 创建量子寄存器和经典寄存器
qr = Register('q', 2)
cr = ClassicalRegister('c', 2)
qc = Circuit(qr, cr)
qc.h(0)
qc.cx(0, 1)
# 将量子比特 0、1 的测量结果存入经典比特 0、1
qc.measure([0, 1], [0, 1])
result = qc.execute()
print(result.classical_results_map)预期输出(每次运行随机):
{0: 0, 1: 0} # 或者 {0: 1, 1: 1}classical_results_map 是经典比特索引到测量值(0 或 1)的映射。Bell 态的测量结果总是两比特相同(00 或 11),体现了量子纠缠。
选择执行后端
execute() 支持 backend 和 device 参数,适用于不同计算环境:
# 使用 PyTorch 后端(默认),在 CPU 上运行
result = qc.execute(backend='torch', device='cpu')
# 使用 NumPy 后端
result = qc.execute(backend='numpy', device='cpu')
# 若有 GPU,可切换到 GPU(需要 PyTorch + CUDA)
result = qc.execute(backend='torch', device='gpu')绘制线路图
qc.draw()draw() 会弹出 Matplotlib 线路图。如需保存为文件:
qc.draw(filename='bell.png', title='Bell State')下一步
最后更新于