Skip to content

QuantumChannel -- Chi, Choi, SuperOp, PTM, Kraus

量子信道描述了量子态最一般的物理演化。在 pyqpanda3 中,量子信道可以用五种数学上等价的形式表示。每种表示类可以通过其构造函数自由转换为任何其他表示。

所有信道表示共享一个公共基类 QuantumChannel,并提供演化量子态和查询维度的方法。


QuantumChannel

所有量子信道表示的抽象基类。QuantumChannel 不能直接构造 — 请使用其具体子类(KrausChiChoiSuperOpPTM)。

签名

python
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'

示例

python
from pyqpanda3.quantum_info import StateSystemType

ordering = StateSystemType.Q2Q1Q0
print(ordering)  # StateSystemType.Q2Q1Q0

数学背景

量子信道 E 是一个完全正保迹(CPTP)映射。五种表示为:

表示矩阵维度说明
Kraus--算符集合 {Ki},使得 E(ρ)=iKiρKi
SuperOpd2×d2列堆叠基下的超算符矩阵 S
Choid2×d2Choi 矩阵 Λ=ij|ij|E(|ij|)
Chid2×d2泡利基下的 Chi 矩阵
PTMd2×d2泡利传输矩阵

Kraus

量子信道的 Kraus 表示。Kraus 形式的信道由一组算符 {Ki} 定义:

E(ρ)=iKiρKi

满足保迹条件 iKiKi=I

Kraus 类还支持具有独立左右算符列表的双边(广义)形式:

E(ρ)=iLiρRi

构造函数

默认

python
Kraus()

构造没有算符的空 Kraus 对象。

从单个算符(Eigen 矩阵)

python
Kraus(matrix: numpy.ndarray)

从单个二维矩阵构造 Kraus 对象。左算符列表包含给定矩阵;右算符列表为空。

参数类型说明
matrixnumpy.ndarray单个算符矩阵。

从单个算符(Matrix)

python
Kraus(matrix: Matrix)

与上面相同但接受 Matrix 对象。

参数类型说明
matrixMatrix作为 Matrix 的单个算符。

从算符列表(仅左)

python
Kraus(left: list[numpy.ndarray])

从二维矩阵列表构造 Kraus 对象。左算符列表被填充;右算符列表为空。

参数类型说明
leftlist[numpy.ndarray]Kraus 算符矩阵列表。

从两个算符列表(左右)

python
Kraus(left: list[numpy.ndarray], right: list[numpy.ndarray])

从独立的左右算符列表构造双边 Kraus 对象。

参数类型说明
leftlist[numpy.ndarray]左算符列表。
rightlist[numpy.ndarray]右算符列表。

从其他信道表示

python
Kraus(other: Choi)
Kraus(other: Chi)
Kraus(other: SuperOp)
Kraus(other: PTM)
Kraus(other: Kraus)

将其他信道表示转换为 Kraus 形式。

方法

evolve

python
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix

将信道应用于量子态并返回结果作为 DensityMatrix

get_input_dim

python
get_input_dim() -> int

返回信道的输入希尔伯特空间维度。

get_output_dim

python
get_output_dim() -> int

返回信道的输出希尔伯特空间维度。

left

python
left() -> list

返回左算符列表。

python
right() -> list

返回右算符列表。

append

python
append(other: Kraus)

将另一个 Kraus 对象的算符追加到此对象的末尾。

参数类型说明
otherKraus要追加其算符的另一个 Kraus 对象。

left_push_back

python
left_push_back(val: Matrix)
left_push_back(val: numpy.ndarray)

将单个矩阵追加到左算符列表。

right_push_back

python
right_push_back(val: Matrix)
right_push_back(val: numpy.ndarray)

将单个矩阵追加到右算符列表。

clear

python
clear()

移除左右列表中的所有算符。

运算符

相等

python
k_a == k_b -> bool

如果两个 Kraus 对象具有相同的内部数据则返回 True


Chi

泡利基下的 Chi(过程)矩阵表示。对于信道 E,Chi 矩阵 χ 定义为:

E(ρ)=m,nχmnPmρPn

其中 {Pm} 是泡利算符集合。

构造函数

python
Chi(other: Chi)
Chi(other: Choi)
Chi(other: PTM)
Chi(other: SuperOp)
Chi(other: Kraus)

通过从任何其他信道表示转换来构造 Chi 对象。

方法

evolve

python
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix

将信道应用于量子态并返回结果。

get_input_dim

python
get_input_dim() -> int

返回输入希尔伯特空间维度。

get_output_dim

python
get_output_dim() -> int

返回输出希尔伯特空间维度。

ndarray

python
ndarray() -> numpy.ndarray

返回内部 Chi 矩阵作为 numpy.ndarray

运算符

相等

python
chi_a == chi_b -> bool

Choi

Choi 矩阵表示(也称为 Choi-Jamiolkowski 同构)。对于作用于 d 维系统的信道 E,Choi 矩阵为:

Λ=i,j=0d1|ij|E(|ij|)

结果矩阵的维度为 d2×d2

构造函数

python
Choi(other: Kraus)
Choi(other: Choi)
Choi(other: PTM)
Choi(other: Chi)
Choi(other: SuperOp)

通过从任何其他信道表示转换来构造 Choi 对象。

方法

evolve

python
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix

将信道应用于量子态并返回结果。

get_input_dim

python
get_input_dim() -> int

返回输入希尔伯特空间维度。

get_output_dim

python
get_output_dim() -> int

返回输出希尔伯特空间维度。

运算符

相等

python
choi_a == choi_b -> bool

SuperOp

超算符(泡利基)矩阵表示。超算符 S 作用于矢量化密度矩阵:

vec(E(ρ))=Svec(ρ)

结果矩阵的维度为 d2×d2

构造函数

python
SuperOp(other: Choi)
SuperOp(other: SuperOp)
SuperOp(other: Chi)
SuperOp(other: PTM)
SuperOp(other: Kraus)

通过从任何其他信道表示转换来构造 SuperOp 对象。

方法

evolve

python
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix

将信道应用于量子态并返回结果。

get_input_dim

python
get_input_dim() -> int

返回输入希尔伯特空间维度。

get_output_dim

python
get_output_dim() -> int

返回输出希尔伯特空间维度。

运算符

相等

python
s_a == s_b -> bool

PTM

泡利传输矩阵表示。PTM R 在泡利基中编码信道:

Rmn=1dTr[PmE(Pn)]

其中 {Pm} 是归一化泡利基。PTM 是实值 d2×d2 矩阵。

构造函数

python
PTM(other: Choi)
PTM(other: PTM)
PTM(other: Chi)
PTM(other: SuperOp)
PTM(other: Kraus)

通过从任何其他信道表示转换来构造 PTM 对象。

方法

evolve

python
evolve(state: DensityMatrix) -> DensityMatrix
evolve(state: StateVector) -> DensityMatrix

将信道应用于量子态并返回结果。

get_input_dim

python
get_input_dim() -> int

返回输入希尔伯特空间维度。

get_output_dim

python
get_output_dim() -> int

返回输出希尔伯特空间维度。

运算符

相等

python
ptm_a == ptm_b -> bool

示例

python
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

另见

Released under the MIT License.