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