测量 — measure, MeasureNode, QResult, StabilizerResult
pyqpanda3 中量子测量操作的 API 参考。
measure
创建将量子比特映射到经典比特的测量操作。
签名
python
measure(qubit: int, cbit: int) -> MeasureNode
measure(qubits: list[int], cbits: list[int]) -> list[MeasureNode]| 参数 | 类型 | 说明 |
|---|---|---|
| qubit | int | 要测量的量子比特索引 |
| cbit | int | 存储结果的经典比特索引 |
| qubits | list[int] | 要测量的多个量子比特索引 |
| cbits | list[int] | 存储结果的多个经典比特索引 |
返回
MeasureNode 或 list[MeasureNode] — 要追加到 QProg 的测量节点。
示例
python
from pyqpanda3.core import H, CNOT, CPUQVM, QProg, measure
qvm = CPUQVM()
prog = QProg()
# Single-qubit measurement
prog << H(0) << measure(0, 0)
# Multi-qubit measurement
prog << CNOT(0, 1) << measure([0, 1], [0, 1])
qvm.run(prog, 1000)
result = qvm.result()
print(result.get_counts())运行结果:
{'00': 514, '11': 486}MeasureNode
表示将量子比特绑定到经典比特的测量操作。
签名
python
class MeasureNodeMeasureNode 对象由 measure() 函数创建,并通过 << 运算符追加到 QProg 实例。
python
from pyqpanda3.core import QProg, measure
m = measure(0, 0)
prog = QProg()
prog << mQResult
存储量子模拟的结果,包括测量计数、态矢量和概率分布。
签名
python
class QResult:
def __init__() -> None方法
QResult.get_state_vector
python
get_state_vector() -> list[complex]返回模拟后的量子系统态矢量。
QResult.get_counts
python
get_counts() -> dict[str, int]返回将测量结果比特串映射到其计数的字典。
python
# Example output: {'00': 487, '11': 513}
result.get_counts()QResult.get_prob_list
python
get_prob_list(qubits: list[int] = []) -> list[float]| 参数 | 类型 | 说明 |
|---|---|---|
| qubits | list[int] | 量子比特索引(默认所有量子比特) |
返回指定量子比特的概率列表。
QResult.get_prob_dict
python
get_prob_dict(qubits: list[int] = []) -> dict[str, float]| 参数 | 类型 | 说明 |
|---|---|---|
| qubits | list[int] | 量子比特索引(默认所有量子比特) |
返回将比特串映射到概率的概率字典。
QResult.shots
python
shots() -> int返回测量 shot 数。
QResult.print_results
python
print_results() -> None将测量结果打印到标准输出。
StabilizerResult
Stabilizer 模拟器的结果类。继承自 QResult。
签名
python
class StabilizerResult(QResult):
def __init__() -> None方法
StabilizerResult.get_state_vector
python
get_state_vector() -> list[complex]返回稳定器态的态矢量。
注意: Stabilizer 模拟器不支持态矢量检索。自 0.5.0 起,该方法抛出描述性的
RuntimeError(state vector unavailable for stabilizer),不再静默返回空列表。
示例
python
from pyqpanda3.core import H, CNOT, Stabilizer, QProg, measure, NoiseModel
qvm = Stabilizer()
prog = QProg()
prog << H(0) << CNOT(0, 1)
prog << measure(0, 0) << measure(1, 1)
qvm.run(prog, 1000, NoiseModel())
result = qvm.result() # StabilizerResult
print(result.get_counts())运行结果:
{'11': 496, '00': 504}QProg.get_measure_qubits_cbits
python
QProg.get_measure_qubits_cbits() -> list[tuple[Qubit, CBit]]按程序顺序返回每个测量操作的 (量子比特, 经典比特) 对,会递归处理嵌套的子程序。重复的量子比特或经典比特会被保留。
常用于在提交云端前核对该程序对哪些物理比特做了测量,或在指令导出(to_instruction)前确认测量映射。
| 返回 | 类型 | 说明 |
|---|---|---|
| 测量对列表 | list[tuple[Qubit, CBit]] | 每个元素是一对测量操作涉及的量子比特与经典比特。 |
示例
python
from pyqpanda3.core import QProg, measure
prog = QProg()
prog << measure(0, 2) << measure(2, 4) << measure(1, 3) << measure(0, 5)
pairs = [(int(q), int(c)) for q, c in prog.get_measure_qubits_cbits()]
print(pairs)运行结果:
[(0, 2), (2, 4), (1, 3), (0, 5)]另见
- 模拟器 — CPUQVM、Stabilizer 和其他模拟器
- 线路 — QProg 用于构建量子程序
- 噪声 — NoiseModel 用于含噪声模拟