Skip to Content

线性代数算法

概述

unitarylab_algorithms.linear_algebra 包提供了用于线性代数任务的量子算法,包括量子傅里叶变换、线性方程组求解、信号处理和变分方法。

算法任务
QFTQFTAlgorithm量子傅里叶变换
HHLHHLAlgorithm求解线性方程组
LCULCUAlgorithm实现
QSPQSPAlgorithm基于 QSP 的多项式变换
QSVT-QLSAQSVTLinearSolverAlgorithm基于 QSVT 的线性求解器
VQLSVQLSAlgorithm变分量子线性求解器

量子傅里叶变换(QFT)

背景

量子傅里叶变换是离散傅里叶变换的量子类比,将计算基态 映射为:

QFT 是 Shor 算法、QPE、HHL 及许多其他算法的子程序。本模块同时支持逆 QFT

导入

from unitarylab_algorithms.linear_algebra.qft.algorithm import QFTAlgorithm

.run() 参数

参数类型默认值说明
nint量子比特数
statenp.ndarray | NoneNone初始态向量(默认为 `
inverseboolFalse是否执行逆 QFT

示例

import numpy as np from unitarylab_algorithms.linear_algebra.qft.algorithm import QFTAlgorithm algo = QFTAlgorithm() result = algo.run(n=4) print(result['status']) # 'ok' # 逆 QFT result_inv = algo.run(n=4, inverse=True)

快速演示

from unitarylab_algorithms.linear_algebra.qft.algorithm import test test(n=4)

HHL 线性方程组求解算法

背景

Harrow–Hassidim–Lloyd(HHL)算法求解线性方程组 ,时间复杂度为 ,其中 的条件数, 是矩阵维数。经典最优算法为

算法利用 QPE 将 的本征值编码到相位寄存器,然后通过受控旋转计算每个本征值的倒数 ,最后反计算相位寄存器。

要求:

  • 必须是厄米矩阵
  • 的维数必须是 2 的幂次

导入

from unitarylab_algorithms.linear_algebra.hhl.algorithm import HHLAlgorithm

.run() 参数

参数类型说明
Anp.ndarray厄米系数矩阵(维数必须为
bnp.ndarray右侧向量
dint相位寄存器量子比特数(精度

示例

import numpy as np from unitarylab_algorithms.linear_algebra.hhl.algorithm import HHLAlgorithm A = np.array([[0.8, 0], [0, 0.4]]) b = np.array([1, 2]) algo = HHLAlgorithm() result = algo.run(A=A, b=b, d=11) print(result['status'])

快速演示

from unitarylab_algorithms.linear_algebra.hhl.algorithm import test test(A=[[0.8, 0], [0, 0.4]], b=[1, 2], d=11)

注意事项

  • 较大的 d 可获得更高精度,但会显著增加线路深度。
  • 强烈建议使用条件数较小(条件良好)的矩阵进行实验。

线性酉组合(LCU)算法

背景

LCU 通过将系数 编码到辅助”制备”寄存器,并对该寄存器进行条件应用酉算符 ,来实现非酉算符 。LCU 是哈密顿量模拟、QSVT 和块编码的核心原语。

导入

from unitarylab_algorithms.linear_algebra.lcu.algorithm import LCUAlgorithm

.run() 参数

参数类型默认值说明
alphasList[float]非负系数列表
unitariesList[Circuit]酉算符线路列表
n_sysint系统寄存器量子比特数
initial_stateCircuit | NoneNone制备系统初始态的线路(可选)

示例

from unitarylab_algorithms.linear_algebra.lcu.algorithm import LCUAlgorithm # 构造酉线路(如 Pauli 算符),然后与系数一起传入 algo = LCUAlgorithm() result = algo.run(alphas=[0.6, 0.4], unitaries=[U_I, U_X], n_sys=1) print(result['status'])

快速演示

from unitarylab_algorithms.linear_algebra.lcu.algorithm import test test(n=1, alphas=[0.6, 0.4], paulis=['I', 'X'])

量子信号处理(QSP)

背景

linear_algebra.qsp 模块实现了 QSP 多项式变换,用于模拟给定本征值 下的 演化。它是 QSVT 和其他高级算法的子程序。

导入

from unitarylab_algorithms.linear_algebra.qsp.algorithm import QSPAlgorithm

.run() 参数

参数类型默认值说明
tfloat目标演化时间
dint多项式阶数
xfloat0.5测试本征值(

示例

from unitarylab_algorithms.linear_algebra.qsp.algorithm import QSPAlgorithm algo = QSPAlgorithm() result = algo.run(t=1.0, d=10, x=0.5) print(result['status'])

快速演示

from unitarylab_algorithms.linear_algebra.qsp.algorithm import test test(t=1.0, d=10, x=0.5)

基于 QSVT 的线性方程组求解算法

背景

量子奇异值变换(QSVT)通过块编码将 QSP 推广到任意矩阵,从而对奇异值进行多项式变换。QSVT 线性求解器利用这一框架对 的奇异值实现矩阵逆函数 ,以最优查询复杂度求解

导入

from unitarylab_algorithms.linear_algebra.qsvt_qlsa.algorithm import QSVTLinearSolverAlgorithm

.run() 参数

参数类型说明
Anp.ndarray系数矩阵
bnp.ndarray右侧向量
epsilonfloat目标近似精度

示例

import numpy as np from unitarylab_algorithms.linear_algebra.qsvt_qlsa.algorithm import QSVTLinearSolverAlgorithm A = np.array([[0.8, 0.1], [0.1, 0.6]]) b = np.array([1.0, 0.5]) algo = QSVTLinearSolverAlgorithm() result = algo.run(A=A, b=b, epsilon=1e-3) print(result['status'])

变分量子线性求解器(VQLS)

背景

VQLS 是一种适用于近期量子设备(NISQ)的变分算法,用于求解线性方程组。通过变分拟设参数化解态,最小化基于残差 的代价函数。系数矩阵被表达为线性组合

导入

from unitarylab_algorithms.linear_algebra.vqls.algorithm import VQLSAlgorithm

.run() 参数

参数类型默认值说明
n_qubitsint3系统量子比特数
coefficientsList[float] | None[1.0, 0.2, 0.2]系数
max_iterationsint200最大优化迭代次数
tolerancefloat1e-6收敛容差
initial_spreadfloat0.5初始参数的随机范围

示例

from unitarylab_algorithms.linear_algebra.vqls.algorithm import VQLSAlgorithm algo = VQLSAlgorithm() result = algo.run(n_qubits=3, coefficients=[1.0, 0.2, 0.2], max_iterations=200) print(result['status'])

快速演示

from unitarylab_algorithms.linear_algebra.vqls.algorithm import test test(n=3, coefficients=[1.0, 0.2, 0.2], max_iterations=100)
最后更新于