Çok basit bir kuantum programı neye benzerdi?


76

Dünyanın ilk programlanabilir kuantum fotonik çipinin duyurusu ışığında, kuantum dolaşma kullanan bir bilgisayar için hangi yazılımın nasıl olacağını merak ediyordum. Yazdığım ilk programlardan biri, şöyle bir şeydi:

for i = 1 to 10
  print i
next i

Herhangi biri, kuantum fotonik yongalarını (veya benzeri donanımları), sahte kodda veya yüksek seviyede bir dilde kullanabilecek karşılaştırılabilir basitlik koduna bir örnek verebilir mi? Geleneksel programlamadan dolaştırmaya vb. Kavramsal bir sıçrama yapmakta zorluk çekiyorum.


bağlantınız koptu
Suresh Venkat

1
Bu soru için +1 ve . Turing Machines'inkinden farklı bir paradigma altında bir programlama dili hakkında çok merak ediyorum, ancak kodu aslında kuantum bir bilgisayarda çalıştırmaktan uzak olabiliriz.
Janoma

Yanıtlar:


60

Caveat Emptor: Aşağıdakiler kendi araştırma ve kalite kontrol alanı hakkındaki görüşüme ağırlık veriyor. Bu, alanın genel fikir birliğini teşkil etmemektedir ve hatta kendi kendini terfi ettirmeyi içerebilir.

Kuantum bilişimin 'merhaba dünyasını' gösterme problemi, temelde hala Leibnitz veya Babbage'ın mevcut bilgisayarınızdan olduğu kadar kuantum bilgisayarlardan uzak olduğumuzdur. Teorik olarak nasıl çalışması gerektiğini bilmemize rağmen, aslında fiziksel bir kuantum bilgisayar kurmanın standart bir yolu yoktur. Bunun bir yan etkisi, kuantum hesaplamanın tek bir programlama modelinin olmamasıdır. Nielsen ve ark. size bir 'kuantum devresi' diyagramı gösterecektir, ancak bunlar resmi programlama dillerinden uzaktır: klasik kontrol gibi detaylar üzerinde küçük bir 'el sallama' ya da giriş / çıkış / ölçüm sonuçlarıyla başa çıkma gibi.

Bir programlama dili bilgisayar bilimcisi olarak araştırmamda ve QC jistini diğer bilgisayar bilimcileriyle buluşturmak için bana en çok uyan şey, karşılaştığım en basit QC modelini kullanmak.

Tüm temel unsurları içeren, gördüğüm en basit kuantum hesaplama programı, karşılaştığım en basit kuantum programlama modelinde üçlü küçük bir programdır. Temelleri bulmak için 'merhaba dünyası' gibi kullanıyorum.

Danos ve ark.nın Ölçme Analizinin basitleştirilmiş özetini vermeme izin verin . 1 temelli olan tek yönlü kuantum bilgisayar 2'ye dayanmaktadır : ölçüldüğü zaman bir kalp atışı tahrip olmaktadır, ancak bunun ölçülmesi, onunla dolaşmış diğer tüm bırakma taşlarını da etkilemektedir. Fotonik çip tarafından gerçekleştirilen 'devre tabanlı' kuantum bilgisayarları üzerinde bazı teorik ve pratik faydaları vardır, ancak bu farklı bir tartışma.

Yalnızca beş talimat içeren bir kuantum bilgisayarı göz önünde bulundurun: N, E, M, X ve Z. "Assembly dili" normal bilgisayarınıza benziyor, bir talimat yürüttükten sonra, sıradaki bir sonraki talimata gidiyor. Her komut bir hedef qubit tanımlayıcısı alır, burada sadece bir sayı ve diğer argümanları kullanırız.

N 2          # create a new quantum bit and identify it as '2'
E 1 2        # entangle qubits '1' and '2', qubit 1 already exists and is considered input
M 1 0        # measure qubit '1' with an angle of zero  (angle can be anything in [0,2pi]
             # qubit '1' is destroyed and the result is either True or False
             # operations beyond this point can be dependent on the signal of '1'
X 2 1        # if the signal of qubit '1' is True, execute the Pauli-X operation on qubit '2'

Bu nedenle yukarıdaki program bir ancilla oluşturur, onu giriş boşluğu ile dolaştırır, girişi ölçer ve ölçüm sonucuna bağlı olarak ancilla üzerinde bir işlem gerçekleştirir. Sonuç, şimdi 2 kesiminin, Hadamard operasyonundan sonra 1 kesiminin durumunu içermesidir .

Yukarıdakiler doğal olarak öyle düşük bir düzeydedir ki, elle kodlamak istemezsiniz. Ölçüm hesabının faydası, alt yordamlarda olduğu gibi daha büyük algoritmalar oluşturmanıza izin veren bir tür düzeltilebilir makro olan 'kalıpları' tanıtmasıdır. 1 talimatlı kalıplarla başlar ve oradan daha büyük kalıplar geliştirirsiniz.

Bir montajcı benzeri komut dizisi yerine, programı grafik olarak yazmak da yaygındır:

 input                .........
    \--> ( E ) ---> (M:0)     v
(N) ---> (   ) ------------> (X) ---> output

burada tam oklar qubit bağımlılıklarıdır ve noktalı ok bir 'sinyal' bağımlılığıdır.

Aşağıdaki, bir 'kuantum programlayıcısının' kullanacağını hayal ettiğim gibi, küçük bir programlama aracında ifade edilen aynı Hadamard örneğidir.

Ölçüm Hesabı Aracı

düzenleme: ('klasik' bilgisayarlarla ilişki ekleyerek) Klasik bilgisayarlar hala en iyi yaptıkları işlerde gerçekten etkilidirler ve bu nedenle vizyon, şu anki bilgisayarın grafikleri nasıl boşalttığına benzer bir şekilde bazı algoritmaları boşaltmak için kuantum bilgisayarların kullanılmasıdır. GPU. Yukarıda gördüğünüz gibi, CPU kuantum bilgisayarı bir talimat akışı göndererek kontrol eder ve ölçüm sonuçlarını boolean 'sinyallerinden' okur. Bu şekilde, klasik kontrolün CPU ve kuantum durumu ve kuantum bilgisayarı üzerindeki etkileri ile kesin bir ayrımınız olur.

Örneğin, kuantum yardımcı işlemcimi rastgele bir boole veya jeton hesaplamak için kullanacağım. Klasik bilgisayarlar deterministiktir, bu yüzden iyi bir rasgele sayı döndürmekte kötüdür. Kuantum bilgisayarları doğası gereği olasılıkla olsa da, rastgele bir 0 veya 1 elde etmek için tek yapmam gereken, eşit derecede dengeli bir kuvveti ölçmektir. CPU ve 'QPU' arasındaki iletişim şöyle görünür:

 qrand()       N 1; M 1 0;
 ==>  | CPU | ------------> | QPU |  ==> { q1 } ,  []
                 start()
      |     | ------------> |     |  ==> { } , [q1: 0]
                 read(q1)         
      |     | ------------> |     |
                  q1: 0 
 0    |     | <-----------  |     |
 <==

Nerede { ... }QP kuantum hafıza içeren qubits ve [...]Boolean içeren klasik (sinyal) hafızadır.


  1. Danos ve diğ. Ölçme Hesaplamaları. arXiv (2007) vol. Quant-ph
  2. Raussendorf ve Briegel. Tek yönlü kuantum bilgisayar. Fiziksel İnceleme Mektupları (2001) vol. 86 (22) sayfalar 5188-5191

Konuyla ilgili mükemmel tartışma, teşekkürler, Sığır eti. Btw, OP’nin “Geleneksel programlamadan dolaşma vb. Bu yüzden, bu geçişe yardımcı olan bir şey memnuniyetle karşılanmalıdır.
Kris,

Doğru, ben aslında utanç, o bölümü kaçırmış gibiydi ediyoruz: / a paragraph.≈ ekleme
Sığır

"Yalnızca beş talimat içeren kuantum bilgisayarı düşünün: N, E, M, X ve Z." Z talimatının açıklaması yok:
Fernando Gonzalez Sanchez

Z, X'e çok benzer;) en.wikipedia.org/wiki/Pauli_matrices X işlemi vektörü [ab] 'e [ba], Z işlemi onu [a -b]' ye çevirir.
Sığır

21

C'nin libquantumunu , Haskell'in kuantum monadlarını veya Perl's Quantum :: Entanglement'in tümünün kuantum hesaplarını sadık bir şekilde temsil ettiğini varsayıyorum . Onların örneklerine bakabilirsiniz.

Genel olarak, bir kuantum algoritmasını, bir kuantum sisteminizin durumunu temsil eden bir süper-konuma bir dizi lineer operatörü uygulayan klasik bir algoritma olarak tarif edersiniz. Dergi makaleleri çoğu zaman kuantum bit / register satırları ve lineer operatörler için kutuları gösterir.

Elbette zor kısım algoritmayı tanımlamak değil, aynı zamanda olasılık algoritmaları gibi neden çalıştığını anlamaktır. Grover'in algoritmasını daima anlaşılabilir buldum . Shor Algoritması tarafından kullanılan Kuantum Fourier dönüşümünü de okuyabilirsiniz .


11

Bu gibi görünüyor: görüntü tanımını buraya girin

Siz de gerçek bir kuantum işlemcisine erişebilirsiniz. Buraya gidin ve kaydolun: http://www.research.ibm.com/quantum/

Aynı zamanda bir simülatör içerir, böylece gerçek donanım kullanmadan test edebilir veya gerçek donanım üzerinde çalışmak için kredileri (ücretsiz) kullanabilirsiniz.



3

Bence cevabı "Çok basit bir klasik programa benziyor."

Basit yazılıp lambda matematiğini (ürünlü) klasik programlamanın kalbi olarak görürsek, bunun bize bir işaretçi veren kapalı kartezyen kategorisinin iç tip teorisi olduğunu kullanabiliriz.

nk

Öyleyse, STLC kartezyen kapalı kategorileri ise, kapalı simetrik monoidal kategorileri nedir? Simetrik bir monoidal kategorisinin iç mantığının MILL olduğunu biliyoruz . Öyleyse ihtiyacımız olan, MILL'e karşılık gelen bir tür teorisi - doğrusal bir tür teorisi.

Soyut saçmalıktan uzaklaşırken, lineer tipte bir teori ile ne elde ederiz? Doğrusallık. Kaynakların doğrusallığını alıyoruz. Ve tam olarak istediğimiz bu. Kuantum bitlerini klonlamanıza izin verilmiyor. Örtük ölçüme izin verilmiyor. Doğrusallık, azaltma sırasında bunlardan hiçbirini yapamayacağınız anlamına gelir.

Doğrusal tip teorileri üzerinde bazı çalışmalar var, ancak bir ton değil. Bu yazıdaki fikirlerden bazılarını bu makaleden aldım: Fizik, Topoloji, Mantık ve Hesaplama: Mike Stay'den bir Rosetta Taşı ve John Baez, el dokumamdan çok daha ayrıntılı.


0

Muhtemelen başlamak için basit bir "küçük n tarafından böl" sayaç uygulaması ile giderdim.

Örneğin: 10 GHz'lik bir kaynak verildiğinde, 5 GHz'lik bir çıktı üretin (ancak bu sayılar rastgeledir ve yalnızca kavramı göstermek içindir).

Bu, depolama ve Von Neumann mimarisi gibi sorunları görmezden gelmemize ve bileşenlerin gerçekten anlaşılabilir bir şey yapıp yapmadığına odaklanmamıza izin verir.

Bir sonraki hedef, o zaman, "küçük n" nin küçük bir repertuarını oluşturmak olacaktı (ama aynı zamanda araştırmacılarımın itirazını da dinlerdim - eğer diğer küçük hedeflerin daha hızlı olacağını düşünürlerse, kesinlikle anlamak isterim. bana ne söylediklerini

Uzun vadeli hedefler, sistemin içine ve dışına bilgi pompalamak ve bu bilgileri kullanmak için yeterince uzun süre tutmak için mekanizmaları içerir.

(Muhtemelen ilk bilgisayar programlarının hepsinin "kablolu" olduğunu hatırlamakta fayda var . Ancak, depolanan programları uygulayabildiğimiz bu sistemlerle ilgili kapsamlı deneyimlerden sonraydı .)


-6

Programlamanın kuantum bir bilgisayar tarafından normal nesne yönelimli programlamanın farklı bir bakış açısıyla görülmesi gerektiğini düşünüyorum.

KK, beynin düşünme ve karar verme becerisiyle aynıdır. Düşünme yeteneği, veri madenciliği gücüne, olası seçim olabilecek bir veri kaynağı ve tüm olası durumlardan hangisini seçeceğine karar verir.

Bu noktada bir yazılımın, ocakların veri madenciliği yapılabilecek ve diğer veri gruplarıyla dolaştırılabilecek veri kaynağını temsil ettiği şekilde tasarlanması gerekecektir.

QC, veri okumayı işleyen, farklı seçenekleri birbirine bağlayan, bilgi veren, mümkün olan tüm durumları okuyan ve hangisinin devam edeceğini seçen farklı veri kaynakları grubunu birbirine bağlayan bir veri madencisine sahip olmalıdır.

Beynimiz böyle işler. KK, Kuantum Mekaniği kanununa göre anlayabilir ve hareket edebilir; bu, bir sorun verdiğiniz anlamına gelir ve KK, size çözmek için olası tüm çözümleri gösterir.

bu kadar güçlü olabilir QC, katılıyor musunuz?

https://www.cs.rutgers.edu/~mlittman/papers/openhouse11.pdf bu başlangıç ​​noktasıdır, sonra kuantum cihazını, vb. geribildirim sağlamak. quantum Datasource bileşeni ana bilgisayar verileri ve veri madencisinin görev yaptığı bilginin kapsamı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.