bra-ket プリミティブ
daitai-algebra v1.4 には、量子的および古典的な状態を同じ語彙で書けるようにする、小さな bra-ket プリミティブの集合が含まれます。本ページは概念的入門です。演算子の完全な目録は ステップ意味論 を参照してください。
なぜ汎用代数に bra-ket か?
bra-ket 記法は奇異なものではありません。次のような事柄を語る、もっとも清潔な方法です:
- 可能性の重ね合わせでありうる状態ベクトル;
- そのベクトルの双対;
- 「これら二つの状態はどれだけ整列しているか」を問う内積;
- 「この結果を観測する確率は」を問う射影。
これらの問いはすべて、古典的な機械学習・統計・情報理論にも装いを変えて現れます。一度、一つの記法で名付けてしまえば、記法間の翻訳から生じるバグの一群を取り除けます。
プリミティブ
| 記号 | 種 | 意味 |
|---|---|---|
|ψ⟩ | Ket | 状態ベクトル |
⟨ψ| | Bra | ket の双対 |
⟨φ|ψ⟩ | Scalar | 内積 |
|ψ⟩⟨φ| | Operator | 外積(階数 1 の演算子) |
A ⊗ B | Operator × Operator → Operator | テンソル積 |
練習例: ベル状態
type Register = Tensor<Qubit, Qubit>
fn bell() -> Register {
let q0 = |0⟩
let q1 = |0⟩
let h = H(q0) # 重ね合わせ
let r = CNOT(h ⊗ q1) # もつれ
r
}
# 古典的観測は状態を収縮させる。
let step : Register × Measure -> Distribution<Bit × Bit> = observe
observe 関数は値ではなく Distribution を返します。これは、測定が非決定的であることに正直であれと代数があなたに強いている点です。型システムは、結果の分布を黙ってサンプリングするのではなく、明示的に扱うよう要求します。