Skip to content

PauliTerm

PauliTerm 表示泡利算符展开中的单项——即作用于特定量子比特的泡利矩阵的张量积,乘以标量系数:

T=cjσj

其中 σj{I,X,Y,Z}cC

PauliTermPauliOperator 中最小可独立寻址的单元。您可以检查其系数、枚举各个泡利-量子比特对、将其转换为量子线路或以多种格式提取其原始数据。

方法

coef

python
PauliTerm.coef() -> complex

返回此泡利项的复系数。

返回: 一个 complex 数。

to_qcircuit

python
PauliTerm.to_qcircuit() -> QCircuit

将此泡利项转换为量子线路。项中的每个非恒等泡利被转换为相应的量子门(XYZ)作用于对应量子比特。恒等泡利被跳过。

返回: 表示该项的 QCircuit 对象。

paulis

python
PauliTerm.paulis() -> list[PauliWithQbit]

返回组成此项的带有对应量子比特索引的泡利矩阵列表。

返回: PauliWithQbit 对象列表,每个对应项中的一个量子比特。

qubits

python
PauliTerm.qubits() -> tuple[list[int], list[int]]

返回此项中涉及的量子比特,分为仅受恒等作用和受非恒等泡利(XYZ)作用的两组。

返回: 元组 (仅受恒等作用的量子比特, 受非恒等泡利作用的量子比特),每个元素是整数量子比特索引的列表。

max_qbit_idx

python
PauliTerm.max_qbit_idx() -> int

返回此项引用的最大量子比特索引。

返回: 一个整数。

data_3tuple_complex_coeff

python
PauliTerm.data_3tuple_complex_coeff() -> tuple[str, list[int], complex]

以包含泡利字符串、量子比特索引和复系数的单个元组形式返回内部数据。

返回: 例如 ("XXZ", [0, 1, 4], 1+2j)

data_2tuple_complex_coeff

python
PauliTerm.data_2tuple_complex_coeff() -> tuple[str, complex]

使用稀疏表示法(字符串中仅包含非恒等泡利)以 (泡利字符串, 复系数) 元组形式返回内部数据。

返回: 例如 ("Z0", 0.395+0j)

data_3tuple_float_coeff

python
PauliTerm.data_3tuple_float_coeff() -> tuple[str, list[int], float]

以单个带浮点系数的元组形式返回内部数据。如果系数有非零虚部则抛出错误。

返回: 例如 ("XXZ", [0, 1, 4], 1.0)

data_2tuple_float_coeff

python
PauliTerm.data_2tuple_float_coeff() -> tuple[str, float]

使用稀疏表示法以 (泡利字符串, 浮点系数) 元组形式返回内部数据。

返回: 例如 ("Z0", 0.395)

示例

检查 PauliOperator 的项

python
from pyqpanda3.hamiltonian import PauliOperator

# 创建 PauliOperator 并检查其各个项
h = PauliOperator({"Z0 Z1": 0.5, "X0": 0.3})
for term in h.terms():
    print(f"Coefficient: {term.coef()}")
    for pwq in term.paulis():
        print(f"  Qubit {pwq.qbit()}: {pwq.pauli_char()}")
    print()

以不同格式提取数据

python
from pyqpanda3.hamiltonian import PauliOperator

h = PauliOperator({"X0 Y1 Z2": 1.5})
term = h.terms()[0]

# 带复系数的 3 元组
print(term.data_3tuple_complex_coeff())
# 输出: ('XYZ', [0, 1, 2], (1.5+0j))

# 带复系数的 2 元组(稀疏字符串)
print(term.data_2tuple_complex_coeff())
# 输出: ('X0 Y1 Z2', (1.5+0j))

# 浮点变体
print(term.data_3tuple_float_coeff())
print(term.data_2tuple_float_coeff())

检查量子比特参与情况

python
from pyqpanda3.hamiltonian import PauliOperator

h = PauliOperator({"X0 I1 Z2": 1.0})
term = h.terms()[0]

identity_qubits, pauli_qubits = term.qubits()
print("Identity-only qubits:", identity_qubits)   # [1]
print("Non-identity qubits:", pauli_qubits)        # [0, 2]

另见

Released under the MIT License.