Science Workflow

量子计算

透过线性类型建模量子态

Back to Science Hub

用Sounio进行量子计算

Sounio透过线性类型在编译时强制执行量子力学的无克隆定理:一个Qubit是一个线性资源,必须恰好消费一次。尝试复制它会产生编译错误。

线性类型与量子态

// 一个Qubit不能被克隆。
// 标准量子门(H, X, Y, Z, CNOT)会消耗和返回Qubits。

fn apply_hadamard(q: Qubit) -> Qubit {
    // 应用H门 ...
}

struct QubitPair { fst: Qubit, snd: Qubit }

fn apply_cnot_pair(control: Qubit, target: Qubit) -> QubitPair {
    // 应用CNOT门 ...
}

fn bell_state() -> QubitPair {
    let q1 = allocate_qubit()
    let q2 = allocate_qubit()

    let h1 = apply_hadamard(q1)
    let pair = apply_cnot_pair(h1, q2)

    pair
}