Qiskit ile Basit Bir Kuantum Devresi Oluşturma ve Simüle Etme

  • Konuyu başlatan Konuyu başlatan nt
  • Başlama tarihi Başlama tarihi

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,221
Selam! dünyalı biz dostuz,

kuantum bilgisayarlarda kullanılan algoritmalar hakkında

Qiskit, IBM tarafından geliştirilen bir açık kaynaklı kuantum bilgisayar yazılım geliştirme çerçevesidir ve Python dilini kullanır.

udemyde 1.5 dan aşağı değildir

bizde para geçmez gardaş. :)
çök anlatıyorum çök çök

Bu kısa rehberde, Qiskit kullanarak basit bir kuantum devresi oluşturmayı ve simüle etmeyi göstereceğim. Eğer kuantum bilgisayarlar ve Qiskit hakkında daha fazla bilgi edinmek istiyorsanız, bu adımları takip edebilirsiniz.

Anlattıklarım linux içindir işletim sisteminize göre komutları değiştirebilirsiniz ya da işletim sisteminizi değiştirin :D

Öncelikle, Qiskit'i yüklemek için terminal veya komut istemcisine şu komutu yazabilirsiniz:
Kod:
pip install qiskit

Şimdi Python dilinde bir metin düzenleyici kullanarak aşağıdaki gibi basit bir kuantum devresi oluşturalım ben vscode kullanıyorum IDE olarak eğer nasayı hacklemeye çalışmıyorsanız ya da kuantum yerine süper iletkenin kodları bilgisayarınızda yok ise sizde IDE kullanın yeni başlayanlar için kolaylıkları vardır

Kod:
from qiskit import QuantumCircuit, Aer, transpile, assemble

devre = QuantumCircuit(1, 1)

devre.h(0)

devre.measure(0, 0)

simülatör = Aer.get_backend('aer_simulator')
derlenmiş_devre = transpile(devre, simülatör)
sonuç = simülatör.run(derlenmiş_devre).result()

sayılar = sonuç.get_counts(devre)
print("Ölçüm sonucu:", sayılar)

kodun çıktısı ben 8 kez run yaptıgım için 8 farklı cıktı var:
Kod:
Ölçüm sonucu: {'0': 512, '1': 512}
Ölçüm sonucu: {'1': 536, '0': 488}
Ölçüm sonucu: {'1': 525, '0': 499}
Ölçüm sonucu: {'0': 521, '1': 503}
Ölçüm sonucu: {'0': 517, '1': 507}
Ölçüm sonucu: {'0': 523, '1': 501}
Ölçüm sonucu: {'0': 533, '1': 491}
Ölçüm sonucu: {'0': 484, '1': 540}

Ekran Görüntüsü - 2023-12-01 15-14-54.png
 
Son düzenleme:
şimdi biraz daha karmaşık olanla devam edelim
Kod:
from qiskit import QuantumCircuit, Aer, transpile, assemble

devre = QuantumCircuit(3, 3)

devre.h(0)

devre.cx(0, 1)

devre.cx(1, 2)

devre.measure([0, 1, 2], [0, 1, 2])

simülatör = Aer.get_backend('aer_simulator')
derlenmiş_devre = transpile(devre, simülatör)
sonuç = simülatör.run(derlenmiş_devre).result()

sayılar = sonuç.get_counts(devre)
print("Ölçüm sonucu:", sayılar)

Kod:
Ölçüm sonucu: {'000': 535, '111': 489}
Ölçüm sonucu: {'000': 518, '111': 506}
Ölçüm sonucu: {'111': 502, '000': 522}
Ölçüm sonucu: {'000': 536, '111': 488}
Ölçüm sonucu: {'111': 512, '000': 512}
Ölçüm sonucu: {'111': 515, '000': 509}
Ölçüm sonucu: {'000': 501, '111': 523}
Ekran Görüntüsü - 2023-12-01 15-28-04.png


Bu devrede, birinci kubite Hadamard kapısı uygulanır, ardından CNOT kapıları ile ikinci ve üçüncü kubitlere bağlantılar sağlanır. Sonrasında, tüm kubitler ölçülür. Bu devre, Bell durumunu ifade eder, ki bu kuantum bilişimde önemli bir kavramdır. Bu örnek, daha karmaşık bir kuantum devresinin nasıl oluşturulabileceğini gösterir.
 
Şimdi buda ne sırf kod var!

dediğinizi duyar gibiyim ozaman biraz görselleştirrme ekliyelim

Kod:
pip install matplotlib

Kod:
from qiskit import QuantumCircuit, Aer, transpile, assemble
import matplotlib.pyplot as plt

devre = QuantumCircuit(2, 2)
devre.h(0)
devre.cx(0, 1)
devre.h(0)
devre.h(1)
devre.measure([0, 1], [0, 1])

simülatör = Aer.get_backend('aer_simulator')
derlenmiş_devre = transpile(devre, simülatör)
sonuç = simülatör.run(derlenmiş_devre).result()

counts = sonuç.get_counts(devre)

plt.bar(counts.keys(), counts.values())
plt.xlabel('State')
plt.ylabel('Counts')
plt.show()
Figure_1.png
Figure_2.png
Figure_3.png
 
şimdi bunu biraz daha karmaşa hakim olsun bunlar çok basit ne bu dalgamı geçiyosun diyenler için :

üç kubit üzerinde Hadamard kapısı ve Toffoli kapısı kullanarak bir Bell durumu oluşturuyoruz. Sonra, ölçümleri yaparak elde edilen durumların frekanslarını bir grafikte gösteriyoruz.

Kod:
from qiskit import QuantumCircuit, Aer, transpile, assemble
import matplotlib.pyplot as plt

devre = QuantumCircuit(3, 3)
devre.h(range(3))
devre.ccx(0, 1, 2)
devre.measure(range(3), range(3))

simülatör = Aer.get_backend('aer_simulator')
derlenmiş_devre = transpile(devre, simülatör)
sonuç = simülatör.run(derlenmiş_devre).result()

counts = sonuç.get_counts(devre)
plt.bar(counts.keys(), counts.values())
plt.xlabel('State')
plt.ylabel('Counts')
plt.show()



Figure_1.png
Figure_2.png
Figure_3.png
 
daha fazla ilgili iseniz IBM in kuantum oyun alanına bakabilirsiniz
Kuantum Oyun Alanı IBM tarafından tasarlanmıştır

 
Son düzenleme:

Forum istatistikleri

Konular
7,243
Mesajlar
122,556
Üyeler
2,926
Son üye
karakartal

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top