Oracle 与算子表示

English · 简体中文

选择输入表示时,应先问上层算法需要怎样访问数据。一个矩阵的 BE、稀疏位置查询和数值 XOR 查询,提供的是不同能力。

表示

可读取的信息

主要用途

BlockEncoding

width、signal_qubits、alpha、capabilities

线性算子组合、QLSS 和演化

StatePreparation

width、work_width、零输入和复净约定

初态、右端态与反射

XorDatabase

address_width、data_width

可逆数据访问

SparseAccess

位置/元素两个操作、sparsity、value_width

CKS 输入及稀疏适配

Operation

公开寄存器、资源与模块依赖

完整量子操作

同一个对象可以提供多种视图。例如完整 unitary U 可以制备 U|0>,也可以作为 alpha=1 的 BE 参加 LCU。算法通过方法和 Python 协议检查这些能力,约定详见算法自己的约定。

归一化常数

若零信号角块满足 ⟨0|U_A|0⟩=A/alpha_A,那么 alpha 是组合所必需的量。乘积的 alpha 相乘;LCU 的 alpha 为各项 abs(coefficient)*alpha 之和。

这个常数不会让执行器额外缩放量子态。它描述实际线路的成功角块。修改 alpha 时必须重新生成依赖它的分支权重和角度。

数据字与幅度

XOR database 返回位模式,不直接提供幅度访问。diagonal_block_encoding 的输入是角度字,所编码的对角元为 alpha*cos(angle/2)。一般矩阵元需要相应的数值到幅度转换。

稀疏输入还需要明确位置 oracle 的可逆形式。当前 CKS 位置接口原地置换 index;保留 index 的 XOR 表不能直接替代它。

开放 oracle

使用 abstract_block_encoding、abstract_state_prep、abstract_database 或 abstract_sparse_access 可以先写算法,再提供实现。开放状态只影响是否能执行或导出,结构检查仍然有效。

完整的绑定例子见教程:替换 oracle,API 见oracle 目录 与 BE 组合。