量子算子

PennyLane 支持多种量子算子——例如门、噪声通道、状态准备和测量。这些算子可以在量子函数中使用,以下面的示例所示:

import pennylane as qml

def my_quantum_function(x, y):
    qml.RZ(x, wires=0)
    qml.CNOT(wires=[0,1])
    qml.RY(y, wires=1)
    qml.AmplitudeDamping(0.1, wires=0)
    return qml.expval(qml.PauliZ(1))

这个量子函数使用了 RZ, CNOT, RY 门,以及 AmplitudeDamping 噪声信道和 PauliZ 可观测量。

应用于算符的函数提取信息(例如矩阵表示)或转换算符(如将一个门转变为受控门)。

PennyLane 支持以下运算符和运算符函数:

操作符函数

可以使用各种函数和变换来操作算子并提取信息。这些可以分为两个主要类别:

操作符到操作符的函数

adjoint(fn[, lazy])

创建一个算子的伴随或一个应用所提供的函数伴随的函数。

ctrl(op, control[, control_values, work_wires])

创建一个方法,该方法应用所提供操作的受控版本。

cond(条件[, 真值函数, 假值函数, elif条])

量子兼容的if-else条件 --- 基于中途电路量子比特测量结果等参数对量子操作进行条件处理。

exp(op[, coeff, num_steps, id])

取一个算子的指数乘以一个系数。

sum(*加数[, 分组类型, 方法, 标识符, 懒惰])

构造一个运算符,它是给定运算符的总和。

pow(基数[, z, 延迟, id])

将运算符提升到一个幂。

prod(*ops[, id, lazy])

构造一个表示所提供算子的广义乘积的算子。

s_prod(标量, 操作符[, 惰性, id])

构造一个算子,该算子是给定标量和提供的算子的标量积。

generator(操作[, 格式])

返回操作的生成器。

map_wires(输入, 导线图[, 队列, 替换])

根据给定的线图更改操作符、录音带、量子节点或量子函数的连接线。

dot(coeffs, ops[, pauli, grouping_type, method])

返回 coeffs 向量与 ops 算子列表之间的点积。

evolve(*args, **kwargs)

此方法被调用,其功能取决于输入 op 的类型。

simplify(输入)

通过减少算术深度或旋转参数的数量,简化操作符、胶带、量子节点或量子函数。

这些运算符函数作用于运算符以产生新的运算符。

>>> op = qml.prod(qml.PauliX(0), qml.PauliZ(1))
>>> op = qml.sum(qml.Hadamard(0), op)
>>> op = qml.s_prod(1.2, op)
>>> op
1.2 * (H(0) + X(0) @ Z(1))

操作符与其他函数

matrix(op[, wire_order])

一个操作或量子电路的矩阵表示。

eigvals(op[, k, which])

一个或多个操作的特征值。

is_commuting(operation1, operation2)

检查两个操作是否通过查找表进行交换。

is_hermitian(op)

检查该操作是否是厄米的。

is_unitary(op)

检查操作是否为单位算子。

iterative_qpe(base, aux_wire, iters)

执行迭代量子相位估计电路。

这些运算符函数作用于运算符并返回其他数据类型。
所有运算符函数都可以在实例化的运算符上使用。

>>> op = qml.RX(0.54, wires=0)
>>> qml.matrix(op)
[[0.9637709+0.j         0.       -0.26673144j]
[0.       -0.26673144j 0.9637709+0.j        ]]

某些运算符函数也可以以函数形式使用:

>>> x = torch.tensor(0.6, requires_grad=True)
>>> matrix_fn = qml.matrix(qml.RX)
>>> matrix_fn(x, wires=0)
tensor([[0.9553+0.0000j, 0.0000-0.2955j],
        [0.0000-0.2955j, 0.9553+0.0000j]], grad_fn=<StackBackward0>)

在函数形式下,它们通常对门控参数可微分:

>>> loss = torch.real(torch.trace(matrix_fn(x, wires=0)))
>>> loss.backward()
>>> x.grad
tensor(-0.2955)

一些算子变换也可以作用于多个算子,方法是传递量子函数、QNodes或录音带:

>>> def circuit(theta):
...     qml.RX(theta, wires=1)
...     qml.Z(wires=0)
>>> qml.matrix(circuit)(np.pi / 4)
array([[ 0.92387953+0.j,  0.+0.j ,  0.-0.38268343j,  0.+0.j],
[ 0.+0.j,  -0.92387953+0.j,  0.+0.j,  0. +0.38268343j],
[ 0. -0.38268343j,  0.+0.j,  0.92387953+0.j,  0.+0.j],
[ 0.+0.j,  0.+0.38268343j,  0.+0.j,  -0.92387953+0.j]])

矩阵到算子函数

pauli_decompose(H[, hide_identity, ...])

将一个厄米矩阵分解为保利算子的线性组合。

qsvt(A, poly[, encoding_wires, block_encoding])

实现矩阵或哈密顿量 A 的量子奇异值变换 (QSVT),使用由 poly 定义的多项式和由 block_encoding 指定的区块编码。

这些函数接受一个矩阵并返回一个相关的本地 Pennylane 操作符。
例如:

>>> mat = np.array([[1, 1], [1, -1]])
>>> h = qml.pauli_decompose(mat)
>>> type(h)
pennylane.ops.op_math.linear_combination.LinearCombination
>>> print(h)
1.0 * X(0) + 1.0 * Z(0)

量子比特算子

非参数化门

Identity

身份运算符

Hadamard

哈达玛算子

PauliX

保利X算子

PauliY

保利Y算符

PauliZ

保利 Z 算子

S

单量子比特相位门

T

单量子比特 T 门

SX

单量子比特平方根X算子。

CNOT

受控非门运算符

CZ

受控-Z算子

CY

受控-Y算子

CH

受控Hadamard算子

SWAP

交换算符

ISWAP

i-swap算符

ECR

一个回声RZX(\(\pi/2\))门。

SISWAP

i-swap算子的平方根。

SQISW

的别名 pennylane.ops.qubit.non_parametric_ops.SISWAP

CSWAP

受控交换算子

Toffoli

托福利(控制-控制-X)门。

MultiControlledX

应用一个受到任意计算基态控制的保利X门。

Barrier

障碍算子,用于将编译过程分为块或作为可视化工具。

WireCut

线切割操作,用于手动标记线切割的位置。

参数化门

Rot

任意单量子比特旋转

RX

单量子比特X旋转

RY

单量子比特 Y 旋转

RZ

单个量子比特Z旋转

MultiRZ

任意多重 Z 旋转。

PauliRot

任意保利字旋转。

PhaseShift

任意单量子比特局部相位移

ControlledPhaseShift

一个量子比特控制的相位移。

CPhase

别名:pennylane.ops.op_math.controlled_ops.ControlledPhaseShift

PCPhase

一个投影仪控制的相位门。

CPhaseShift00

一个量子比特控制的相位移。

CPhaseShift01

一个量子比特控制的相位移。

CPhaseShift10

一个量子比特控制的相位移。

CRX

受控RX算子

CRY

受控RY算子

CRZ

受控-RZ算子

CRot

受控旋转算子

U1

U1门。

U2

U2 门。

U3

任意单量子比特幺正算子。

IsingXX

伊辛 XX 耦合门

IsingXY

伊辛 (XX + YY) 耦合门

IsingYY

伊辛YY耦合门

IsingZZ

伊辛ZZ耦合门

PSWAP

相位交换门

GlobalPhase

一个全局相位操作,将状态的所有分量乘以\(e^{-i \phi}\)

量子化学门

SingleExcitation

单重激发旋转。

SingleExcitationPlus

在旋转子空间外进行具有正相位移的单激发旋转。

SingleExcitationMinus

旋转子空间外具有负相位偏移的单重激发旋转。

DoubleExcitation

双激发旋转。

DoubleExcitationPlus

在旋转子空间外进行带正相移的双激发旋转。

DoubleExcitationMinus

在旋转子空间外进行负相移的双激发旋转。

OrbitalRotation

自旋适应的空间轨道旋转。

FermionicSWAP

费米子SWAP旋转。

使用OpenFermion工具独立构建的电子哈密顿量可以通过import_operator()函数轻松转换为PennyLane可观察量。

由矩阵构建的门

QubitUnitary

应用一个维度为二的幂的任意单位矩阵。

ControlledQubitUnitary

将任意固定的单位操作应用于 wires,并从 control_wires 控制。

DiagonalQubitUnitary

应用一个任意的对角单位矩阵,其维度是二的幂。

SpecialUnitary

来自群体 \(SU(N)\) 的门,具有 \(N=2^n\),适用于 \(n\) 个量子比特。

BlockEncode

构造一个酉 \(U(A)\),使任意矩阵 \(A\) 编码在左上角块中。

门执行算术运算

QubitCarry

QubitCarry 操作应用于四个输入线。

QubitSum

对三个输入线应用一个 QubitSum 操作。

IntegerComparator

使用整数比较作为条件应用受控Pauli X门。

状态准备

BasisState

准备一个单一的计算基态。

StatePrep

使用给定的计算基中的ket矢量准备子系统。

QubitDensityMatrix

使用给定的密度矩阵准备子系统。

噪声信道

AmplitudeDamping

单量子比特振幅衰减错误通道。

GeneralizedAmplitudeDamping

单量子比特广义幅度阻尼误差通道。

PhaseDamping

单量子比特相位衰减误差通道。

DepolarizingChannel

单量子比特对称去极化误差通道。

BitFlip

单量子比特翻转(保利 \(X\))错误通道。

PhaseFlip

单量子比特翻转(泡利 \(Z\))错误通道。

ResetError

单量子比特重置错误通道。

PauliError

任意数量量子比特的保利算子误差通道。

QubitChannel

应用任意固定量子通道。

ThermalRelaxationError

热弛豫误差通道。

可观察量

Hadamard

哈达玛算子

Hermitian

一个任意的厄米可观测量。

Identity

身份运算符

PauliX

保利X算子

PauliY

保利Y算符

PauliZ

保利 Z 算子

Projector

对应于状态投影仪的可观察量 \(P=\ket{\phi}\bra{\phi}\).

Hamiltonian

别名为 pennylane.ops.op_math.linear_combination.LinearCombination

SparseHamiltonian

哈密顿量直接表示为压缩稀疏行(CSR)格式的稀疏矩阵。

连续变量 (CV) 操作符

如果您想了解更多关于量子计算的CV模型,请查看量子光子学页面的草莓园文档。

CV 门

Identity

身份运算符

Beamsplitter

beam splitter 相互作用。

ControlledAddition

受控加法操作。

ControlledPhase

受控相位操作。

CrossKerr

交叉克尔相互作用。

CubicPhase

立方相位移。

位移

相空间位移。

InterferometerUnitary

一个线性干涉仪根据单位矩阵 \(U\) 转换玻色子算符。

Kerr

凯尔相互作用。

QuadraticPhase

二次相位移。

Rotation

相空间旋转。

挤压

相空间挤压。

TwoModeSqueezing

相空间双模压缩。

CV 状态准备

CatState

准备一个猫态。

CoherentState

准备一个相干态。

DisplacedSqueezedState

准备一个位移压缩真空态。

FockDensityMatrix

使用给定的费米子基中的密度矩阵准备子系统。

FockState

准备一个单一的福克态。

FockStateVector

使用给定的在福克基中的态矢量准备子系统。

GaussianState

准备给定高斯态中的子系统。

SqueezedState

准备一个压缩真空态。

ThermalState

准备一个热态。

CV 可观测量

FockStateProjector

数字态可观测量 \(\ket{n}\bra{n}\)

Identity

身份运算符

NumberOperator

光子数可观测量 \(\langle \hat{n}\rangle\).

TensorN

在不同导线上的 NumberOperator 的张量积。

QuadP

动量象限可观察量 \(\hat{p}\)

PolyXP

一个任意的二阶多项式可观测量。

QuadOperator

广义积分可观测量 \(\x_\phi = \x cos\phi+\p\sin\phi\).

QuadX

位置量测算子 \(\hat{x}\)

Qutrit算子

三位量子比特非参数化门

TShift

三重态移位算子

TClock

三元时钟门

THadamard

三元哈达玛算子

TAdd

2-qutrit 控制加法门

TSWAP

三元交换操作符。

由矩阵构造的三维量子门

QutritUnitary

应用任意的、固定的幺正矩阵。

ControlledQutritUnitary

将任意固定的单位操作应用于 wires,并从 control_wires 控制。

三态参量化门

TRX

单个三能级系统的 X 旋转

尝试

单个 qutrit Y 旋转

TRZ

单个三比特 Z 旋转

三位量子态准备

QutritBasisState

为三元系统准备一个单一的计算基态。

Qutrit 噪声通道

QutritDepolarizingChannel

单三能级对称去极化误差信道。

QutritAmplitudeDamping

单一三维量子比特幅度阻尼误差通道。

TritFlip

单qutrit三进制翻转错误通道,用于在每个qutrit子空间上应用“比特翻转”。

QutritChannel

应用任意固定的三维量子通道。

三元体可观察量

THermitian

任意的Hermitian可观测量用于三态量子比特。

GellMann

三能量系统的Gell-Mann可观测量

脉冲级算子

如果你想了解更多关于PennyLane中脉冲级控制的实现,查看pulse模块文档。

脉冲算子

ParametrizedEvolution

参数化演化门,通过将一个 ParametrizedHamiltonian 传递给 evolve() 函数创建

ParametrizedHamiltonian

可调用对象,包含表示参数化哈密顿量的信息。