ゲートベースの量子コンピューターを検討していると仮定すると、エンタグされた状態を生成する最も簡単な方法は、ベル状態の1つを生成することです。次の回路はベルの状態を示しています。| Φ+⟩
| ψ0⟩| ψ1⟩| ψ2⟩
| ψ0⟩
| ψ0⟩ = | 0 0 ⟩
| ψ1⟩
アダマールゲートは最初のキュービットに適用され、次の結果になります。
| ψ1⟩ = (H⊗ 私)| 0 0 ⟩ = H| 0 ⟩ ⊗ | 0 ⟩ = 12–√(| 0 ⟩ + | 1 ⟩)| 0 ⟩ = 12–√(| 0 0 ⟩ + | 1 0 ⟩)
| ψ2⟩
これで、CNOTゲートが適用され、2番目のキュービットが反転されますが、最初のキュービットの値が1の場合のみです。結果は
| ψ2⟩ = 12–√(| 0 0 ⟩ + | 1 1 ⟩)
| ψ2⟩
上記のアプローチは、通常の意味ではプログラミングのようには見えないかもしれませんが、ゲートを状態に適用することは、基本的に、ゲートベースの量子コンピューターのプログラミング方法です。高レベルのプログラミングを実行できるが、コマンドをゲートのアプリケーションに変換できる抽象化レイヤーが存在します。IBM量子経験インターフェイスは、このような機能を提供します。
MicrosoftのQ#のような言語では、上記の例は次のようになります。
operation BellTest () : ()
{
body
{
// Use two qubits
using (qubits = Qubit[2])
{
Set (One, qubits[0]);
Set (Zero, qubits[1]);
// Apply Hadamard gate to the first qubit
H(qubits[0]);
// Apply CNOT gate
CNOT(qubits[0],qubits[1]);
}
}
}
より詳細なバージョン(測定を含む)は、Microsoft:Quantum Programの作成にあります。