Як виглядатиме дуже проста квантова програма?


15

Після прочитання " першої програмованої квантової фотонної мікросхеми ". Мені було цікаво, як виглядає програмне забезпечення для комп'ютера, який використовує квантове заплутування.

Чи є приклад коду для конкретного квантового програмування? Як псевдокод чи мова високого рівня? Зокрема, яка найкоротша програма, яка може бути використана для створення стану Bell починаючи зі стану, ініціалізованого в використовуючи як моделювання, так і один з процесорів Quantum Experience IBM , наприклад ibmqx4 ?

|ψ=12(|00+|11)
|ψ0=|00

Зробити концептуальний перехід від традиційного програмування до заплутаності не так просто.


Я знайшов Кассіопеяне libquantum також.

Відповіді:


12

|Φ+

Bellstate

|ψ0|ψ1|ψ2

|ψ0

|ψ0=|00

|ψ1

Ворота Адамара застосовується до першого кубіту, що призводить до наступного:

|ψ1=(НЯ)|00=Н|0|0=12(|0+|1)|0=12(|00+|10)

|ψ2

Тепер застосовано ворота CNOT і переверне другий кубіт, але лише там, де перший має значення 1. Результат

|ψ2=12(|00+|11)

|ψ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: Написання квантової програми .


14

Один із способів написання квантових програм - це QISKit. Це можна використовувати для запуску програм на пристроях IBM. Сайт QISKit пропонує наступний фрагмент код , щоб ви збираєтеся, яка є заплутаною ланцюгом , як ви хочете. Це також той самий процес, що і у відповіді за датою. Я коментую це по черзі.

# import and initialize the method used to store quantum programs
from qiskit import QuantumProgram
qp = QuantumProgram()
# initialize a quantum register of two qubits
qr = qp.create_quantum_register('qr',2) 
# and a classical register of two bits
cr = qp.create_classical_register('cr',2) 
# create a circuit with them which we call 'Bell'
qc = qp.create_circuit('Bell',[qr],[cr]) 
# apply a Hadamard to the first qubit
qc.h(qr[0]) 
# apply a controlled not with the first qubit as control
qc.cx(qr[0], qr[1]) 
# measure the first qubit and store its result on the first bit
qc.measure(qr[0], cr[0]) 
# the same for the second qubit and bit
qc.measure(qr[1], cr[1]) 
# run the circuit
result = qp.execute('Bell') 
# extract the results
print(result.get_counts('Bell')) 

Зауважте, що команда 'Execute' тут вказує лише програму, яку потрібно запустити. Усі інші параметри, такі як пристрій, який ви хочете використовувати, кількість разів, яку ви хочете повторити, щоб отримати статистику тощо, встановлюються за замовчуванням. Щоб працювати на ibmqx4 протягом 1024 кадрів, ви можете замість цього використовувати

results = qp.execute(['Bell'], backend='ibmqx4', shots=1024)

4

Найпростіша квантова програма, яку я можу придумати, - це (1-бітний) справжній генератор випадкових чисел. Як квантова схема, це виглядає так:

|022(|0+|1)|0|1

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.