1 个不稳定版本

0.1.0 2019年4月10日

#10 in #quantum-computer-simulator


2 个crate中(通过 q1tsim)使用

Apache-2.0

6KB

q1tsim

Build Status License Released API docs

一个简单、高效的量子计算机模拟器。

概述

q1tsim是一个量子计算机的模拟器库,用Rust编写。它的目标是成为一个易于使用、高效的模拟器,用于量子算法的开发和测试。

特性

  • 易于实现和模拟量子电路
  • 支持创建任意量子门
  • 已包含大多数常见的量子门
  • XYZ 基础上进行测量
  • 测量不影响量子状态的可能性
  • 创建多次运行测量结果的直方图
  • 基于经典值的条件操作
  • 将电路导出到Open QASM和c-QASM,以便在其他计算机或模拟器上运行程序
  • 将电路导出到LaTeX,用于绘制电路图
  • 高效模拟稳定电路

用法

要在Rust应用程序中使用q1tsim,请将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
q1tsim = "0.5"

以下是一个示例,演示了|000>量子状态的3量子比特量子傅里叶变换

extern crate q1tsim;

use q1tsim::{circuit, gates};

fn main()
{
    // The number of times this circuit is evaluated
    let nr_runs = 8192;

    // Create a quantum circuit with 3 quantum bits and 3 classical (measurement)
    // bits. The circuit starts by default with all quantum bits in the |0⟩ state,
    // so in this case |000⟩.
    let mut circuit = circuit::Circuit::new(3, 3);

    // Set up a 3-qubit quantum Fourier transform
    // There is no predefined method on Circuit that implements a controlled
    // `S` or `T` gate, so we use the `add_gate()` method for those.
    circuit.h(2);
    circuit.add_gate(gates::CS::new(), &[1, 2]);
    circuit.add_gate(gates::CT::new(), &[0, 2]);
    circuit.h(1);
    circuit.add_gate(gates::CS::new(), &[0, 1]);
    circuit.h(0);
    circuit.add_gate(gates::Swap::new(), &[0, 2]);

    // Measure all quantum bits in the Pauli `Z` basis
    circuit.measure_all(&[0, 1, 2]);

    // Actually calculate the resulting quantum state and perform the measurements,
    // averaging over `nr_runs` runs.
    circuit.execute(nr_runs);

    // And print the results.
    let hist = circuit.histogram_string().unwrap();
    for (bits, count) in hist
    {
        println!("{}: {}", bits, count);
    }
}

结果应该是八个可能状态(000、001、...、111)的相对均匀分布。

docs.rs 上阅读完整的API文档。


lib.rs:

此crate为qt1sim量子计算机模拟器提供派生宏。有关更多详细信息,请参阅 crate文档

依赖关系

~2MB
~47K SLoC