30 Eylül 2017 Cumartesi

Bir kuantum bilgisayarı nasıl programlanır? - 3

Bir kuantum bilgisayarı nasıl programlanır? Gibi çoğu soruların cevaplarını bu bilgisayarın çalışma prensibini ve kodlarını sizlere sunmaya devam ediyorum.

Bir kuantum bilgisayar nasıl programlanır?QASM dosyamızın son satırı


measure q[0] -> c[0];

Yukarıda yazılı olan satırın içinde kubiti ölçüyoruz. Q [0] 'a ne olamacağına karar vermesi gerektiğini söylüyoruz. Sonuç daha sonra c [0] da saklanır, kuantum beyinlerimiz tarafından bakılmaya hazır olur veya kuantum bilgisayarlarımız tarafından saklanır. Daha sonra c [0] değeri bu hesaplamanın çıktısıdır.

Başlatma ve ölçüm arasında hiçbir şey yapmadıysak…

qreg q[1];
creg c[1];

measure q[0] -> c[0];

...sonuç her zaman c [0] = 0 olmalıdır.

Eğer bir "NOT" kullansaydık...

qreg q[1];
creg c[1];
       
u3(pi,0,0) q[0];

measure q[0] -> c[0];

…sonuç her zaman c [0] = 1 olmalıdır.

Eğer yarım bir "NOT" yapsaydık...

qreg q[1];
creg c[1];
       
u3(0.5*pi,0,0) q[0];

measure q[0] -> c[0];

...q [0] ölçülürken 0 ile 1 arasında yarım kalacaktır. Aslında u3 (0.5 * pi, 0,0) 0 olarak adlandırdığımız süperpozisyon hali olacaktır. Bunun 0 veya 1 olup olmadığını ölçmek için eşit olasılıkla rastgele birini seçecek veya diğerini zorlayacaktır.
Bu olasılık doğası, kuantum hesaplamalarda biraz gerilir. Gürültüye bağlı olarak mevcut cihazlarda ek rastgelelik mevcuttur. Bu rastgele kullanışlı bir şekilde düşük bir seviyede olmasına rağmen, varlığını akılda tutmak zorundayız. Bazen, 0 almamız gerektiğinde 1, tersin de de 1 almamız gerektiğinde 0 olacaktır.

Bu nedenlerden dolayı, bir kuantum programı birçok kez çalıştırmak normaldir. Bu işlem, daha sonra birçok örnek sırasında üretilen tüm çıktıların bir listesini ve her birinin kaç kez meydana geldiğini döndürecektir.

Oyun kurmak

Şimdi, bir kuantum bilgisayarda bir oyun yapmak için birçok yolu bir NOT'u doğru kullanalım. Öncelikle, size bir sır vereyim. Kuantum bilgisayarlar her zaman melez aygıtlar olacak, kısmen kuantum ve kısmen normal olacak. İkincisi, cihazı kullanmak isteyen arabuluculuk yapmak için girdileri ve çıktıları işlemeleri gerekecektir.

Bu melez cihaz, programımızı nasıl etkileyecektir. QASM'i kullanmak, kuantum kısmı için harika, ancak gerisini yapmak için daha tanıdık bir şey kullanmak güzel olur. Örneğin Python gibi.

Bu, IBM'in kuantum API'sının geçerli sürümü tarafından alınan yaklaşımdır. Ve bu öğreticilerde kullanılan yaklaşım budur. Diğer yöntemler, Proje Q örneğindeki gibi.

Her şeyin hala gelişip gelişmediğine dikkat etmek önemlidir. Ve hepimiz, bu ilk günlerde kuantum programları hazırlamak kaçınılmaz olarak bu evrimi yönlendirecektir.

Programı çalıştırmak için, Jupyter'ın ve SDK'nın bağımlılıklarının yüklü olması gerekir.

Şimdi kodu inceleyelim!
Öncelikle, IBM'in Kuantum Deneyimi üzerinde kod çalıştırmak için ihtiyacımız olan her şeyin alınması gerekir.

import sys
sys.path.append("../../")
from qiskit import QuantumProgram
import Qconfig

Yukarıdaki Qconfig dosyasına başvurur. Bu dosyayı kurmak için IBM hesabı gerekecektir. Merak etmeyin, IBM hesabı ücretsiz! Spesifikasyonlar için IBM SDK'sındaki kılavuza bakın.

Ardından birkaç tane standart ithalat ve ekrana yazdırılan oyun hakkında bazı bilgiler, bunlarla ilgili olarak muhtemelen iyisiniz. Fakat bir soru var.

d = input("Do you want to play on the real device? (y/n)\n")
if (d=="y"):
    device = 'ibmqx2'
else:
    device = 'local_qasm_simulator'
# note that device should be 'ibmqx_qasm_simulator', 'ibmqx2' or 'local_qasm_simulator'

Oyuncuya devrenin kuantum kısmını çalıştırmak için hangi cihazın kullanılması gerektiğini sorar. Üç temel seçenek var. Birincisi, kendi bilgisayarınızdaki kuantum maddeleri (local_qasm_simulator) taklit etmektir. Ayrıca, IBM'in bilgisayarlarından sizin için benzetim yapmasını isteyebilirsiniz (ibmqx_qasm_simulator). Ancak gerçek 5 kubit kuantum cihazını da kullanabilirsiniz. (ibmqx2) Oynatıcıya bunun isteyip istemediğini soruyoruz ya da sadece onu yerel olarak simüle etmek istiyoruz. Süreç hiçbir zaman yeterince karmaşık değildir ve IBM simülasyonu yapmak için IBM'e ihtiyaç duyacağız.

Daha sonra başka bir önemli değişken ayarlıyoruz her bir işin kaç kez (istatistik toplamak için) çalıştırılacağı.

# while we are at it, let's set the number of shots
shots = 1024

1024 için büyülü bir neden yok. İsterseniz değiştirebilirsiniz.

Sonra, her oyuncu üç gemi nereye koyacağını seçerek, panoları kurmaya başlıyoruz. IBM'in ibmqx2 çipindeki beş kubit'e tekabül eden beş muhtemel pozisyon mevcut. Şebekeyi şu şekilde görselleştirelim. 



Rakamlar her pozisyon için kullandığımız isimlerdir. Bunlar aynı zamanda IBM'in kullandığı isimlerdir. Bu yüzden 2 kubit q [2] pozisyonudur.

Oyuncular tarafından yapılan seçimler shipPos'da saklanır. Bu her iki oyuncu için bir girişe sahiptir (birinci oyuncu için oyuncu = 0, ikinci oyuncu için oyuncu = 1) ve yerleştirdikleri üç gemiden her biri vardır. Giriş gemisiPos [oyuncu] [gemi], oyuncuya ait gemi numaralı gemi pozisyonunu (0, 1, 2, 3 veya 4) tutar.

Bir sonraki makalemde Oyuncuların seçeneklerini elde etmenin temel olarak nasıl yapıldığı  konusu ile devam edeceğiz. Yine bazı örnek kodları paylaşacağım. Ayrıca son makalede konu ile ilgili github üzerinde bulunan proje kodlarını size sunacağım.

Daha önceki Bir kuantum bilgisayarı nasıl programlanır? - 2. bölümü için tıklayın.

Hiç yorum yok:

Yorum Gönder