Skip to main content

Quantum Computation Language

QCL (Quantum Computation Language) Nedir?

QCL (Kuantum Hesaplama Dili),  kuantum bilgisayarlar için mimariden bağımsız yüksek seviyeli bir programlama dilidir. Kuantum algoritmalarının eksiksiz uygulanmasını ve simülasyonunu sağlar[1].

 

 Şekil 1. QCL’nin Hibrit Mimarisi [2].

QCL dili C++ ile yazılmış yorumlayıcı program üzerinden kullanılabilmektedir. Kuantum arkaplanını taklit etmek için sayısal simülasyon kütüphanesini (libqc) kullanmaktadır. Bu program açık kaynak olarak geliştirilmiştir ve http://tph.tuwien.ac.at/~oemer/qcl.html adresinden temin edinilebilir. En son sürümü 0.6.4 versiyon numarasıyla 2014 yılında yayınlanmıştır.


Yorumlayıcının Çalıştırılması (Windows İçin):


Dil Linux’a uyumlu çıkarıldığı için Windows’da çalışması bazı özel ayarların yapılması gerekmektedir. Bunun için öncelikle Cygwin aracının indirilmesi (https://cygwin.com) ve kurulum sırasında da aşağıda belirtilen paketlerin seçilip indirilmesi gerekmektedir[3].

Yükleme esnasında seçilip indirilmesi istenen paketler:


Devel altındaki..

  • bison
  • flex
  • gcc-g++
  • libreadline-devel
  • make


Graphics altındaki..

  • libplotter-devel


Libs altındaki..

  • libncurses-devel
  • libX11-devel
  • libXt-devel

 

Web altındaki..

  • wget

İndirme ve yükleme işlemi tamamlandıktan sonra Cygwin programı yönetici modda açılıp, aşağıda belirtilen komutlar çalıştırılır. (Bu komutlar o andaki mevcut QCL sürümlerine göre değişiklik gösterebilir.) Aşağıdaki komutlar,  QCL kaynak kodları bilgisayara indirir ve sıkıştırılmış halde olan dosyayı indirildiği dizine çıkarır.

 

Daha sonra  indirilen QCL kaynak kodu aşağıdaki komutlar kullanılarak derlenir.

 

QCL yorumlayıcısını/simülatörünü çalıştırmak içinde aşağıdaki komut kullanılır.

 

QCL çalıştığında komut satırında aşağıdakine benzer bir çıktının elde edileceği görülecektir.


 

QCL ‘deki Bazı Önemli Noktalar

  • Veri Tipleri ve Değişkenler

Tablo 1: Klasik veri tipleri


Örnek:
Bir değişkenin tanımlanması.

 

  • Operatörler

Tablo 2: QCL operatörler

  • Fonksiyonlar

Tablo 3: QCL Aritmatik fonksiyonlar

Örnek: Bir sayının logaritmasının hesaplanması ( log2 32 = 5 )

 

  • Diğer Fonksiyonlar

Tablo 4: QCL diğer fonksiyonlar

  • Girdi (Input)

Konsoldan girdi değerleri “input” komutuyla alınır.

Örnek:

 

  • Çıktı (Output)

Çıktılar ekrana “print” komutuyla basılır. Virgülle ayrılmış ifade veya değişkenlerin listesini konsol ekranına yazdırır.

Örnek:

 

  • Koşullu İfadeler (If – else)

Koşullu ifadeler klasik programlama dillerinde olduğu gibi “if – else” komutlarıyla
gerçekleştirilir.


Örnek:

 

  • Döngüler

Döngüler “for” komutuyla oluşturulur. For içerisinde integer bir sayaç tanımlanır ve bu sayaç süresince ilgili bloğun tekrar tekrar çalıştırılması sağlanır.

Örnek:

 

  • Koşullu Döngüler

Döngüler koşul sağlandığı müddetçe devam ettirilir. Bu durum “until” veya “while” komutuyla sağlanır. “until” de önce ilgili blok çalıştırılır sonra koşul kontrol ettirilir, “while” da ise önce koşul kontrol edilir sonra blok çalıştırılır.

Örnek:

veya

 


 

Kuantum Depolama ve Kayıtçılar (Registers)

Kuantum bilgisayarlarda olduğu gibi QCL’de de en küçük depolama birimi qubit’tir. QCL’de qubit formatında değişken tanımlanması klasik programlamadaki pointer’lar gibi bellekten alan tahsisiyle gerçekleştirilmektedir. Simülasyon ortamı olarak 32 veya 64 qubitlik alan tahsisi etmemize imkan sağlamaktadır. Bu değişken tanımı ve alan tahsisi işlemi için “qureg” komutu kullanılmaktadır. “dump” komutu ise değişkenimizin bra-ket notasyonunda ekrana basılmasını sağlar.

Şekil 2. Bloch küresi üzerinde bir qubit’in durumu

Örnek:

 

 


 

Kapılar

Kuantum bilgisayarlar kapılar tersinebilir (reversible) özelliklidir. Yani bir girdi için aldığımız sonuca, aynı işlemi uyguladığımızda başlangıçtaki girdi değerini elde edebilir. Örneğin, ket 0 ifadesine bir Not kapısı uyguladık diyelim; Not (|0>) = |1> elde ederiz. Daha sonra elde ettiğimiz sonuç olan ket 1’e tekra Not kapısı uygularsak Not(|1>) = |0> ket 0’ı yani başlangıçtaki durumu elde etmiş oluruz.


Bazı önemli kapılar

  • Pauli Kapıları:

X, Y ve Z Pauli kapıları, Bloch küresinde(Şekil 2) sırasıyla x,y ve z eksenleri etrafında döndürmelere karşılık gelmektedir. Matrissel gösterim şekilleri aşağıdaki gibidir.

Şekil 3. Pauli Kapılarının matrissel gösterimi

Örnek:

Tersinebilir (reversible) özelliği

 

  • Hadamard Kapısı:

Bu kapı qubitleri süperpozisyon durumuna getirmektedir. Aşağıda gösterildiği gibi H matrisi ile ifade edilmektedir.

Şekil 4. Hadamard kapısının matrissel ifadesi

Şekil 5. Hadamard kapısının Ket 0 ve Ket 1’e etkisi

Örnek:

 


 

Mevcut Kütüphane ve Algoritmaların Çalıştırılması

QCL ile birlikte birkaç tane kütüphane ve hazır yazılmış algoritmalar gelmektedir. Bu kütüphaneler QCL’nin bulunduğu dizinde lib klasörü altında bulunmaktadır (Benim bilgisayarımda bulunduğu yer C:\qcl\lib). Buradaki kütüphaneleri kodumuza dahil edip kullanabilmek için aşağıdaki komutları uygulamamız gerekmektedir.

Örnek: Mevcut Grover arama algoritmasının çalıştırılması.

 


 

Kaynakça:

[1] Bernhard Omer. Mar 27 2014. http://tph.tuwien.ac.at/~oemer/qcl.html
[2] Bernhard Omer. Jan 20 2000. Quantum Programming in QCL
[3] Brian Pursley. Dec 20 2015. https://blog.cinlogic.com/2015/12/20/running-qcl-quantum-computationlanguage-on-windows/

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir