Kuantum Bilgisayar Simülatörü
JavaScript'te küçük bir kuantum devresi yazın, doğrudan tarayıcınızda simüle edin ve devre diyagramını, olasılıklarını ve durum vektörünü görün. Veya bir hesaplamayı yüksek düzeyde (örneğin bir ekleme) tanımlayın ve otomatik olarak gerçek bir geri dönüşümlü kuantum devresine dönüşmesini izleyin.
Gürültü Modeli
Gerçek kuantum bilgisayarlar mükemmel hesaplama yapmaz: kubitler son derece hassastır ve çevreleriyle her istenmeyen etkileşimde (sıcaklık, elektromanyetik alanlar, komşu kubitler) bilgilerinin bir kısmını kaybederler. Kapı işlemleri de hiçbir zaman mükemmel bir şekilde kesin değildir ve hatta son okuma bile yanlış gidebilir. Bu simülatör ideal olarak varsayılan olarak hesaplanır; Burada tipik hata modellerini etkinleştirebilir ve sonuçları doğrudan gözlemleyebilirsiniz.
Kuantum.add, kuantum.subtract, quantum.multiply, quantum.divide veya quantum.random ile bir hesaplamayı açıklayın. Ctrl+Enter simülasyonu başlatır. “Dokümantasyon” düğmesi aracılığıyla tam dokümantasyon.
Bu kod yukarıdaki program kodundan otomatik olarak oluşturuldu ve doğrudan simüle edildi. Burada manuel olarak düzenleyebilir ve tekrar çalıştırabilirsiniz.
Oluşturulan devre elle düzenlendi. Bu nedenle şemadaki kayıt gruplaması gizlidir; yukarıdaki program kodunun çalıştırılması bu değişikliklerin üzerine yazılacaktır.
Maksimum 4000 karakterleri. Kullanılabilir KuantumCircuit yöntemleri: x, y, z, h, s, sdg, t, tdg, rx, ry, rz, cnot, cz, ccnot (alia: toffoli), swap, runAll, ctrl+Enter simülasyona başlar.
Devre Diyagramı
Adım görünümü, seçilen kapıdan sonra olasılıklar ve durum vektörünü gösterir. Aşağıdaki atış sonuçları her zaman tam devre için geçerlidir.
OpenQASM 2.0
OpenQASM 2.0 kuantum devreleri için yaygın olarak kullanılan bir değişim biçimidir ve diğerleri arasında Qiskit tarafından okunur. Bit sırasına dikkat edin: bu simülatör q okur0 En büyük (sol) bit olarak, Qiskit ise q[0En az önemli – ölçülen bit dizeleri bu nedenle orada aynalı görünür.
Olasılıklar
Olası her bit dizesini ölçme şansı, tam olarak durum vektöründen hesaplanmıştır. Okuma yönü: q0 sol (en önemli) bittir.
Bloch Küreleri
Bloch küresinde her bir bireysel kubitin bir ok olarak durumu: kuzey kutbu = |0⟩, güney kutbu = |1⟩, ekvator = eşit ağırlıklı üst konum. Ok açıkça küre yarıçapından daha kısaysa, kubitin kendi saf durumu yoktur - diğer kubitlerle dolaşıktırılır. Kısa bir ok da gürültüden gelebilir: aktif bir gürültü modeli ile kubitin kaybeder ve
Atış Sonuçları
Her bit dizisinin aslında simüle edilen ölçümlerde ne sıklıkta meydana geldiği. Birkaç olası sonuçla, sayılar tam olasılıklar etrafında rastgele dağılır.
Devlet Vektör
Olasılıkların arkasındaki karmaşık genlikler: bir genliğin kare büyüklüğü (real² + hayali²) durumunun olasılığını verir.
| Durum | Gerçek kısmı | Hayali kısmı |
|---|
Temel Bilgiler: Nasıl Çalışır?
Programdan fiziksel kubite
Gerçek bir kuantum bilgisayarı bir çipten daha fazlasıdır. Klasik kontrol elektroniği devreyi hassas darbelere çevirir. Gösterilen örnekte, soğutma, tekrarlama, qubit ve okuma lazerleri bu sinyalleri optik bir tabloya şekillendirir ve korumalı bir vakum odasına yönlendirir. Orada qubit durumunu değiştirir ve ölçerler; ölçüm sonucu daha sonra klasik bilgisayara geri döner.
Qubit & temel durumları
Klasik bit, 0 veya 1'dir. Bir qubit ayrıca iki temel durumun bir üstpozisyonunda da bulunabilir. |0⟩ ve |1⟩. Birkaç qubit ile, tüm temel durumlar bit dizesi olarak yazılır, örn. |10⟩ 2 qubits için – nerede q0 Bu simülatörde her zaman en önemli (sol) bittir.
Süperpozisyon
Süperpozisyondaki bir qubit, aynı anda birkaç temel durumun bileşenlerini taşır. Bu bileşenler karmaşık genlik olarak tanımlanır; bir genliğin kare büyüklüğü, bir ölçümde karşılık gelen durumu elde etme olasılığını verir.
Bloch küresi
Tek bir kubitin durumu bir kürede bir ok olarak görselleştirilebilir: kuzey kutbu temsil eder. |0⟩Güney Kutbu |1⟩, ve ekvatordaki tüm noktalar eşit ağırlıklı süperpozisyonlardır – faz, ekvator boyunca ok noktalarının bulunduğu yönü belirler. Dönme kapıları rx, ry, ve rz oku ilgili eksen etrafında döndürün, S ve T gibi faz kapıları Z ekseni etrafında döndürür. Dolaşımlı kubitlerle, ok kürenin merkezine doğru küçülür: bireysel kubit artık kendine ait saf bir duruma sahip değildir - bu nedenle dolanma tam anlamıyla görünür hale gelir.
Ölçüm ve çekimler
measureAll() tüm kubitleri bir kerede ölçer ve devreyi bitirir. Tek bir ölçüm sadece bir rastgele sonuç verdiğinden, devre kavramsal olarak "shots" zamanları ile ölçülür. run({ shots }), böylece olasılık dağılımı bir histogram olarak görünür. Kesin olasılıklar ek olarak, atışların rastgeleliğinden bağımsız olarak doğrudan durum vektöründen hesaplanır.
Hadamard kapısı
Hadamard Kapısı h(q) Belirli bir durumdan bir kubit alır (|0⟩ veya |1⟩) eşit ağırlıkta bir süperpozisyon içine |0⟩ ve |1⟩ – böylece 50% / 50% hakkında ölçüldüğünde.
Faz kapıları: S ve T
Kapılar s(q) ve t(q) Tek bir qubitin ölçüm olasılıklarını değiştirmeyin; sadece fazı döndürürler. |1⟩ genlik – S by 90, T by 45. Etkilerini sadece süperpozisyon ile birlikte gösterirler: iki Hadamard kapısı arasında, genliğin nasıl birleştiğine veya iptal edildiğine (parazit) faz karar verir. Hançer varyantları sdg(q) ve tdg(q) tam tersi yönde döndürün ve S ve T'yi geri alın. Kural şudur: iki T bir S, iki S bir Z yapar.
CNOT & koşullu dolanma
CNOT kapısı cnot(control, target) Kontrol qubiti tam olarak durumdayken hedef qubiti çevirir |1⟩. Kontrol qubiti önceden süperpozisyondaysa, bu dolanma yaratabilir - iki qubit, Bell durum örneğinde olduğu gibi artık birbirinden bağımsız olarak tarif edilemez. Eğer kontrol qubiti bunun yerine belirli bir temel durumdaysa, CNOT sadece dolanmadan koşullu bir bit flip gerçekleştirir. Yani her CNOT otomatik olarak dolanma oluşturmaz.
CZ: CNOT'un simetrik akrabası
CZ kapısı cz(a, b) Her iki kubit de tam olarak genlik işaretini tersine çevirir |1⟩. CNOT'un aksine, kontrol ve hedef qubit yoktur - kapı her iki qubitte de aynı şekilde davranır, bu nedenle diyagramda iki bağlı nokta olarak çizilir. CZ ve CNOT birbirine dönüştürülebilir: bir CNOT, hedef qubit'i bir Hadamard kapısından önce ve sonra geçen bir CZ'dir. CZ, Grover araması gibi birçok algoritmanın merkezi bir yapı taşıdır.
GHZ durumu: üçlü olarak dolanıklık
GHZ durumu (Greenberger, Horne ve Zeilinger'den sonra adlandırılmıştır) Bell durum ilkesini üç kubite kadar genişletir: bir Hadamard kapısı artı iki CNOT, üçünü de birbirine dolaştırır, böylece ölçüm sadece verim verir. |000⟩ veya |111⟩ – asla karışık bit dizeleri. Hiçbir qubit artık kendine ait bir duruma sahip değildir; bilgi sadece paylaşılan korelasyonda yatmaktadır.
Deutsch algoritması: En küçük kuantum avantajı
Deutsch algoritması, bilinmeyen bir kahinin tek bir değerlendirmesiyle, klasik bir bilgisayarın iki değerlendirmeye ihtiyaç duyduğu bir soruyu yanıtlar: fonksiyon sabit mi dengeli mi? İşin püf noktası, girdiyi kahin aracılığıyla süperpozisyonda göndermektir - parazit sayesinde, daha sonra cevap, giriş qubitinde açıkça kodlanır. Arkasındaki ilke (faz geri tepme) neredeyse tüm kuantum algoritmalarının merkezindedir.
Grover arama: genlikleri yükseltmek
Grover araması, klasik olarak gerekli olandan önemli ölçüde daha az sorgu içeren sıralanmamış bir kümede işaretli bir girdi bulur. Bir kahin, aranan durumu bir faz çevirmesi ile işaretler (burada bir CZ kapısı aracılığıyla), daha sonra difüzyon operatörü, işaretli genliği diğerlerinin pahasına genişletir. 2 qubitleri ile, tek bir yineleme, 100% olasılığı ile vuruşu ölçmek için yeterlidir.
Geri dönüşümlü ekleme: quantum.add()'den bir devreye
Yukarıdaki program kodu düzenleyicisi çevirir quantum.add({ a, b }) klasik eklemeyi tamamen tersine çevrilebilir bir şekilde üreten X, CNOT ve CCNOT kapılarının (Toffoli) bir devresine girer: her kapı tam olarak geri alınabilir, çünkü hiçbir bilgi atılmaz. Bir CCNOT kapısı (ccnot(c1, c2, target)) Hedef qubit'i yalnızca her iki kontrol qubit'i olduğunda çevirir |1⟩ – bu, herhangi bir klasik devreyi geri dönüşümlü olarak yeniden inşa etmek için bir yapı taşı olarak yeterlidir, taşımalı tam bir eklenti de dahil olmak üzere. A ve B girdileri, ilk olarak X kapıları kullanılarak belirli temel haller (süperpozisyon yok) olarak başlatılır. Bu nedenle tüm devre, süperpozisyonlar yerine yalnızca belirli durumlardan geçtiği için, sonundaki ölçüm, 100% olasılığı ile tam olarak bir sonuç verir - klasik olarak doğru toplam. Bu yüzden quantum.add() Kuantum simülasyonuna rağmen, 100%'nin altında olasılıklara sahip birkaç olası durum yerine deterministik bir sonuç üretir.
Çıkarma: ters ek
Bir kuantum devresinin her kapısı tam olarak ters çevrilemez olduğundan, tam ek devre geriye doğru çalıştırılabilir - ve ekleme bir çıkarma haline gelir: quantum.subtract({ a, b }) tam olarak ters sırayla ekleyenin kapılarını kullanır ve böylece a − b hesaplanır. Bu bir hile değil, tersine çevrilebilir hesaplamanın temel ilkesidir: hiçbir hesaplama adımı bilgiyi yok etmez, her adım geri alınabilir. Bu sürümde, olumsuz bir sonuç meydana gelmemesi için bir ≥ b gereklidir.
Çarpma: quantum.multiply()
Burada çarpma, ekleme olarak tam olarak aynı geri dönüşümlü yapı taşlarından ortaya çıkar: okul kitabı yöntemini takiben, a faktörü, kaydırılmış pozisyonlarda birkaç kez eklenir - b faktörünün belirlenmiş bitleri eşleştirilir. Her kısmi ekleme aynı geri dönüşümlü dalgalanma taşıyıcıdır; taşıma her seferinde bir sonraki ürün bitine akar. Sonuç kaydı ürünle birlikte büyüdüğünden, faktörler bunlarla sınırlıdır. 3 bit (0–7) burada - sadece o zaman faktör, ürün ve birlikte qubit taşımak bu simülatörün içine sığar 10 Kubitler.
Bölme: quantum.divide()
Bölüm ayrıca sadece geri dönüşümlü yapı taşları kullanır: quantum.divide({ a, b }) kalan kayıttan bölücünün kaydırılmış, geri dönüşümlü çıkarmalarından inşa edilen uzun bölme gerçekleştirir; sonuç bölümdür ve Kalanı (a = quotient · b + remainder). Çünkü temettü, bölücü, bölüm ve Bir ödünç qubit, 10 qubitlerine birlikte uymalıdır, bölünme en güçlü şekilde kısıtlanmış işlemdir: bits(a) + bits(b) + bits(a÷b) + 1 ≤ 10 tutmak zorundadır ve bölücü b ≥ 1 olmalıdır (sıfıra bölünemez). Bir girdi bütçeye uymuyorsa, editör bunu hesaplama yerine bildirir.
Gerçek rastgelelik: quantum.random()
Klasik bilgisayarlar gerçek rastgelelik üretemez - "rastgele sayılar" deterministik algoritmalardan (pseudo-rastgelelik) gelir. Bir kuantum bilgisayar şunları yapabilir: quantum.random({ bits }) Her biti bir Hadamard kapısı kullanarak bir 50 / 50 süperpozisyonuna koyar ve sadece ölçüm, temelde tahmin edilemez bir şekilde hangi değerin ortaya çıktığına karar verir. Gerçek kuantum donanımında bu fiziksel olarak gerçek rastgeleliktir; Bu simülatör, tarayıcınızın sözde rastgeleliği ile taklit eder.
Simulator vs. gerçek kuantum donanım
Bu simülatör, tarayıcınızda klasik kayan nokta aritmetiği kullanarak durumu tam olarak hesaplar - bu sadece 10 qubit'lerine kadar olan çok küçük devreler burada kabul edildiğinden çalışır. Gerçek kuantum bilgisayarlar fiziksel qubitleri kullanır, hata eğilimlidir (boşluk, gürültü) ve avantajları sadece uygulamada klasik olarak simüle edilemeyen çok daha büyük devrelerle gösterir. Bu araç, gerçek bir kuantum işlemcisi değil, bir öğrenme aracıdır.