Simulator Komputer Kuantum
Tulis litar kuantum kecil dalam JavaScript, jalankan simulasi dalam pelayar dan lihat rajah litar, kebarangkalian serta vektor keadaan. Anda juga boleh menerangkan pengiraan aras tinggi dan melihatnya ditukar secara automatik kepada litar kuantum boleh balik.
Model hingar
Komputer kuantum sebenar tidak mengira dengan sempurna. Qubit sangat sensitif dan boleh kehilangan maklumat melalui penyahkoherenan akibat haba, medan elektromagnet dan interaksi dengan qubit bersebelahan. Operasi get dan bacaan akhir juga boleh tersilap. Simulator mengira secara ideal secara lalai; aktifkan model ralat untuk melihat kesannya pada hasil.
Terangkan pengiraan dengan quantum.add, quantum.subtract, quantum.multiply, quantum.divide atau quantum.random. Tekan Ctrl+Enter untuk memulakan simulasi. Dokumentasi lengkap tersedia melalui butang Dokumentasi.
Kod ini dijana secara automatik daripada program di atas dan disimulasikan secara terus. Anda boleh menyuntingnya secara manual dan menjalankannya semula.
Litar yang dijana telah disunting secara manual. Kumpulan daftar disembunyikan dalam rajah ini; menjalankan semula program di atas akan menulis ganti perubahan tersebut.
Maksimum 4000 aksara. Kaedah QuantumCircuit yang tersedia: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), swap, measureAll, run. Ctrl+Enter memulakan simulasi.
Rajah litar
Paparan langkah menunjukkan kebarangkalian dan vektor keadaan tepat selepas get yang dipilih. Hasil percubaan di bawah sentiasa merujuk kepada litar lengkap.
OpenQASM 2.0
OpenQASM 2.0 ialah format pertukaran litar kuantum yang digunakan secara meluas dan boleh dibaca oleh Qiskit. Nota susunan bit: simulator ini membaca q0 sebagai bit paling ketara di sebelah kiri, manakala Qiskit memaparkan q[0] sebagai bit paling kurang ketara, maka rentetan bit kelihatan terbalik.
Kebarangkalian
Kebarangkalian tepat bagi setiap rentetan bit yang mungkin, dikira terus daripada vektor keadaan. q0 ialah bit paling kiri dan paling ketara.
Sfera Bloch
Keadaan setiap qubit dipaparkan sebagai anak panah pada sfera Bloch: kutub utara ialah |0⟩, kutub selatan ialah |1⟩ dan khatulistiwa mewakili superposisi seimbang. Anak panah yang lebih pendek menunjukkan keadaan gabungan akibat keterbelitan atau hingar. Dalam paparan langkah, anak panah bergerak selepas setiap get bagi simulasi tanpa hingar.
Hasil percubaan
Kekerapan setiap rentetan bit muncul dalam pengukuran simulasi. Jika beberapa hasil mungkin, bilangannya berubah secara rawak di sekitar kebarangkalian tepat.
Vektor keadaan
Amplitud kompleks di sebalik kebarangkalian: kuasa dua magnitud amplitud, iaitu nyata² + khayal², memberikan kebarangkalian keadaan.
| Keadaan | Bahagian nyata | Bahagian khayal |
|---|
Asas: Bagaimanakah ia berfungsi?
Daripada program ke qubit fizikal
Komputer kuantum sebenar bukan sekadar cip. Elektronik kawalan klasik menukar litar kepada denyutan yang tepat. Dalam contoh ini, laser penyejukan, pengepaman semula, kawalan qubit dan bacaan dibentuk pada meja optik lalu diarahkan ke ruang vakum terlindung. Di situ laser menukar dan mengira keadaan qubit sebelum hasil kembali ke komputer klasik.
Qubit dan keadaan asas
Bit klasik ialah 0 atau 1. Qubit juga boleh berada dalam superposisi dua keadaan asas |0⟩ dan |1⟩Dengan beberapa qubit, semua keadaan asas ditulis sebagai rentetan bit, contohnya |10⟩ bagi 2 qubit, dengan q0 q0 sentiasa menjadi bit paling ketara di sebelah kiri dalam simulator ini.
Superposisi
Qubit dalam superposisi membawa komponen beberapa keadaan asas serentak. Komponen diterangkan oleh amplitud kompleks; kuasa dua magnitud amplitud memberikan kebarangkalian memperoleh keadaan tersebut apabila pengukuran.
Bola Bloch
Keadaan satu qubit boleh digambarkan sebagai anak panah pada sfera: kutub utara mewakili |0⟩, kutub selatan |1⟩, manakala setiap titik pada khatulistiwa ialah superposisi seimbang. Fasa menentukan arah anak panah sepanjang khatulistiwa. Get putaran rx, ry, dan rz Apabila qubit terjerat, anak panah mengecil ke arah pusat sfera: qubit individu tidak lagi mempunyai keadaan tulen sendiri, maka keterbelitan boleh dilihat. Get putaran memutarkan anak panah mengelilingi paksi masing-masing, manakala get fasa seperti S dan T berputar mengelilingi paksi Z.
Pengukuran & percubaan
measureAll() Oleh sebab satu pengukuran hanya menghasilkan satu hasil rawak, litar diukur secara konsep sebanyak bilangan percubaan yang dipilih. Setiap hasil dikira mengikut kekerapan kemunculannya. run({ shots }), lalu taburan kebarangkalian muncul sebagai histogram. Kebarangkalian tepat turut dikira terus daripada vektor keadaan dan tidak bergantung pada bilangan percubaan.
Get Hadamard
Get Hadamard h(q) mengambil qubit daripada keadaan tertentu (|0⟩ atau |1⟩) menjadi superposisi yang sama beratnya |0⟩ dan |1⟩ sehingga sekitar 50% / 50% apabila diukur.
Get fasa: S dan T
Get s(q) dan t(q) tidak menukar kebarangkalian pengukuran satu qubit; get hanya memutarkan fasa |1⟩ amplitud |1⟩ sebanyak 90° bagi S dan 45° bagi T. Kesan hanya kelihatan bersama superposisi: antara dua get Hadamard, fasa menentukan cara amplitud menguatkan atau membatalkan melalui interferens. Varian dagger sdg(q) dan tdg(q) berputar ke arah songsang dan membatalkan S atau T. Dua T membentuk S dan dua S membentuk Z.
CNOT dan keterbelitan bersyarat
Get CNOT cnot(control, target) membalikkan qubit sasaran tepat apabila qubit kawalan berada dalam keadaan |1⟩Jika qubit kawalan berada dalam superposisi sebelum itu, CNOT boleh menghasilkan keterbelitan. Kedua-dua qubit tidak lagi boleh dihuraikan secara bebas, seperti keadaan Bell. Jika qubit kawalan berada dalam keadaan asas yang pasti, CNOT hanya melakukan pembalikan bit bersyarat tanpa keterbelitan.
CZ: get simetri yang berkaitan dengan CNOT
Get CZ cz(a, b) menyongsangkan tanda amplitud tepat apabila kedua-dua qubit ialah |1⟩Berbeza daripada CNOT, CZ tiada qubit kawalan atau sasaran khusus dan bertindak sama pada kedua-duanya. CZ dan CNOT boleh ditukar antara satu sama lain dengan meletakkan get Hadamard sebelum dan selepas CZ pada qubit sasaran. CZ ialah blok binaan utama dalam algoritma seperti carian Grover.
Keadaan GHZ: tiga qubit saling terikat
Keadaan GHZ, dinamakan sempena Greenberger, Horne dan Zeilinger, melanjutkan prinsip keadaan Bell kepada tiga qubit. Satu Hadamard dan dua CNOT menjerat ketiga-tiganya sehingga pengukuran hanya menghasilkan |000⟩ atau |111⟩ dan tidak pernah rentetan bit bercampur. Tiada qubit mempunyai keadaan tersendiri; maklumat terkandung dalam korelasi bersama.
Algoritma Deutsch: kelebihan kuantum terkecil
Algoritma Deutsch menentukan melalui satu penilaian orakel sama ada fungsi yang tidak diketahui itu malar atau seimbang, sedangkan komputer klasik memerlukan dua penilaian. Input dihantar melalui orakel dalam superposisi dan interferens mengekodkan jawapan pada qubit input. Prinsip ini, yang dikenali sebagai anjakan balik fasa, menjadi asas banyak algoritma kuantum.
Carian Grover: penguatan amplitud
Carian Grover mencari entri bertanda dalam set tidak diisih dengan lebih sedikit pertanyaan berbanding kaedah klasik. Orakel menandakan keadaan melalui pembalikan fasa, kemudian pengendali difusi menguatkan amplitud bertanda. Dengan 2 qubit, satu lelaran menghasilkan keadaan sasaran dengan kebarangkalian 100%.
Penambahan boleh balik: daripada quantum.add() kepada litar
Editor kod program di atas menerjemahkan quantum.add({ a, b }) kepada litar get X, CNOT dan CCNOT (Toffoli) yang melaksanakan penambahan klasik secara boleh balik. Setiap get boleh disongsangkan kerana tiada maklumat dibuang. Get CCNOTccnot(c1, c2, target)) membalikkan qubit sasaran hanya apabila kedua qubit kawalan |1⟩ menjadi blok binaan yang mencukupi untuk membina semula litar klasik secara boleh balik, termasuk penambah penuh dengan bawaan. Input A dan B dimulakan sebagai keadaan asas tertentu menggunakan get X. Oleh sebab litar melalui keadaan pasti dan bukannya superposisi, pengukuran menghasilkan tepat satu hasil dengan kebarangkalian 100%. Itulah sebabnya quantum.add() menghasilkan hasil deterministik walaupun disimulasikan sebagai litar kuantum.
Penolakan: penambahan songsang
Oleh sebab setiap get kuantum boleh disongsangkan, rangkaian penambah boleh dijalankan ke belakang untuk menukar penambahan menjadi penolakan: quantum.subtract({ a, b }) menggunakan get penambah yang sama dalam urutan terbalik untuk mengira a − b. Tiada langkah memusnahkan maklumat dan setiap langkah boleh diterbalikkan. Versi ini memerlukan a ≥ b supaya hasil tidak negatif.
Pendaraban: quantum.multiply()
Pendarab dibina daripada penambahan boleh balik menggunakan kaedah lazim: faktor a ditambah pada kedudukan teranjak mengikut bit faktor b. Setiap hasil darab separa menggunakan penambah bawaan riak yang sama. Faktor dihadkan kepada 3 bit (0–7) supaya faktor, hasil darab dan qubit bawaan muat dalam had 10 qubit.
Pembahagian: quantum.divide()
Pembahagian juga hanya menggunakan blok binaan boleh balik: quantum.divide({ a, b }) melaksanakan pembahagian panjang melalui anjakan dan penolakan pembahagi secara boleh balik daripada daftar baki. Hasilnya ialah hasil bahagi dan sisa ()a = quotient · b + remainderKerana dividen, pembahagi, hasil bahagi dan dan qubit pinjaman mesti muat bersama dalam 10 qubit, maka pembahagian ialah operasi yang paling terhad: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 dividen mesti muat dalam julat dan pembahagi b mestilah sekurang-kurangnya 1. Jika input melebihi had, editor melaporkannya tanpa menjalankan pengiraan.
Rawak sebenar: quantum.random()
Komputer klasik tidak boleh menghasilkan kerawakan sebenar; nombor rawaknya datang daripada algoritma deterministik atau rawak semu. quantum.random({ bits }) quantum.random() meletakkan setiap bit dalam superposisi 50/50 menggunakan get Hadamard. Pengukuran menentukan nilai yang terhasil dan nilainya tidak boleh diramal. Pada perkakasan kuantum sebenar, ini merupakan kerawakan fizikal; simulator menirunya dengan penjana nombor rawak semu dalam pelayar.
Simulator berbanding perkakasan kuantum sebenar
Simulator mengira keadaan menggunakan aritmetik titik apung klasik dalam pelayar. Ini boleh dilakukan kerana litar dihadkan kepada 10 qubit. Komputer kuantum sebenar menggunakan qubit fizikal yang terdedah kepada ralat seperti penyahkoherenan dan hingar. Kelebihan utamanya muncul pada litar jauh lebih besar yang tidak praktikal untuk disimulasikan secara klasik.