16个版本 (5个重大更改)
0.6.0 | 2024年7月21日 |
---|---|
0.5.1 | 2024年2月4日 |
0.4.0 | 2023年12月22日 |
0.3.0 | 2023年11月17日 |
#10 in 模拟
每月217次下载
155KB
2.5K SLoC
quantr
此crate尚未准备好用于生产,因此不应被视为稳定,也不会产生正确答案。它仍在积极开发中,需要进行更多优化。如果您打算使用quantr进行项目,请务必使用其他模拟来检查答案。
一个专注于内存效率和可访问性的基于门的量子电路模拟的Rust库crate。
此crate允许用户通过添加各种方法中的门列来构建量子电路。一旦构建了电路,就可以对其进行模拟,这将附加寄存器|00..0>,从而产生可以测量的叠加态。Quantr主要针对纯态的模拟。
有关使用quantr的简要示例,请参阅快速入门指南,该指南通过Grover算法的实现进行操作。
定义特性
- 旨在使Rust初学者易于访问。
- 物理可观测量与非物理可观测量的区别,后者可以从电路中提取出来是明确的,后者仍然是可检索的。
- 将电路图打印到终端或保存为UTF-8字符串的文本文件。
- 可以通过提供其在乘积状态上的显式映射来轻松实现自定义门。这使用户可以避免将门表示为矩阵。
- 自定义门不必是幺正的,允许实现某些量子信道。
- 可以在可处理的时间内模拟多达~16个比特的电路。
- 只使用安全的Rust代码,唯一依赖项是fastrand (2.1.0) crate、num_complex (0.4.6)以及它们的子依赖项。
用法
模拟和打印两个比特电路的示例
use quantr::{Circuit, Gate, Printer, Measurement::Observable};
fn main() {
let mut quantum_circuit: Circuit = Circuit::new(2).unwrap();
quantum_circuit
.add_gates(&[Gate::H, Gate::Y]).unwrap()
.add_gate(Gate::CNot(0), 1).unwrap();
let mut printer = Printer::new(&quantum_circuit);
printer.print_diagram();
// The above prints the following:
// ┏━━━┓
// ┨ H ┠──█──
// ┗━━━┛ │
// │
// ┏━━━┓┏━┷━┓
// ┨ Y ┠┨ X ┠
// ┗━━━┛┗━━━┛
let simulated_circuit = quantum_circuit.simulate();
// Below prints the number of times that each state was observered
// over 500 measurements of superpositions.
if let Observable(bin_count) = simulated_circuit.measure_all(500) {
println!("[Observable] Bin count of observed states.");
for (state, count) in bin_count {
println!("|{}> observed {} times", state, count);
}
}
}
有关使用quantr的更详细示例,请参阅快速入门指南。
限制(目前)
- 不考虑噪声,然而这可以通过自定义门(尽管很繁琐)实现。
- 没有并行化选项。
- 无法添加经典线或测量量子电路中单个线的门。只有一个方法,即在所有量子位线的末尾附加一个测量门。
- 主要用于纯态向量的模拟。虽然,通过使用自定义门,可以实现一些量子通道。例如,请参阅
examples/post_select.rs
。
约定
在计算基中标记乘积状态的线的顺序定义为
|a⟩ ────
|b⟩ ──── ⟺ |a,b,c,⋯⟩ ≡ |a⟩⊗|b⟩⊗|c⟩⊗⋯
|c⟩ ────
⋮ ⋮
当定义一个依赖于控制节点位置以定义门的自定义函数(如CNot和Toffoli门)时,必须定义为最右侧的乘积状态被认为是“激活”的门。通常,最好假设自定义函数不定义控制节点,而是扩展函数的定义域。最后,需要注意的是,自定义门没有进行有效量子通道的检查。
文档
Quantr 书籍计划作为 quantr 的扩展文档,例如解释选择算法背后的动机。目前,它只包含入门指南和一些 quantr 的内存效率的初步结果。
对于在线代码文档,请参阅crates.io。这也可以通过克隆项目、进入目录并运行以下命令在本地构建和打开:cargo doc --open
。
其他量子计算机模拟器
另一个更稳定的Rust编写的量子电路模拟器是Spinoza。
网站Are We Quantum Yet(检查日期:2023年10月24日)列出了所有使用Rust的量子计算内容。
Quirk 是一个实用且非常实用的量子计算学习模拟器Quirk。它是一个实时在线模拟器,通过拖放门进行接口。请注意,与 quantr 的标签相比,Quirk 中的计算基中状态的标签是相反的。
许可证
Quantr 根据 EUPL-1.2 或更高版本授权。您可以在https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12获得许可证副本。英文版的 EUPL-1.2 许可证在LICENCE.txt中提供,该文件位于本存储库的根目录中。第三方软件的许可证和 quantr 项目的详细信息可以在COPYRIGHT.txt中找到。
依赖项
~300KB