30 Eylül 2017 Cumartesi

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

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

Bir kuantum bilgisayar nasıl programlanır?Kubit’lerle Ne Yapacağız?

Bugün size bahsedeceğimiz konu Kuantum Battleship oyunu, bir Japon varyantına dayanıyor. Burada, tüm gemi sadece bir kare alır. Ancak bazıları diğerlerinden daha önce batabilir. Tek bir bombayla vurulabilen gemiye sahibiz.

Bunu bir kuantum bilgisayarda simüle etmek için, her gemi için bir kubit kullanabiliriz. Hal 0 tamamen bozulmamış bir gemi ile tanımlanabilir ve 1'i yok edilmiş biri ile tanımlanabilir. Bu durumda, bindirme halleri bir geminin imha edilmesine karşılık gelecektir.

Tek bir vuruşla yok edilen bir gemi simülasyonu yapması oldukça kolay olacak. Oyunu 0 durumunda başlatabiliriz ve sonra isabet ettiğinde bir NOT uygulayabiliriz. Hal 1'i de bulduğumuzda, geminin yok edilip edilmediğini bileceğiz.

Şimdi, bu basit işlemi bir kuantum bilgisayarda nasıl uygulayacağımıza göz atalım. Başka gemilerle ilgili olarak şu anda giriş ve çıkış için endişelenmeyeceğiz.

Kuantum bilgisayarlar için temel bir Assembly diline QASM denir. İşte, bir gemiyi başlatan, bomba atan ve halen ayakta olup olmadığına bakan bir QASM komut dosyası örneği aşağıdadır.

OPENQASM 2.0;
include "qelib1.inc";
qreg q[1]; \\ Initialize a register with a single qubit
creg c[1]; \\ Initialize a register with a normal bit
       
u3(pi,0,0) q[0]; \\ apply a NOT to the qubit

measure q[0] -> c[0]; \\ measure the qubit

İlk iki satır daima uygun herhangi bir QASM dosyasının üstünde bulunur. Bundan sonra, ihtiyacımız olan tüm bitleri tanımlıyoruz. Hem kuantum hem de normal olarak. Bu örnekte, q olarak adlandırılan bir kayıtta tek bir kubit'i tanımladık. Koddaki bu kubiti q [0] olarak belirtiyoruz. Çıktılar insan tarafından okunabilir. Normal bilgi içinde olması gerektiği için c olarak adlandırılan bir kayıtta tek bir normal bit de tanımlıyoruz.

Kubit q [0], durum 0'da otomatik olarak başlatılır. Bu, başlamak istediğimiz durum olduğundan, başka bir hazırlık gerekli değildir.

Sonra, bu q [0] = 0, tamamen bozulmamış bir gemi alarak başlamak ve bir NOT gerçekleştirmek istiyoruz. Normal bir bit ve normal bir programlama dili ile, bunu q [0] =! Q [0] (C ++ için) veya q [0] = q [0] (Python için) olarak uygulayabiliriz. QASM'de birden çok yolla yapılabilir. En basit olanı, x ve y adlı işlemleri kullanmaktır. Karşılaştırmaları yapmak için eşdeğer C ++ ve Python satırlarıyla bunları nasıl kullanacağınıza bazı örnekler verilmiştir.

q[0] = !q[0]; \\ A C++ style NOT
q[0] = not q[0] # A Python style NOT
x q[0]; \\ A QASM style NOT
y q[0]; \\ Another QASM style NOT

x ile y arasında bazı günlerde bir takım anlaşmamız gereken farklılıklar var. Ama şimdi değil.
Muhtemelen, önceki QASM dosyasında ne x ne de y'nin görülmediğini fark etmişsinizdir. Bunun yerine u3 (pi, 0,0) var. Bu, bir NOT uygulamak için başka bir yoldur.

u3(pi,0,0) q[0]; \\ Another QASM style NOT

Tamamen x ile eşdeğerdir. Ama u3 genel olarak daha karmaşık bir işlemdir. Üç argümanı vardır ve onları değiştirerek başka şeyler yapabiliriz.

İlk argüman, radyan cinsinden ifade edilen bir açıdır. Kubit alanımızı çevireceğimiz açı budur. Pi, 180 ° 'ye karşılık gelir ve bu nedenle, küre tamamen ters çevrilir demektir. 0, 1'e hareket eder ve 0'a hareket eder, bu nedenle bu işlem NOT olarak davranır. NOT kullanmak için, bu açının yarısını kullanabiliriz. u3 (0.5 * pi, 0,0).

Dolayısıyla şu an bizim kubitimiz üzerinde NOT yapmak için başka bir yolumuz daha var. İki kez NOT yapabiliriz.

\\ Another QASM style NOT
u3(0.5*pi,0,0) q[0];
u3(0.5*pi,0,0) q[0];

Ayrıca üçte bir NOT ya da dörtte bir NOT'u yarım bir NOT ile ve ardından da bir NOT'u iki sekizli ile takip edebiliriz.

Bir sonraki makalemde QASM dosyamızın son satırı ile devam edeceğiz. Yine bazı örnek kodları paylaşacağım.

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

Hiç yorum yok:

Yorum Gönder