QuantumChannel -- Chi, Choi, SuperOp, PTM, Kraus
量子信道描述了量子态最一般的物理演化。在 pyqpanda3 中,量子信道可以用五种数学上等价的形式表示。每种表示类可以通过其构造函数自由转换为任何其他表示。
所有信道表示共享一个公共基类 QuantumChannel,并提供演化量子态和查询维度的方法。
QuantumChannel
所有量子信道表示的抽象基类。QuantumChannel 不能直接构造 — 请使用其具体子类(Kraus、Chi、Choi、SuperOp、PTM)。
签名
QuantumChannel(*args, **kwargs)注意: 构造函数接受
*args, **kwargs仅供内部使用。请通过具体信道类型的命名构造函数创建实例(如Kraus()、Choi())。
所有信道子类从 QuantumChannel 继承以下公共方法:
| 方法 | 返回类型 | 说明 |
|---|---|---|
evolve(state) | DensityMatrix | 将信道应用于量子态 |
get_input_dim() | int | 返回输入希尔伯特空间维度 |
get_output_dim() | int | 返回输出希尔伯特空间维度 |
StateSystemType
量子态表示中量子比特排序约定的枚举。指定态标签中的比特串如何映射到量子比特索引。
值
| 值 | 说明 |
|---|---|
Q2Q1Q0 | 标准排序:在态标签 '10' 中,量子比特 1 为 '1',量子比特 0 为 '0' |
示例
from pyqpanda3.quantum_info import StateSystemType
ordering = StateSystemType.Q2Q1Q0
print(ordering) # StateSystemType.Q2Q1Q0数学背景
量子信道
| 表示 | 矩阵维度 | 说明 |
|---|---|---|
| Kraus | -- | 算符集合 |
| SuperOp | 列堆叠基下的超算符矩阵 | |
| Choi | Choi 矩阵 | |
| Chi | 泡利基下的 Chi 矩阵 | |
| PTM | 泡利传输矩阵 |
Kraus
量子信道的 Kraus 表示。Kraus 形式的信道由一组算符
满足保迹条件
Kraus 类还支持具有独立左右算符列表的双边(广义)形式:
构造函数
默认
Kraus()构造没有算符的空 Kraus 对象。
从单个算符(Eigen 矩阵)
Kraus(matrix: numpy.ndarray)从单个二维矩阵构造 Kraus 对象。左算符列表包含给定矩阵;右算符列表为空。
| 参数 | 类型 | 说明 |
|---|---|---|
| matrix | numpy.ndarray | 单个算符矩阵。 |
从单个算符(Matrix)
Kraus(matrix: Matrix)与上面相同但接受 Matrix 对象。
| 参数 | 类型 | 说明 |
|---|---|---|
| matrix | Matrix | 作为 Matrix 的单个算符。 |
从算符列表(仅左)
Kraus(left: list[numpy.ndarray])从二维矩阵列表构造 Kraus 对象。左算符列表被填充;右算符列表为空。
| 参数 | 类型 | 说明 |
|---|---|---|
| left | list[numpy.ndarray] | Kraus 算符矩阵列表。 |
从两个算符列表(左右)
Kraus(left: list[numpy.ndarray], right: list[numpy.ndarray])从独立的左右算符列表构造双边 Kraus 对象。
| 参数 | 类型 | 说明 |
|---|---|---|
| left | list[numpy.ndarray] | 左算符列表。 |
| right | list[numpy.ndarray] | 右算符列表。 |
从其他信道表示
Kraus(other: Choi)
Kraus(other: Chi)
Kraus(other: SuperOp)
Kraus(other: PTM)
Kraus(other: Kraus)将其他信道表示转换为 Kraus 形式。
方法
evolve
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix将信道应用于量子态并返回结果作为 DensityMatrix。
get_input_dim
get_input_dim() -> int返回信道的输入希尔伯特空间维度。
get_output_dim
get_output_dim() -> int返回信道的输出希尔伯特空间维度。
left
left() -> list返回左算符列表。
right
right() -> list返回右算符列表。
append
append(other: Kraus)将另一个 Kraus 对象的算符追加到此对象的末尾。
| 参数 | 类型 | 说明 |
|---|---|---|
| other | Kraus | 要追加其算符的另一个 Kraus 对象。 |
left_push_back
left_push_back(val: Matrix)
left_push_back(val: numpy.ndarray)将单个矩阵追加到左算符列表。
right_push_back
right_push_back(val: Matrix)
right_push_back(val: numpy.ndarray)将单个矩阵追加到右算符列表。
clear
clear()移除左右列表中的所有算符。
运算符
相等
k_a == k_b -> bool如果两个 Kraus 对象具有相同的内部数据则返回 True。
Chi
泡利基下的 Chi(过程)矩阵表示。对于信道
其中
构造函数
Chi(other: Chi)
Chi(other: Choi)
Chi(other: PTM)
Chi(other: SuperOp)
Chi(other: Kraus)通过从任何其他信道表示转换来构造 Chi 对象。
方法
evolve
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix将信道应用于量子态并返回结果。
get_input_dim
get_input_dim() -> int返回输入希尔伯特空间维度。
get_output_dim
get_output_dim() -> int返回输出希尔伯特空间维度。
ndarray
ndarray() -> numpy.ndarray返回内部 Chi 矩阵作为 numpy.ndarray。
运算符
相等
chi_a == chi_b -> boolChoi
Choi 矩阵表示(也称为 Choi-Jamiolkowski 同构)。对于作用于
结果矩阵的维度为
构造函数
Choi(other: Kraus)
Choi(other: Choi)
Choi(other: PTM)
Choi(other: Chi)
Choi(other: SuperOp)通过从任何其他信道表示转换来构造 Choi 对象。
方法
evolve
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix将信道应用于量子态并返回结果。
get_input_dim
get_input_dim() -> int返回输入希尔伯特空间维度。
get_output_dim
get_output_dim() -> int返回输出希尔伯特空间维度。
运算符
相等
choi_a == choi_b -> boolSuperOp
超算符(泡利基)矩阵表示。超算符
结果矩阵的维度为
构造函数
SuperOp(other: Choi)
SuperOp(other: SuperOp)
SuperOp(other: Chi)
SuperOp(other: PTM)
SuperOp(other: Kraus)通过从任何其他信道表示转换来构造 SuperOp 对象。
方法
evolve
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix将信道应用于量子态并返回结果。
get_input_dim
get_input_dim() -> int返回输入希尔伯特空间维度。
get_output_dim
get_output_dim() -> int返回输出希尔伯特空间维度。
运算符
相等
s_a == s_b -> boolPTM
泡利传输矩阵表示。PTM
其中
构造函数
PTM(other: Choi)
PTM(other: PTM)
PTM(other: Chi)
PTM(other: SuperOp)
PTM(other: Kraus)通过从任何其他信道表示转换来构造 PTM 对象。
方法
evolve
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix将信道应用于量子态并返回结果。
get_input_dim
get_input_dim() -> int返回输入希尔伯特空间维度。
get_output_dim
get_output_dim() -> int返回输出希尔伯特空间维度。
运算符
相等
ptm_a == ptm_b -> bool示例
import numpy as np
from pyqpanda3.quantum_info import Kraus, Chi, Choi, SuperOp, PTM, DensityMatrix
# 定义单量子比特的去极化信道
# E(rho) = (1-p)*rho + (p/3)*(X*rho*X + Y*rho*Y + Z*rho*Z)
p = 0.1
I = np.eye(2, dtype=complex)
X = np.array([[0, 1], [1, 0]], dtype=complex)
Y = np.array([[0, -1j], [1j, 0]], dtype=complex)
Z = np.array([[1, 0], [0, -1]], dtype=complex)
K0 = np.sqrt(1 - p) * I
K1 = np.sqrt(p / 3) * X
K2 = np.sqrt(p / 3) * Y
K3 = np.sqrt(p / 3) * Z
kraus = Kraus([K0, K1, K2, K3])
# 转换为其他表示
choi = Choi(kraus)
chi = Chi(kraus)
superop = SuperOp(kraus)
ptm = PTM(kraus)
# 演化密度矩阵
rho = DensityMatrix([[1, 0], [0, 0]])
rho_out = kraus.evolve(rho)
# 查询维度
print(kraus.get_input_dim()) # 2
print(kraus.get_output_dim()) # 2