1个不稳定版本
0.1.0 | 2023年4月28日 |
---|
#473 在 机器学习
17KB
447 行
ThRust
ThRust是一个Rust包,它提供了一个热力学和概率计算的框架。此包目前支持以下功能
- 基本pbit门:
COPY
、NOT
、AND
、OR
。 - 基本的p-circuit编译和可组合性。
- 通过马尔可夫链蒙特卡洛采样进行p-circuit模拟。
教程
GridPbit
用于构建二维晶格。
let p0 = GridPbit::new(0, 0);
let p1 = GridPbit::new(0, 1);
该结构可以用以下方式可视化
Pbits可以用作概率自旋逻辑(PSL)门的输入
let cp0 = Copy::new(p0, p1);
一组PSL门可以用来构建p-circuit
let circuit = Circuit::new();
circuit.append(Box::new(cp0));
circuit.compile();
或者,可以从PSL门的向量中创建电路
let circuit = Circuit::from_vector(vec![Box::new(cp0)]);
circuit.compile();
最后,创建一个新的模拟器,通过马尔可夫链蒙特卡洛找到基态配置
let mut sim = MCMC::new(circuit);
sim.run();
可组合性
ThRust还实现了基本的p-circuit可组合性。例如,以下是一个双门p-circuit的示例
let p1 = GridPbit::new(0, 0);
let p2 = GridPbit::new(0, 1);
let p3 = GridPbit::new(1, 0);
let p4 = GridPbit::new(2, 0);
let p5 = GridPbit::new(2, 1);
let mut circuit = Circuit::new();
circuit.append(Box::new(And::new(p1, p2, p3)));
circuit.append(Box::new(Or::new(p3, p4, p5)));
circuit.compile();
let mut sim = MCMC::new(circuit);
sim.run();
未来添加功能
要实现的功能列表
- 非交集电路的电路编译
- 更健壮的电路编译算法
- 更好的绘图实现,具有更多选项
- 计算并报告可观察量,包括配置能量
- 强制连接约束
- 编译适用于FPGA硬件实现的代码
参考文献
更多关于概率计算的参考资料。
引用
如果您使用此仓库,请引用!
许可
查看LICENSE文件。
依赖项
~17MB
~163K SLoC