Skip to Content

基础量子算法

概述

unitarylab_algorithms.fundamental_algorithm 包提供了构成高级算法基础的核心量子原语:

算法用途
Grover 搜索GroverAlgorithm无结构搜索的二次加速
量子相位估计QPEAlgorithm提取酉算符的本征相位
振幅放大(Amplitude Amplification)AmplitudeAmplificationAlgorithm提高目标态的测量概率
量子振幅估计(QAE)AmplitudeEstimationAlgorithm估计目标态的振幅
Hadamard 测试HadamardTestAlgorithm估计期望值和态重叠度
Hadamard 变换HadamardTransformAlgorithm 比特全局 Hadamard 变换

Grover 搜索算法

背景

Grover 算法在包含 个条目的无序数据库中以 次预言机查询找到目标,经典方法需要 次。该算法是无结构量子搜索的最优算法,也是许多其他算法的重要子程序。

算法通过迭代 Grover 扩散算符(均值反转)与翻转目标态相位的 Oracle 来实现放大。

导入

from unitarylab_algorithms.fundamental_algorithm.grover.algorithm import GroverAlgorithm

.run() 参数

参数类型说明
nint数据寄存器的量子比特数
targetstr目标态的二进制字符串(如 3 比特下的 '101'

示例

from unitarylab_algorithms.fundamental_algorithm.grover.algorithm import GroverAlgorithm algo = GroverAlgorithm() result = algo.run(n=3, target='101') print(result['status']) # 'ok'

快速演示

from unitarylab_algorithms.fundamental_algorithm.grover.algorithm import test test(n=3, target='101')

量子相位估计(QPE)

背景

QPE 提取酉算符 的本征相位 ,其中 。使用 个辅助量子比特时,相位估计精度为

QPE 是 Shor 算法、HHL 和量子化学模拟的关键子程序。

导入

from unitarylab_algorithms.fundamental_algorithm.qpe.algorithm import QPEAlgorithm

.run() 参数

参数类型默认值说明
UCircuit待估计本征相位的酉算符线路
dint相位寄存器量子比特数(精度为
prepare_targetCircuit | NoneNone制备本征态的线路(默认为 $

直接构建 QPE 线路

QPEAlgorithm 还提供了将 QPE 嵌入更大线路的工具方法:

qpe_circuit = algo.build_qpe_circuit(U=U, d=4)

示例

from unitarylab.core import Circuit from unitarylab_algorithms.fundamental_algorithm.qpe.algorithm import QPEAlgorithm # T 门的本征相位为 π/4 = 0.125(以 2π 为单位) U = Circuit(1) U.t(0) algo = QPEAlgorithm() result = algo.run(U=U, d=4) print(result['status'])

快速演示

from unitarylab_algorithms.fundamental_algorithm.qpe.algorithm import test test(p=0.25, n=3)

振幅放大(Amplitude Amplification)

背景

振幅放大是 Grover 算法的推广:给定态制备酉算符 和一个标记”好”态的预言机,通过反复应用类 Grover 反射算符来放大好态的振幅。迭代次数由初始成功概率 自动推断,也可手动指定。

导入

from unitarylab_algorithms.fundamental_algorithm.amplitude_amplification.algorithm import AmplitudeAmplificationAlgorithm

.run() 参数

参数类型默认值说明
UCircuit态制备线路(不含辅助比特)
good_zero_qubitsList[int]目标态中必须为 $
pfloat初始成功概率(用于推断迭代次数)
repsint | NoneNone手动指定迭代次数(覆盖基于 的计算)

示例

from unitarylab_algorithms.fundamental_algorithm.amplitude_amplification.algorithm import AmplitudeAmplificationAlgorithm algo = AmplitudeAmplificationAlgorithm() result = algo.run(U=my_circuit, good_zero_qubits=[0], p=0.1, reps=3) print(result['status'])

快速演示

from unitarylab_algorithms.fundamental_algorithm.amplitude_amplification.algorithm import test test(p=0.1, reps=3)

量子振幅估计(QAE)

背景

量子振幅估计(QAE)估计态制备酉算符 中目标态的振幅 。它结合振幅放大与 QPE,使用 个辅助比特时均方根误差为

导入

from unitarylab_algorithms.fundamental_algorithm.amplitude_estimation.algorithm import AmplitudeEstimationAlgorithm

.run() 参数

参数类型默认值说明
UCircuit态制备酉算符
good_zero_qubitsList[int]定义目标态的比特索引
dint6相位寄存器量子比特数(精度

示例

from unitarylab_algorithms.fundamental_algorithm.amplitude_estimation.algorithm import AmplitudeEstimationAlgorithm algo = AmplitudeEstimationAlgorithm() result = algo.run(U=my_circuit, good_zero_qubits=[0], d=6) print(result['status'])

快速演示

from unitarylab_algorithms.fundamental_algorithm.amplitude_estimation.algorithm import test test(p=0.36, d=6)

Hadamard 测试

背景

Hadamard 测试利用单个辅助量子比特估计酉算符 关于态 的期望值 。支持三种模式:

  • expectation——估计 (当 imag=True 时估计虚部)
  • swap_test——估计两个态的重叠度
  • phase_estimation——执行单比特相位估计

导入

from unitarylab_algorithms.fundamental_algorithm.hadamard_test.algorithm import HadamardTestAlgorithm

.run() 参数

参数类型默认值说明
modestr'expectation'运行模式:'expectation''swap_test''phase_estimation' 之一
UCircuit | NoneNone酉算符线路(swap_test 模式下不使用)
prepare_psiCircuit | NoneNone制备 $
prepare_phiCircuit | NoneNone制备 $
imagboolFalse提取虚部(仅 expectation 模式有效)
shotsint20000统计采样的测量次数

示例

from unitarylab_algorithms.fundamental_algorithm.hadamard_test.algorithm import HadamardTestAlgorithm algo = HadamardTestAlgorithm() result = algo.run(mode='expectation', U=my_U, prepare_psi=my_psi, shots=20000) print(result['status'])

快速演示

from unitarylab_algorithms.fundamental_algorithm.hadamard_test.algorithm import test test(U=[[1, 0], [0, 1]], psi=[1, 2], shots=0)

Hadamard 变换

背景

比特 Hadamard 变换对每个量子比特同时施加一个 Hadamard 门,将计算基态 映射到所有基态的等权叠加(从 出发时)。该变换是自逆的(反射性)。

导入

from unitarylab_algorithms.fundamental_algorithm.hadamard_transform.algorithm import HadamardTransformAlgorithm

.run() 参数

参数类型默认值说明
nint3量子比特数
modestr'superposition''superposition'(叠加态生成)或 'reflexive_test'(反射性验证)

示例

from unitarylab_algorithms.fundamental_algorithm.hadamard_transform.algorithm import HadamardTransformAlgorithm algo = HadamardTransformAlgorithm() result = algo.run(n=4, mode='superposition') print(result['status'])

快速演示

from unitarylab_algorithms.fundamental_algorithm.hadamard_transform.algorithm import test test(n=3)
最后更新于