Kuantum algoritmasının programlanması nasıl farklıdır? Bir C benzeri dil, litreler için tasarlanmış olsaydı nasıl olurdu? Türler değişebilir mi?
Kuantum algoritmasının programlanması nasıl farklıdır? Bir C benzeri dil, litreler için tasarlanmış olsaydı nasıl olurdu? Türler değişebilir mi?
Yanıtlar:
Bir süre önce buna baktığımda, kuantum algoritmalarının, özellikle hızlı olmamakla birlikte üssel olarak büyük paralel paralelliğe izin verdiği açıktı. Böylece sıralı donanımla pratik olmayan alanlarda, hatta büyük ölçüde paralel sıralı donanımla aramayı içeren durumlarda parlarlar.
Kuantum algoritmalarının bir özelliği de geri dönüşümlü olmaları gerektiğidir . Herhangi bir algoritma, geri çalışmasına izin verecek kadar kayıt tutma ekleyerek, tersine çevrilebilir olana dönüştürülebilir.
Bir diğer özellik, kuantum algoritmasından cevap almanın bir hit-miss ilişkisidir, çünkü bir hesaplamanın sonunda elde ettiğiniz şey, her biri kendi olasılıklarına sahip olan birden fazla cevaptır. İstediğiniz cevap yüksek olasılık olacak şekilde çalıştırılmalıdır. Bu, algoritmayı birkaç kez ileri ve geri çalıştırmayı içerebilir.
Check out Grover Arama Algoritması .
Grover algoritmasının temel çalışmasını göstermek için INSERTED. Bir arama sorunu olduğunu varsayalım. Olası cevaplar 0, 1, 2 ve 3'tür, fakat doğru cevap 2'dir. Böylece kuantum bilgisayar dört durumun da üst üste getirilir ve hangisinin doğru olduğunu görmek için bir dizi adımdan geçer ve aşağıdaki siyah noktalar ve oklar gibi genliğini tersine çevirir:
Bu ok 2'nin makinenin içinde ters çevrildiğini görebilirsiniz, ancak bunu dışarıda söylemenin bir yolu yoktur, çünkü sadece olasılıklar dışarıda görülebilir, genlik kareleridir ve kareler karelerken hepsi eşittir.
Bununla birlikte, amplitüdler, kırmızı çizgi ile gösterilen bir ortalamaya sahiptir ve bilgisayarın , ortalama etrafında her genliği tersine çeviren bir dizi adımdan geçmesi sağlanabilir . Bu yapıldığında, genlikler ve olasılıklar 2. duruma, doğru cevaba geçsin ! Böylece makine gözlenirse durum 2 öne çıkar.
Bu kadar basit değil. Genel olarak, doğru cevabın olasılığını en üst seviyeye çıkarmak için, her bir döngünün sonunda ters çevrilerek, ileri ve geri, makinenin birden fazla devresini alır. Ayrıca, bu sayıdan daha fazla yapmamaya özen gösterin, çünkü kendisi de kolayca tersine çevrilebilir.
Peki neden kuantum bilgisayarların bu kadar hızlı olduğunu söylüyorlar ? Çünkü, her bir litre sayısını iki katına çıkardığınızda, paralelliğin karesini alırsınız, ancak zamanın uzunluğunu kare yapmazsınız, bu yüzden sonunda kazanır.
Bu eğlenceli değil mi?
Yazılım doğruluğunun doğrulanmasında bunun nasıl uygulanabileceği ile kişisel olarak ilgilenmiştim. Şimdi yazılımı bir demet test girişi atarak ve (çok basit olması için) bir Assert'e çarpıp çarpmadığını görerek test ediyoruz. Kuantum bir bilgisayarda, daha yoğun bir girdi grubuna karşı paralel olarak çalıştırmak ve bu durumlardan herhangi birinin bir Assert'e çarpıp çarpmadığını görmek mümkün olabilir.
Algoritmaya giriş 128 bayt veya 1024 bit ise, 2 ^ 1024 veya 10 ^ 308 olası farklı girişler vardır. Geleneksel bir bilgisayarda birçok girişin test edilmesinin bir yolu yoktur, ancak kuantum bir bilgisayar hepsini paralel olarak deneyebilir.
Bir C benzeri dil, litreler için tasarlanmış olsaydı nasıl olurdu? Türler değişebilir mi?
C gibi anlaşılmaz olmak için çok farklı olurdu.
Asıl mesele (anladığım kadarıyla), kuantum hesaplamanın 'zorunlu, o zaman, o zaman bu diğer şey' gibi yapması gerektiği gibi güzel bir zorunluluk içinde çalışmadığıdır. C'nin bunu kuantum bilgisayarının 'işlemcisine' yapabilme yeteneğini zorlamaya çalışmak, imkansız olmasa da, yeterince verimsiz olacaktır.
Kuantum bilgisayarları için programlama algoritmaları (tekrar anladığım gibi), fonksiyonel programlama stili haritasına / azaltmaya daha yakın olma eğilimindedir, çünkü kuantum hesaplama, 'azaltma' bölümündeki tüm adayların aynı anda var olmalarına ve bilgisayarın “düşmelerine” izin verir. gözlendiğinde.
Aygıtları çalıştırmak için mevcut olmasa da, kuantum bilgisayarlar için bazı algoritmalar olduğunu unutmayın. Örneğin Simon'ın algoritması .
Bir kuantum bilgisayarın mümkün olan en verimli şekilde kullanılmasını sağlamak için, gerçekten klasik bir analogun olmadığı kuantum sicilinin durumları olan girdi ve çıktılarla başa çıkabilmek gerekir. Kuantum bilgi alanındaki birkaç yıllık deneyimden bahseden, sizi uyarmam gerekir ki, C * cebirlerinin soyut matematiğinin ötesinde kimsenin bunun için iyi bir sezgisi yoktur ve bu sezginin bile yetersiz kaldığı söylendi. görelilik teorisi hakkında merak etmeye başlarsanız.
Kuantum bilgisayarda etkin bir şekilde çözülebilen problemler sınıfı, Sınırlı Kuantum Polinomu için BQP olarak bilinir. Bu BPP'nin kuantum versiyonudur ve bu yazıda daha fazla bilgi bulabilirsiniz: http://www.scottaaronson.com/papers/bqpph.pdf
Daha dün gece kuantum algoritmaları araştırmacısı tarafından BQP-tamamlanmış çok önemli bir problemin olduğu söylendi: N denklemlerinin doğrusal bir sistemini çözme. Klasik olarak, bu, Gauss ortadan kaldırmasıyla O (N) basamağında çözülebilir. Harrow-Hassidim-Lloyd algoritması ( http://arxiv.org/abs/0811.3171 ), kuantum hali olarak kodlanmış bir çözüme sahip olan bir cevabı kabul etmek istemeniz koşuluyla, pollog (N) 'de çözer. Bir kuantum bilgisayardan tam olarak yararlanmak istiyorsanız, bu nedenle, bir kuantum sicilinin durumuna karşılık gelen bir türün olması gerekli görünmektedir.
Şu andaki uzmanlık alanımın biraz dışında olsam da, sihirli durumlara karşılık gelen bir türe erişebildiğiniz sürece, kuantum bir bilgisayarı programlayabileceğinize dair bir tahminde bulunacağım. Bu zor bir kavram olsa da konuyla ilgili biraz çalışmayı gerektirir.
Kuantum programlama diline sahip olmaktan çok uzun zaman geçtiğimiz konusunda uyarılırsınız, çünkü çok ilkel bir kuantum hesaplama araştırması aşamasındayız. Şu an kuantum C istemek Alan Turing'e gidip, Python'u tasarlamasını istemek gibi bir şey olacaktır. Vakum tüpünün kuantum versiyonunu bile almadık!