สมมติว่าคุณกำลังพิจารณาคอมพิวเตอร์ควอนตัมแบบเกทเกตวิธีที่ง่ายที่สุดในการสร้างสถานะที่ยุ่งเหยิงคือการสร้างสถานะเบลล์ วงจรต่อไปนี้แสดงสถานะเบลล์| Φ+⟩ ⟩
| ψ0⟩| ψ1⟩| ψ2⟩
| ψ0⟩
| ψ0⟩ = | 0 0 ⟩
| ψ1⟩
Hadamard-Gate นำไปใช้กับ qubit แรกซึ่งส่งผลต่อไปนี้:
| ψ1⟩ = ( H⊗ ฉัน) | 0 0 ⟩ = H| 0 ⟩ ⊗ | 0 ⟩ = 12-√( | 0 ⟩ + | 1 ⟩ ) | 0 ⟩ = 12-√( | 0 0 ⟩ + | 1 0 ⟩ )
3 | ψ2⟩:
ตอนนี้จะใช้เกต CNOT และพลิก qubit ที่สอง แต่เฉพาะที่อันแรกที่มีค่า 1 ผลลัพธ์คือ
| ψ2⟩ = 12-√( | 0 0 ⟩ + | 1 1 ⟩ )
สถานะสุดท้ายนี้ | ψ2⟩เป็นรัฐที่มีปัญหาและมักจะเป็นวิธีที่เป็นธรรมชาติที่สุดที่จะเกิดขึ้นกับสถานการณ์ดังกล่าว เบลล์ระบุว่าเกิดขึ้นในอัลกอริทึมควอนตัมที่น่าสนใจมากมายเช่นการเข้ารหัสแบบหนาแน่นสูงหรือการส่งผ่านทางไกล
แม้ว่าวิธีการข้างต้นอาจไม่เหมือนกับการเขียนโปรแกรมให้คุณตามปกติ แต่การใช้เกตกับรัฐเป็นวิธีการเขียนโปรแกรมคอมพิวเตอร์ควอนตัมแบบเกต มีเลเยอร์นามธรรมที่ให้คุณทำการเขียนโปรแกรมระดับสูง แต่แปลคำสั่งไปยังแอพพลิเคชั่นของเกท ไอบีเอ็มควอนตัมประสบการณ์อินเตอร์เฟซที่มีคุณสมบัติดังกล่าว
ในภาษาเช่น 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]);
}
}
}
รุ่นที่มีรายละเอียดมากขึ้น (รวมถึงการวัด) สามารถพบได้ที่นี่: ไมโครซอฟท์: การเขียนโปรแกรมควอนตัม