Komputer Quantum Simulator
Tulislah sirkuit kuantum kecil dalam JavaScript, simulasi langsung di browser Anda dan lihat diagram sirkuit, probabilitas, dan vektor negara. Atau uraikan perhitungan pada tingkat tinggi (misalnya penjumlahan) dan menontonnya secara otomatis berubah menjadi sirkuit quantum reversibel nyata.
Model bising
Komputer kuantum yang sebenarnya tidak menghitung dengan sempurna: qubit sangat sensitif dan kehilangan sebagian informasi mereka (decoherence) melalui setiap interaksi yang tidak diinginkan dengan lingkungan mereka panas, medan elektromagnetik, qubits tetangga. Operasi gerbang juga tidak pernah benar-benar tepat, bahkan pembacaan akhir dapat salah. Simulator ini menghitung secara ideal secara default; di sini Anda dapat mengaktifkan model kesalahan khas dan mengamati efeknya langsung dalam hasil..
Jelaskan perhitungan dengan quantum.add, quantum.subtract, quantus.multiply, quantums.divide atau quantum..random. Ctrl+Enter memulai simulasi. Dokumen lengkap melalui tombol Documentation.
Kode ini secara otomatis dihasilkan dari kode program di atas dan dimimulasi langsung. Anda dapat mengeditnya disini secara manual dan jalankan lagi..
Sirkuit yang dihasilkan diedit secara manual. Grup register dalam diagram ini disembunyikan; menjalankan kode program di atas lagi akan menulis ulang perubahan tersebut.
Maksimal 4000 karakter. Metode QuantumCircuit yang tersedia: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alias: toffoli), swap, measureAll, run. Ctrl+Enter memulai simulasi.
Diagram sirkuit
Gambar langkah menunjukkan probabilitas dan vektor negara tepat setelah gerbang yang dipilih. Hasil tembakan di bawah selalu berlaku untuk sirkuit lengkap.
OpenQASM 2.0
OpenQASM 2.0 adalah format pertukaran yang banyak digunakan untuk sirkuit kuantum dan dibaca oleh Qiskit, antara lain. Catatan pada urutan bit: simulator ini membaca q0 sebagai bit (kiri) paling signifikan, sedangkan Qiskil membaca q[0] sebagai string bit diukur yang paling kecil sehingga muncul mencerminkan di sana.
Kemungkinan
Peluang mengukur setiap string bit yang mungkin, dihitung tepat dari vektor negara. arah membaca: q0 adalah bit kiri (yang paling signifikan).
Bloch Spheres
Status setiap qubit individu sebagai panah di bola Bloch: kutub utara = |0⟩, kutub selatan = |1⟩, khatulistiwa = superposisi berdampak sama. Jika panah jelas lebih pendek dari radius bola, kubit tidak memiliki keadaan murni sendiri ia terjerumus dengan kubit lain. Sebuah panah pendek juga dapat berasal dari suara bising: dengan model noise aktif qubit kehilangan kohesi dan panah menyusut ke dalam. Bola bising adalah pendekatan di sini vektor Bloch rata-rata di lintasan gangguan. Dengan langkah pandang di atas, panah bergerak gerbang oleh gerbang (hanya bebas suara)..
Hasil tembakan
Seberapa sering setiap string bit sebenarnya terjadi dalam pengukuran simulasi. Dengan beberapa hasil yang mungkin, angka beredar secara acak di sekitar probabilitas tepat..
State Vector
Amplitudo kompleks di balik probabilitas: magnitudo kuadrat amplitude (nyata² + imajiner²) memberikan probabilitas keadaannya.
| Negara bagian | Bagian nyata | Bagian imajiner |
|---|
Dasar: Bagaimana Cara Kerjanya?
Dari program ke qubit fisik
Sebuah komputer kuantum yang sebenarnya lebih dari sekadar chip. Elektronik kontrol klasik menerjemahkan sirkuit menjadi pulsa tepat. Dalam contoh yang ditunjukkan, pendingin, repump, qubit dan laser bacaan membentuk sinyal ini di atas tabel optik dan mengarahkan mereka ke ruang vakum terlindung. Di sana mereka mengubah dan mengukur keadaan qubit; hasil pengukuran kemudian kembali ke komputer klasik.
Qubit & dasar negara
Sebuah bit klasik adalah 0 atau 1. Kubit juga dapat ada dalam superposisi dari dua negara dasar |0⟩ dan |1⟩Dengan beberapa qubit, semua negara dasar ditulis sebagai string bit, misalnya.. |10⟩ untuk 2 qubit dimana q0 di simulator ini selalu bit yang paling signifikan (kiri).
Superposisi
Sebuah qubit dalam superposisi secara bersamaan membawa komponen dari beberapa negara dasar. Komponen ini digambarkan sebagai amplitudo kompleks; magnitud kuadrat sebuah amplitudu memberikan probabilitas untuk mendapatkan keadaan yang sesuai dalam pengukuran..
Bola Bloch
Negara dari qubit tunggal dapat digambarkan sebagai panah dalam bola: kutub utara mewakili |0⟩, kutub selatan |1⟩, dan semua titik di khatulistiwa adalah superposisi berimbang yang sama fase menentukan arah sepanjang khatulintang dimana panah menunjuk. Gerbang putaran rx, ry, dan rz dengan qubit yang terikat, panah menyusut ke arah pusat bola: qubit individu kemudian tidak lagi memiliki keadaan murni sendiri sehingga keterlibatan menjadi benar-benar terlihat.. Cuando la flecha se redireccionó alrededor del eje respectivo, las puertas de fase como S y T giran alrededor del eixo Z.
Pengukuran & tembakan
measureAll() Karena satu pengukuran hanya menghasilkan satu hasil acak, sirkuit secara konsep diukur "shot" kali dengan. Se calcula que la masa de un cubit se mide con frecuencia run({ shots }), sehingga distribusi probabilitas muncul sebagai histogram. Kemungkinan yang tepat juga dihitung langsung dari vektor negara, independen dari keaslian tembakan..
Gerbang Hadamard
Gerbang Hadamard h(q) mengambil qubit dari keadaan tertentu (|0⟩ atau |1⟩) menjadi superposisi yang sama beratnya |0⟩ dan |1⟩ sehingga sekitar 50% / 50% ketika diukur.
Pintu fase: S dan T
Gerbang s(q) dan t(q) tidak mengubah probabilitas pengukuran dari qubit tunggal; mereka hanya memutar fase dari |1⟩ Amplituda S dengan 90°, T dengan 45 °. Mereka hanya menunjukkan efek mereka dalam kombinasi dengan superposisi: antara dua gerbang Hadamard, fase memutuskan bagaimana amplitude menggabungkan atau membatalkan (perselingan). Varian dagger sdg(q) dan tdg(q) putar ke arah yang sama dan membatalkan S dan T. Aturan adalah: dua T membuat S, dua S membuat Z.
CNOT & keterkaitan bersyarat
Gerbang CNOT cnot(control, target) membalikkan qubit target tepat ketika qubit kontrol berada dalam keadaan |1⟩Jika qubit kontrol berada di superposisi sebelumnya, ini dapat menciptakan keterlibatan. Kedua kubit kemudian tidak lagi bisa dijelaskan secara independen satu sama lain, seperti dalam contoh keadaan Bell. Jika qubat kontrol berada pada kondisi dasar yang pasti sebaliknya, CNOT hanya melakukan flip bit bersyarat tanpa keterlibetan.
CZ: relatif simetris dari CNOT
Gerbang CZ cz(a, b) menginversi tanda amplitudo tepat ketika kedua qubit adalah |1⟩Tidak seperti CNOT, tidak ada kontrol dan tidak ada qubit target gerbang bertindak identik pada kedua qubits, itulah sebabnya dia ditarik sebagai dua titik terhubung dalam diagram. CZ dan CNOT dapat dikonversi satu sama lain: sebuah CNOT adalah CZ yang qubit sasaran dilewati melalui gerbang Hadamard sebelum dan sesudahnya. C Z merupakan blok bangunan sentral dari banyak algoritma, seperti pencarian Grover..
Status GHZ: saling berantakan sebagai trio
Negara GHZ (diamai setelah Greenberger, Horne, dan Zeilinger) memperluas prinsip negara Bell menjadi tiga kubit: satu gerbang Hadamard ditambah dua CNOT mengikat ketiga-tiga sehingga pengukuran hanya menghasilkan |000⟩ atau |111⟩ tidak pernah bercampur string bit. Tidak ada qubit memiliki keadaan sendiri lagi; informasi terletak secara eksklusif dalam korelasi bersama.
Algoritma Deutsch: Keuntungan kuantum terkecil
Algoritma Deutsch menjawab, dengan evaluasi tunggal dari oracle yang tidak diketahui, sebuah pertanyaan untuk mana komputer klasik membutuhkan dua evaluasi: apakah fungsi konstan atau seimbang? Triknya adalah mengirim input melalui oracle dalam superposisi berkat gangguan, jawaban kemudian dikodekan secara jelas di qubit input. Prinsip di balik itu (fase kickback) merupakan inti hampir semua algoritme kuantum.
Pencarian Grover: amplitudo yang memperkuat
Pencarian Grover menemukan entri yang ditandai dalam himpunan yang tidak disortir dengan lebih sedikit permintaan daripada yang diperlukan secara klasik. Sebuah orakel menandai keadaan yang dicari dengan flip fase (di sini melalui gerbang CZ), maka operator difusi memperkuat amplitudo yang ditandatangani atas biaya semua lainnya. Dengan 2 qubit, satu iterasi cukup untuk mengukur hit dengan 100% probabilitas.
Penjumlahan terbalik: dari quantum.add() ke sirkuit
Editor kode program di atas menerjemahkan quantum.add({ a, b }) Ke dalam sirkuit dari gerbang X, CNOT dan CCNOT (Toffoli) yang mereproduksi penjumlahan klasik dengan cara murni reversibel: setiap gerbang dapat dihapus persis karena tidak ada informasi dibuang. Gerbang CCNOt (ccnot(c1, c2, target)) membalikkan qubit target hanya ketika kedua qubit kontrol |1⟩ yang cukup sebagai blok bangunan untuk membangun kembali setiap sirkuit klasik secara reversibel, termasuk penjumlahan penuh dengan carry. Masukan A dan B pertama kali di inisialisasi sebagai keadaan dasar tertentu (tidak ada superposisi) menggunakan gerbang X. Karena seluruh sirkuit hanya melewati negara-negara tertentu daripada superposis, pengukuran pada akhirnya menghasilkan persis satu hasil dengan probabilitas 100% jumlah yang benar secara klasik. Itulah sebabnya quantum.add() menghasilkan hasil deterministik meskipun simulasi kuantum, bukan beberapa keadaan mungkin dengan probabilitas di bawah 100%.
Pengurangan: penjumlahan terbalik
Karena setiap gerbang dari sirkuit kuantum benar-benar dapat diubah, rangkaian adder lengkap bisa dijalankan ke belakang dan penjumlahan menjadi pengurangan: quantum.subtract({ a, b }) menggunakan persis gerbang dari adder dalam urutan terbalik dan dengan demikian menghitung a − b. Ini bukan gimmick tetapi prinsip dasar perhitungan reversibel: tidak ada langkah komputasi yang menghancurkan informasi, setiap langkah dapat dibalut. Dalam versi ini, a ≥ b diperlukan sehingga tidak terjadi hasil negatif.
Perkalian: quantum.multiply()
Perkalian di sini muncul dari blok bangunan yang sama seperti penjumlahan: mengikuti metode buku sekolah, faktor a ditambahkan beberapa kali dalam posisi bergeser sesuai dengan bit set factor b. Setiap tambahan parsial adalah adder ripple-carry reversibel yang sama; carry mengalir ke bit produk berikutnya setiap saat. Karena daftar hasil tumbuh dengan produk, faktor terbatas pada 3 bits (0–7) di sini hanya kemudian faktor, produk dan membawa qubit bersama cocok ke dalam qubits simulator ini 10.
Pembagian: quantum.divide()
Divisi juga hanya menggunakan blok bangunan yang dapat direversibel: De divisi ini memiliki beberapa komponen quantum.divide({ a, b }) melakukan pembagian panjang yang dibangun dari pergeseran, pengurangan reversibel pembagi dari daftar sisanya; hasilnya adalah kuos dan sisa ()a = quotient · b + remainderKarena dividen, divisor, kuotenya dan qubit pinjaman harus semua cocok ke dalam 10 qubit bersama, pembagian adalah operasi yang paling ketat: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 harus bertahan, dan pembagi b harus ≥ 1 (tidak dibagi dengan nol). Jika input tidak sesuai anggaran, editor melaporkan hal itu bukan komputasi..
Benar acak: quantum.random()
Komputer klasik tidak dapat menghasilkan acak yang sebenarnya. "angka acak" mereka berasal dari algoritma deterministik (pseudo-acak) quantum.random({ bits }) menempatkan setiap bit ke dalam a 50/50 superposisi menggunakan gerbang Hadamard, dan hanya pengukuran yang menentukan nilai mana yang keluar secara fundamental tidak dapat diprediksi. Pada perangkat keras kuantum nyata ini adalah keaslian fisik; simulator ini meniru dengan pseudo-keaslian browser Anda.
Simulator vs hardware kuantum nyata
Simulator ini menghitung keadaan dengan tepat menggunakan aritmatika klasik titik terapung di browser Anda. Ini hanya bekerja karena sirkuit yang sangat kecil dengan hingga 10 kubit dianggap secara eksklusif di sini. Komputer kuantum nyata menggunakan qubit fisik, rentan terhadap kesalahan (decoherence, kebisingan), dan keuntungan mereka hanya terlihat dengan sirkuit jauh lebih besar yang tidak dapat lagi disimulasi secara klasik dalam praktik.