PauliHamiltonian¶
from cascaqit import PauliHamiltonian
PauliHamiltonian ¶
PauliHamiltonian(
hamiltonian_id: str,
terms: tuple[HamiltonianTerm, ...],
constant: float = 0.0,
logical_order: tuple[str, ...] = (),
source_problem_id: str | None = None,
source_problem_hash: str | None = None,
metadata: Mapping[str, Any] = dict(),
schema_version: str = ALGORITHM_SCHEMA_VERSION,
)
按给定顺序保存加权 Pauli 和:H = constant * I + sum(term.coefficient * term.observable)。能量等于常数加每项期望值乘系数。constant 只平移能谱,不能丢掉它再比较不同模型的能量。
hamiltonian_id 必须非空;terms 至少包含一项,term_id 与 observable.name 各自唯一,重复观测量摘要也会被拒绝。logical_order 必须非空且无重复,覆盖所有项的目标,明确矩阵与结果的逻辑顺序。构造器不自动合并重复项;先在输入模型中整理。
source_problem_id 与 source_problem_hash 必须成对提供,后者为 SHA-256 十六进制摘要;它们记录来源,不会自动建立图问题的候选解或经典基线。metadata 保存附加说明。一般 Pauli 哈密顿量可交给 VQE,不能假设它总能转换成一个经典比特串优化问题。
from cascaqit import HamiltonianTerm, PauliHamiltonian, PauliX, PauliZ
hamiltonian = PauliHamiltonian(
"one_qubit", (HamiltonianTerm("x", 0.4, PauliX("q0")),
HamiltonianTerm("z", -0.7, PauliZ("q0"))),
constant=0.15, logical_order=("q0",),
)
assert len(hamiltonian.observable_set().observables) == 2
assert PauliHamiltonian.from_json(hamiltonian.to_json()) == hamiltonian
计算流程见 VQE 实验。
返回按 terms 顺序排列的 ObservableSet,用于批量测量。它只包含观测量,不把系数或 constant 合并进去,也不执行期望值计算;加权求和仍需使用原哈密顿量。
从字典还原 PauliHamiltonian。必须提供 hamiltonian_id 与非空 terms 数组;还原嵌套 HamiltonianTerm/Observable,重新校验 logical_order、唯一标识及成对来源字段。 缺少必需字段或字段不合法时可能抛出 KeyError、TypeError 或 ValueError。
解析 JSON 对象并调用 from_dict(),返回 PauliHamiltonian。非法 JSON 会抛出解析错误;顶层不是对象时抛出 TypeError。
返回可写入 JSON 的字典,嵌套对象一并序列化。元组转成数组;这个字典是保存的声明,不是执行结果。
返回 JSON 字符串,不写文件。indent=None 使用紧凑格式;提供缩进宽度可便于阅读。
返回规范 JSON 的 SHA-256 十六进制摘要。字段、标识或元数据变化都可能改变摘要;它用于比较保存内容,不判断两个声明在物理上是否等价。