Skip to Content

快速开始

概述

本章将引导你在 5 分钟内完成 UnitaryLab 模拟器的上手流程。完成后,你将能够:

  • 使用 Circuit 创建量子线路
  • 添加基本量子门
  • 执行模拟并读取状态向量和概率分布
  • 添加测量并读取经典比特结果

安装

pip install unitarylab

安装完成后,验证是否可以导入:

import unitarylab print(unitarylab.__version__)

推荐导入方式

from unitarylab.core import Circuit

Circuit 是用户最常用的高层接口,绝大多数操作都通过它完成。底层的 GateSequenceCircuitExecutor 等在普通使用中无需直接导入。

最小示例: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 是经典比特索引到测量值(01)的映射。Bell 态的测量结果总是两比特相同(0011),体现了量子纠缠。

选择执行后端

execute() 支持 backenddevice 参数,适用于不同计算环境:

# 使用 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')

下一步

最后更新于