Seperti apa program kuantum yang sangat sederhana?

15

Setelah membaca " chip fotonik kuantum pertama yang dapat diprogram ". Saya bertanya-tanya seperti apa perangkat lunak untuk komputer yang menggunakan keterikatan kuantum nantinya.

Apakah ada contoh kode untuk pemrograman kuantum tertentu? Suka pseudocode atau bahasa tingkat tinggi? Secara khusus, apa program terpendek yang dapat digunakan untuk membuat status Bell mulai dari keadaan yang diinisialisasi ke menggunakan simulasi dan salah satu prosesor Pengalaman Kuantum IBM , seperti ibmqx4 ?| ψ0=| 00

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

Membuat lompatan konseptual dari pemrograman tradisional ke keterjeratan tidak mudah.


Saya telah menemukan libquantum C juga.

DIDIx13
sumber

Jawaban:

12

Dengan anggapan Anda sedang mempertimbangkan komputer kuantum berbasis gerbang, cara paling mudah untuk menghasilkan keadaan terjerat adalah dengan menghasilkan salah satu status Bell. Sirkuit berikut menunjukkan status Bell .|Φ+

Bellstate

Dengan memeriksa , dan kita dapat menentukan status terperangkap setelah aplikasi semua gerbang:| ψ 1 | ψ 2 |ψ0|ψ1|ψ2

1. :|ψ0

Tidak banyak yang terjadi di sini karena tidak ada gerbang diterapkan pada saat ini. Karenanya, kondisi keseluruhan sistem hanyalah produk tensor dari status tunggal yang kami tulis seperti ini:

|ψ0=|00

2. :|ψ1

Gerbang Hadamard berlaku pada qubit pertama yang menghasilkan sebagai berikut:

|ψ1=(Hsaya)|00=H|0|0=12(|0+|1)|0=12(|00+|10)

3. :|ψ2

Sekarang gerbang CNOT diterapkan dan membalik qubit kedua tetapi hanya di mana yang pertama memiliki nilai 1. Hasilnya

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

Keadaan terakhir ini adalah keadaan terperangkap dan biasanya cara paling alami untuk menghadapi situasi seperti itu. Status Bell terjadi dalam banyak algoritma kuantum yang menarik seperti pengkodean super padat atau teleportasi.|ψ2

Meskipun pendekatan di atas mungkin tidak tampak seperti pemrograman untuk Anda dalam arti biasa, menerapkan gerbang ke negara bagian pada dasarnya adalah cara pemrograman komputer kuantum berbasis gerbang bekerja. Ada lapisan abstraksi yang memungkinkan Anda untuk melakukan pemrograman tingkat tinggi tetapi menerjemahkan perintah ke aplikasi gerbang. The IBM Quantum Pengalaman antarmuka menyediakan fitur tersebut.

Dalam bahasa seperti Microsoft Q # contoh di atas bisa terlihat mirip dengan ini:

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]);
         }
     }
}

Versi yang lebih rinci (termasuk pengukuran) dapat ditemukan di sini: Microsoft: Writing a Quantum Program .

dtell
sumber
14

Salah satu cara penulisan program kuantum adalah dengan QISKit. Ini dapat digunakan untuk menjalankan program pada perangkat IBM. Situs web QISKit menyarankan cuplikan kode berikut untuk membuat Anda maju, yang merupakan sirkuit terjerat seperti yang Anda inginkan. Ini juga proses yang sama seperti dalam jawaban oleh datell. Saya akan mengomentarinya baris demi baris.

# 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')) 

Perhatikan bahwa perintah 'jalankan' di sini hanya menentukan program yang akan dijalankan. Semua pengaturan lain, seperti perangkat yang ingin Anda gunakan, berapa kali Anda ingin mengulanginya untuk mendapatkan statistik, dll diatur ke nilai standarnya. Untuk menjalankan pada ibmqx4 untuk 1024 tembakan, Anda dapat menggunakan

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

Program kuantum paling sederhana yang dapat saya pikirkan adalah (1-bit) true number generator. Sebagai sirkuit kuantum, tampilannya seperti ini:

Anda pertama-tama menyiapkan qubit di negara , lalu menerapkan gerbang Hadamard untuk menghasilkan superposisi yang kemudian Anda ukur dalam basis komputasi. Hasil pengukuran adalah atau , masing-masing dengan probabilitas 50%.|022(|0+|1)|0|1

piramida
sumber