创建线路与寄存器
Circuit 保存量子门、测量映射和寄存器信息,是构建、执行、绘图、导出和编译线路的统一入口。简单线路可直接传入量子比特数;需要多寄存器或明确命名时再显式创建寄存器。
推荐导入
from unitarylab import Circuit, Register, ClassicalRegister创建 Circuit
import numpy as np
from unitarylab import Circuit, Register, ClassicalRegister
# 直接指定比特数,同时创建默认 q/c 寄存器
qc = Circuit(3)
# 从已知状态开始
qc_from_state = Circuit(np.array([1, 0, 0, 0], dtype=complex))
# 自定义寄存器名称和布局
qr = Register("q", 2)
cr = ClassicalRegister("c", 2)
qc_named = Circuit(qr, cr, name="Bell Circuit")Circuit(n) 会创建大小相同的默认量子寄存器 q 和经典寄存器 c。显式使用 Register 构造线路时,如需测量,应同时提供 ClassicalRegister。
| 构造方式 | 适用场景 |
|---|---|
Circuit(n) | 单个量子/经典寄存器,二者大小均为 n |
Circuit(state) | 从状态向量创建线路,向量长度必须为 |
Circuit(qreg, creg, name=...) | 自定义寄存器名称与布局 |
状态向量必须是一维、非零且可归一化。线路量子比特索引从 0 开始;传入不存在的索引会触发异常。
Register
from unitarylab import Register
qr = Register("q", 3)
q0 = qr[0]
first_two = qr[:2]
selected = qr[[0, 2]]量子寄存器支持整数、切片和索引列表访问。索引必须在寄存器范围内。
ClassicalRegister
from unitarylab import Circuit, Register, ClassicalRegister
cr = ClassicalRegister("c", 2)
print(cr.values) # [-1, -1]
qc = Circuit(Register("q", 2), cr)
qc.measure([0, 1], [0, 1])
result = qc.execute()
print(result.classical_registers["c"])经典比特初始值为 -1,线路执行测量后更新。量子门与测量方法见量子门与测量。
使用建议
- 将寄存器视为索引视图;门操作最终仍作用于线路的全局量子比特索引。
- 需要读取测量值时,应从
ExecutionResult读取,不要把构造线路时的经典寄存器当作多 shots 统计结果。 - 组合子线路前先核对宽度和目标索引,避免隐式布局错误。
相关页面
最后更新于