⏳ Estimated Reading Time: 6 min
- "Qiskit'e Giriş: Kurulum, Temel Terimler ve İlk Kuantum Devreniz"
- "Kuantum Kapıları ve Qiskit'te Temel İşlemler: Hadamard'tan CNOT'a"
- "Simülasyon vs. Gerçek Cihaz: Qiskit'te Quantum Backend'leri Kullanma Rehberi"
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:
Burada:
ve , qubit'in 0 ya da 1 durumunda bulunma olasılıklarını belirleyen karmaşık sayılardır. 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:
durumu. - Güney kutbu:
durumu. - Ekvator: Süperpozisyon durumları (örneğin,
).
Önemli Durumlar
Bloch küresinde bazı temel durumlar şöyledir:
: Kuzey kutbu. : 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):
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,
→ ).
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ı
- Devre Oluşturma: Tek bir qubit ile bir kuantum devresi tanımlıyoruz.
- Hadamard Kapısı:
durumuna Hadamard kapısı uygulayarak qubit'i süperpozisyon durumuna sokuyoruz. - Statevector: Devrenin son durumunu
Statevector
ile alıyoruz. - 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,
5. Statevector Analizi: Kuantum Durumunun Tam Resmi
Statevector Nedir?
Statevector, bir kuantum sisteminin tam durumunu temsil eden matematiksel bir vektördür. Örneğin,
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
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:
Bu,
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,
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
veyaplot_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!
0 Comments
Konuyla ilgili yorum giriniz.