执行线路与查看结果
Circuit.execute() 执行纯态模拟并返回 ExecutionResult。结果对象同时提供最终状态、概率查询、采样、期望值和线路内测量结果。
from unitarylab import Circuit
qc = Circuit(2)
qc.h(0)
qc.cx(0, 1)
result = qc.execute()execute(initial_state=None, backend="torch", device="cpu",
dtype=np.complex128, shots=1, seed=42,
backend_options=None)ExecutionResult
state:最终状态向量;多 shots 时对应最后一个 shot。backend_state:未进行设备拷贝的后端原始状态。probabilities、probability()、marginal_probabilities():完整、单项和边际概率。sample():不坍缩状态的计算基采样。expectation():计算可观测量期望值。measure():投影测量并坍缩内部状态。counts:全部 shots 的经典比特串统计。classical_results_map、classical_registers:最后一个 shot 的经典测量结果。
print(result.state)
print(result.probabilities)
print(result.expectation("ZZ", qubits=(0, 1)))Pauli 字符串按 qubits 给定顺序对应量子比特;概率字符串采用 little-endian,qubit 0 位于最右侧。
概率、采样与期望值
print(result.probability("00"))
print(result.marginal_probabilities(qubits=[0], threshold=1e-12))
print(result.sample(shots=20, qubits=[0, 1], seed=7))
print(result.expectation("Z", qubits=[0]))| 接口 | 是否改变状态 | 返回值 |
|---|---|---|
probability() | 否 | 指定比特串概率 |
marginal_probabilities() | 否 | 指定量子比特的边际分布 |
sample() | 否 | 按最终概率分布生成的比特串列表 |
expectation() | 否 | Pauli 串或可观测量的期望值 |
measure() | 是 | 投影结果,并坍缩结果对象持有的状态 |
查询部分量子比特时,比特串长度必须与 qubits 数量一致;Pauli 字符串长度同样必须与目标量子比特数量匹配。
测量与多次执行
qc.measure([0, 1], [0, 1])
result = qc.execute(shots=1000, seed=None)
print(result.counts) # 仅会出现 00 和 11,具体次数不固定shots > 1 时,state 和 classical_results_map 对应最后一次执行,counts 汇总全部 shots。result.measure() 会坍缩状态;只查询分布时使用 marginal_probabilities() 或 sample()。
没有在线路中添加 Circuit.measure() 时,counts 和经典寄存器结果不表示对完整状态的隐式测量。此时应使用 sample() 获取计算基采样。
后端和完整参数见执行后端与参数。
相关页面
最后更新于