代码模板

寄存器类型

UnsignedInteger  // 无符号整数
SignedInteger     // 有符号整数
Boolean          // 单比特
Rational         // 有理数(用于角度计算)

C++ 开发模板

#include "sparse_state_simulator.h"
#include "system_operations.h"
#include "quantum_arithmetic.h"

using namespace qram_simulator;

// 1. 在 System 中声明寄存器
auto addr_reg = System::add_register("addr", UnsignedInteger, addr_size);
auto data_reg = System::add_register("data", UnsignedInteger, data_size);

// 2. 创建稀疏态(自动初始化为 |0...0⟩)
std::vector<System> state;
state.emplace_back();

// 3. 应用量子操作
Hadamard_Int(addr_reg)(state);           // 叠加态
QRAMLoad(qram, addr_reg, data_reg)(state); // QRAM 加载
Add_UInt_UInt(data_reg, result_reg)(state); // 算术运算

// 4. 测量/输出
StatePrint(Detail)(state);

Python 开发模板

import pysparq as ps

# 1. 清理静态状态
ps.System.clear()

# 2. 声明寄存器
ps.System.add_register("addr", ps.UnsignedInteger, 4)
ps.System.add_register("data", ps.UnsignedInteger, 4)

# 3. 创建稀疏态
state = ps.SparseState()

# 4. 应用操作
ps.Hadamard_Int("addr")(state)
ps.QRAMLoad(qram, "addr", "data")(state)

# 5. 读取结果
ps.pprint(state)

Grover 搜索模板

// 创建 QRAM
qram_qutrit::QRAMCircuit qram(addr_size, data_size);
qram.set_memory_random();

// 声明寄存器
auto addr_reg = System::add_register("addr", UnsignedInteger, addr_size);
auto data_reg = System::add_register("data", UnsignedInteger, data_size);
auto target_reg = System::add_register("target", UnsignedInteger, data_size);

// 创建态
std::vector<System> state;
state.emplace_back();
Init_Unsafe("target", search_target)(state);

// 应用 Grover 算子
for (size_t i = 0; i < n_repeats; ++i) {
    auto temp_reg = AddRegister("temp", UnsignedInteger, data_size)(state);
    GroverOperator(&qram, addr_reg, temp_reg, target_reg)(state);
    RemoveRegister(temp_reg)(state);
}

块编码模板

参考 SparQ_Algorithm/include/block_encoding.h 实现酉矩阵的块编码。

哈密顿量模拟

参考 Experiments/CKS/ 中的 CKS(Carnegie-Kellam-Schulten)算法实现。