Hot Posts

6/recent/ticker-posts

Süperpozisyonu Görselleştirmek: Qiskit'te Bloch Küresi ve Statevector Analizi

⏳ Estimated Reading Time: 6 min

Kuantum bilişim serimizin dördüncü makalesine hoş geldiniz! Hızımızı kesmeden devam ediyoruz :) Daha önce: 

başlıklı makalelerimizde kuantum devrelerinin temellerini, kapıları ve simülasyonla gerçek cihaz kullanımını ele aldık. Şimdi, kuantum dünyasının en büyüleyici kavramlarından biri olan süperpozisyonu görselleştirmeye odaklanacağız. Bu makalede, Qiskit'in sunduğu Bloch küresi ve statevector analizi araçlarını kullanarak kuantum durumlarını nasıl görselleştireceğinizi adım adım öğreneceksiniz.



1. Giriş: Süperpozisyon ve Görselleştirme Neden Önemli?

Kuantum bilişimde qubit'ler, klasik bitlerden farklı olarak süperpozisyon adı verilen bir durumda olabilir. Bu, bir qubit'in aynı anda hem 0 hem de 1 durumunda olabileceği anlamına gelir. Ancak bu soyut kavramı anlamak, sadece matematiksel denklemlerle sınırlı kaldığında zor olabilir. İşte tam bu noktada, görselleştirme devreye giriyor. Qiskit, kuantum durumlarını anlamamızı kolaylaştıran güçlü araçlar sunar: Bloch küresi ve statevector analizi. Bu makalede, bu araçları kullanarak süperpozisyonun nasıl temsil edildiğini ve Qiskit ile nasıl görselleştirebileceğinizi keşfedeceksiniz.

2. Süperpozisyon Nedir?

Süperpozisyon, bir qubit'in aynı anda birden fazla durumda olabilmesini sağlayan kuantum mekaniğinin temel bir özelliğidir. Klasik bir bit yalnızca 0 ya da 1 olabilirken, bir qubit şu şekilde ifade edilir:

|ψ=α|0+β|1

Burada:

  • α ve β, qubit'in 0 ya da 1 durumunda bulunma olasılıklarını belirleyen karmaşık sayılardır.
  • |α|2+|β|2=1 koşulu, durumun normalize edildiğini garanti eder.

Süperpozisyon, kuantum bilgisayarlarının paralel işlem yapma gücünün temelidir ve bu makalede bu durumu görselleştirmeyi öğreneceğiz.

3. Bloch Küresi: Kuantum Durumlarını Görselleştirme

Bloch Küresi Nedir?

Bloch küresi, tek bir qubit'in kuantum durumunu üç boyutlu bir küre üzerinde temsil etmenin bir yoludur. Kürenin her noktası, bir qubit'in olası bir durumunu gösterir. Örneğin:

  • Kuzey kutbu: |0 durumu.
  • Güney kutbu: |1 durumu.
  • Ekvator: Süperpozisyon durumları (örneğin, |+=12(|0+|1)).

Önemli Durumlar

Bloch küresinde bazı temel durumlar şöyledir:

  • |0: Kuzey kutbu.
  • |1: Güney kutbu.
  • |+: Ekvatorda, x ekseni üzerinde.
  • |: Ekvatorda, x ekseninin negatif tarafında.

Kuantum Kapıları ve Bloch Küresi

Kuantum kapıları, Bloch küresinde dönüşümler olarak görselleştirilebilir:

  • Hadamard kapısı (H): |0 durumunu |+ süperpozisyon durumuna döndürür.
  • Pauli-X kapısı: Küreyi x ekseni etrafında 180° döndürür (örneğin, |0|1).

4. Qiskit'te Bloch Küresi Kullanımı

Şimdi Qiskit ile bir qubit'in süperpozisyon durumunu Bloch küresinde görselleştirelim. Aşağıdaki örneği adım adım inceleyelim:

Kod Örneği

from qiskit import QuantumCircuit
from qiskit.visualization import plot_bloch_multivector
from qiskit.quantum_info import Statevector

# Tek qubit'li bir devre oluştur
qc = QuantumCircuit(1)
qc.h(0)  # Hadamard kapısını uygula

# Devrenin durum vektörünü al
state = Statevector.from_instruction(qc)

# Bloch küresini çiz
plot_bloch_multivector(state)
{codeBox}

Kodun Açıklaması

  1. Devre Oluşturma: Tek bir qubit ile bir kuantum devresi tanımlıyoruz.
  2. Hadamard Kapısı: |0 durumuna Hadamard kapısı uygulayarak qubit'i |+ süperpozisyon durumuna sokuyoruz.
  3. Statevector: Devrenin son durumunu Statevector ile alıyoruz.
  4. Görselleştirme: plot_bloch_multivector fonksiyonu, qubit'in durumunu Bloch küresinde çiziyor.

Bu kod çalıştırıldığında, Bloch küresinde qubit'in ekvatorda, |+ durumunda olduğunu görürsünüz.

5. Statevector Analizi: Kuantum Durumunun Tam Resmi

Statevector Nedir?

Statevector, bir kuantum sisteminin tam durumunu temsil eden matematiksel bir vektördür. Örneğin, |+ süperpozisyon durumu için statevector şu şekildedir:

|ψ=12|0+12|1 (Statevector: [0.707, 0.707])

Qiskit'te Statevector Kullanımı

Aynı devreyi kullanarak statevector'ü nasıl elde edeceğimize bakalım:

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

# Tek qubit'li bir devre oluştur
qc = QuantumCircuit(1)
qc.h(0)  # Hadamard kapısını uygula

# Statevector'ü al
state = Statevector.from_instruction(qc)
print(state)
{codeBox}

Çıktı:

Statevector([0.70710678+0.j, 0.70710678+0.j], dims=(2,))
{codeBox}

Bu çıktı, qubit'in süperpozisyonda olduğunu ve |0 ile |1 durumlarında eşit olasılıkla bulunduğunu gösterir.

6. Çoklu Qubit'ler ve Görselleştirme

Çoklu Qubit'ler için Bloch Küresi

Bloch küresi yalnızca tek qubit'ler için uygundur. Çoklu qubit'ler için durum uzayı daha karmaşıktır ve genellikle dolanıklık gibi ek özellikler içerir.

Statevector ile Dolanıklık Analizi

İki qubit'li bir Bell durumu oluşturup statevector'ünü inceleyelim:

12(|00+|11)

Bu, 12(|00+|11) Bell durumunu temsil eder ve iki qubit'in dolanık bir süperpozisyonda olduğunu gösterir.

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

# İki qubit'li bir devre oluştur
qc = QuantumCircuit(2)
qc.h(0)  # İlk qubit'e Hadamard
qc.cx(0, 1)  # CNOT ile dolanıklık oluştur

# Statevector'ü al
state = Statevector.from_instruction(qc)
print(state)
{codeBox}

Çıktı:

Statevector([0.70710678+0.j, 0.        +0.j, 0.        +0.j, 0.70710678+0.j],
            dims=(2, 2))
{codeBox}

Bu, 12(|00+|11) Bell durumunu temsil eder ve iki qubit'in dolanık bir süperpozisyonda olduğunu gösterir.

7. Görselleştirme Araçlarının Sınırları

  • Bloch Küresi: Yalnızca tek qubit'ler için uygundur. Çoklu qubit durumları için alternatif araçlar gereklidir.
  • Alternatifler: Qiskit, çoklu qubit'ler için plot_state_city veya plot_state_qsphere gibi araçlar sunar. Örneğin:
    from qiskit.visualization import plot_state_qsphere
    plot_state_qsphere(state)
    {codeBox}
            

Bu araçlar, dolanıklık ve süperpozisyonu daha iyi anlamanıza yardımcı olur.

8. Pratik Uygulama: Süperpozisyonun Gücünü Görmek

Süperpozisyonun pratik bir örneği olarak Deutsch algoritmasını ele alabiliriz. Bu algoritma, süperpozisyonu kullanarak bir fonksiyonun doğasını (sabit veya dengeli) belirler. Daha fazla detay sonraki makalelerde gelecek, ancak şimdilik basit bir uygulamayı görselleştirelim.


from qiskit import QuantumCircuit

from qiskit_aer import AerSimulator

from qiskit.visualization import plot_histogram


# Sabit fonksiyon için devre (f(x) = 0)

qc_constant = QuantumCircuit(2, 1)  # 2 qubit, 1 klasik bit

qc_constant.x(1)  # q1'i |1> durumuna getir

qc_constant.h(0)  # q0'a Hadamard kapısı

qc_constant.h(1)  # q1'e Hadamard kapısı

# Oracle: f(x) = 0 için hiçbir kapı uygulanmaz (kimlik operatörü)

qc_constant.h(0)  # q0'a ikinci Hadamard kapısı

qc_constant.measure(0, 0)  # q0'ı ölç

# Simülasyon

simulator = AerSimulator()

job_constant = simulator.run(qc_constant, shots=1024)

result_constant = job_constant.result()

counts_constant = result_constant.get_counts()

print("Sabit fonksiyon (f(x) = 0) için ölçüm:", counts_constant)

# Dengeli fonksiyon için devre (f(x) = x)

qc_balanced = QuantumCircuit(2, 1)  # 2 qubit, 1 klasik bit

qc_balanced.x(1)  # q1'i |1> durumuna getir

qc_balanced.h(0)  # q0'a Hadamard kapısı

qc_balanced.h(1)  # q1'e Hadamard kapısı

qc_balanced.cx(0, 1)  # Oracle: f(x) = x için CNOT kapısı (q0 kontrol, q1 hedef)

qc_balanced.h(0)  # q0'a ikinci Hadamard kapısı

qc_balanced.measure(0, 0)  # q0'ı ölç

# Simülasyon

job_balanced = simulator.run(qc_balanced, shots=1024)

result_balanced = job_balanced.result()

counts_balanced = result_balanced.get_counts()

print("Dengeli fonksiyon (f(x) = x) için ölçüm:", counts_balanced)

# print("Sabit fonksiyon devresi:")

# print(qc_constant.draw())

# print("Dengeli fonksiyon devresi:")

# print(qc_balanced.draw())

# plot_histogram(counts_constant)

# plot_histogram(counts_balanced){codeBox}


Çıktılar: 

Sabit fonksiyon devresi:
     ┌───┐┌───┐┌─┐
q_0: ┤ H ├┤ H ├┤M├
     ├───┤├───┤└╥┘
q_1: ┤ X ├┤ H ├─╫─
     └───┘└───┘ ║ 
c: 1/═══════════╩═ 

                0 


Dengeli fonksiyon devresi:
     ┌───┐          ┌───┐┌─┐
q_0: ┤ H ├───────■──┤ H ├┤M├
     ├───┤┌───┐┌─┴─┐└───┘└╥┘
q_1: ┤ X ├┤ H ├┤ X ├──────╫─
     └───┘└───┘└───┘      ║ 
c: 1/═════════════════════╩═ 

                          0 

 

9. Sonuç

Bu makalede, kuantum bilişimde süperpozisyonun ne olduğunu, Bloch küresi ve statevector analizi ile nasıl görselleştirildiğini öğrendik. Qiskit'in bu araçları, kuantum durumlarını anlamamızı ve devrelerin nasıl çalıştığını görmemizi sağlıyor. Şimdi sıra sizde: Kendi devrelerinizi oluşturun ve bu görselleştirme araçlarını keşfedin!{alertSuccess}

10. Ek Kaynaklar

Yukarıdaki kodların kernellerine erişmek için:
{getButton} $text={Bloch - Bell - Deutch Algoritmaları} $icon={downlaod} $color={Hex Color}

Kuantum yolculuğunuzda bol şans!

Post a Comment

0 Comments