Предполагая, что вы рассматриваете квантовый компьютер на основе затвора, самый простой способ создать запутанное состояние - это создать одно из состояний Белла. Следующая схема показывает состояние Bell .|Φ+⟩
Изучив , и мы можем определить состояние entagled после применения всех ворот:|ψ0⟩| ψ1⟩| ψ2⟩
| ψ0⟩
| ψ0⟩ = | 0 0 ⟩
| ψ1⟩
Ворота Адамара применяются к первому кубиту, что приводит к следующему:
| ψ1⟩ = ( H⊗ я) | 0 0 ⟩ = Н| 0 ⟩ ⊗ | 0 ⟩ = 12-√( | 0 ⟩ + | 1 ⟩ ) | 0 ⟩ = 12-√( | 0 0 ⟩ + | 1 0 ⟩ )
| ψ2⟩
Теперь применяется вентиль CNOT, который переворачивает второй кубит, но только там, где первый имеет значение 1. Результат
| ψ2⟩ = 12-√( | 0 0 ⟩ + | 1 1 ⟩ )
| ψ2⟩
Хотя описанный выше подход может показаться вам не обычным программированием, применение стробирования к состояниям - это, в основном, то, как работает программирование квантового компьютера на базе гейта. Существуют уровни абстракции, которые позволяют выполнять высокоуровневое программирование, но переводить команды в приложение ворот. Интерфейс IBM Quantum Experience предоставляет такие функции.
На языке, подобном Q # от Microsoft, приведенный выше пример может выглядеть примерно так:
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: Написание квантовой программы .