快速开始
概述
本章将引导你在 5 分钟内完成 UnitaryLab 算法库的上手流程。完成后,你将能够:
- 导入算法类并调用
.run() - 查看返回的结果字典
- 使用
.test()进行零配置演示 - 定位保存的线路图和结果文件
运行第一个算法——Grover 搜索
Grover 算法在包含 个条目的无序数据库中以 次查询找到目标。以下示例在 3 量子比特寄存器中搜索状态 '101'。
from pathlib import Path
from unitarylab_algorithms import GroverAlgorithm
algo = GroverAlgorithm()
result = algo.run(n=3, target="101")
circuit_path = Path(result["circuit_path"])
txt_path = circuit_path.parent / result["plot"][0]["filename"]
print(result["status"]) # 'ok'
print(result["circuit_path"]) # SVG 线路图的路径
print(txt_path) # 文本结果文件的路径预期输出:
ok
/path/to/grover_algorithm_circuit.svg
/path/to/grover_algorithm_result.txt使用 .test() 快速演示
密码学、基础算法、哈密顿量模拟、线性代数、量子机器学习和态制备等模块普遍提供模块级 .test() 函数,使用内置的合理默认参数调用 .run(),是观察典型输出的最快方式。但并非所有算法都提供该函数——schrodingerization 包下的 3 个偏微分方程算法模块(equation_advection、equation_heat、equation_heat2d)均未定义 test()。
from unitarylab_algorithms.fundamental_algorithm.grover.algorithm import test
test()test() 会返回结构化结果字典,并在执行过程中通过内部日志把运行状态打印到终端;但它不会把返回的结果字典本身整体打印出来,同时会在本地保存线路图和结果文件。
读取结果字典
cryptology、fundamental_algorithm、hamiltonian_simulation、linear_algebra、quantum_machine_learning、state_preparation 六个包的算法均继承 algo_base.BaseAlgorithm 并通过 _build_return_dict() 构造返回值,因此返回统一的字典结构:
result = algo.run(n=3, target="101")
# 执行状态
print(result['status']) # 成功时为 'ok'
# 线路 SVG 图路径
print(result['circuit_path'])
# 文本结果文件名
print(result["plot"][0]["filename"])schrodingerization 包使用独立的基类和手工构造的返回字典,形状与上述结构不同:circuit 是列表而非单个路径,plot 是单个字典而非列表,详见薛定谔化方法章节。
部分算法包含额外字段。例如,Shor 算法会额外返回:
print(result.get('factors')) # 找到的质因数列表运行 Shor 算法
from unitarylab_algorithms import ShorAlgorithm
algo = ShorAlgorithm()
result = algo.run(N=15)
print(result['status'])运行 HHL 线性方程求解器
import numpy as np
from unitarylab_algorithms 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'])运行变分量子本征求解器(VQE)
from unitarylab_algorithms import VQEAlgorithm
algo = VQEAlgorithm()
result = algo.run(n=2, layers=2, max_iter=150)
print(result['status'])下一步
| 目标 | 前往 |
|---|---|
| 一览所有可用算法 | API 使用总览 |
| 密码学算法(Shor、Simon、离散对数) | 密码学算法 |
| 基础量子原语 | 基础量子算法 |
| 哈密顿量演化方法 | 哈密顿量模拟 |
| 量子硬件上的线性代数 | 线性代数算法 |
| 变分与生成模型 | 量子机器学习 |
| 量子态制备方法 | 态制备算法 |
| 偏微分方程求解器 | 薛定谔化方法 |
| 编写自定义算法 | 算法模板指南 |
最后更新于