Statevector simülasyonu — tam kuantum durumunun klasik temsili
Bu sayfa, devrenin Born örneklemesiyle değil, genlik vektörü olarak temsil edilen kuantum durumunun nasıl üretildiğini ve okunacağını işler. Aer simülatörü başlığında genel arka uç ve yöntem ailesi özetlenmişti; burada ise “statevector yolu”nun sözleşmesi, bellek maliyeti, kübit sırası ve ölçümle ayrışan kullanım senaryoları üzerinde duruyoruz. Devre metni ve kapı cebiri devre yapısı ile kapılar ve ünite mantığı sayfalarında kaldı; ölçüm satırlarının histogram diline geçişi ölçüm mantığı sayfasında. Üstel bellek sınırının sezgisi için klasik simülasyon maliyeti başlığına dönüş yapılabilir.
Statevector neyi verir, neyi vermez
n kübitlik saf bir durum, karmaşık sayılardan oluşan 2ⁿ uzunluklu bir sütun vektörü ile kodlanır; her bileşen, hesaplama tabanında o klasik ikili etiketinin genliğidir. Statevector simülasyonu, ünite adımların bu vektör üzerinde çarpan olarak işlendiği yürütmeyi ifade eder — yani “tek bir dalga fonksiyonu” resminin makinede tutulmasıdır. Bu resim, algoritma tasarımında içgörü sağlar; fakat donanımda doğrudan okunmaz ve ölçüm içeren üretim akışının tamamını tek başına taşımaz.
Neden ayrı bir “mod” gibi düşünmelisiniz?
Aynı devre dosyası hem histogram üretmek hem de ara durumları incelemek için kullanılabilir; fakat iki hedef farklı çıktı sözleşmeleri getirir. Statevector yolu, olasılık dağılımını doğrudan örneklemek yerine önce tam genlikleri verir; histogram istiyorsanız ya bu genliklerden teorik dağılımı türetir ya da ölçüm ve shot dünyasına geçersiniz. Bu ayrımı zihinde tutmak, “simülatör hata verdi” paniğini azaltır: çoğu zaman sorun matematikte değil, yanlış çıktı türünü beklemektedir.
“Gerçek kuantum bilgisayarı gibi mi?” kısa yanıt
Hayır — en azından okuma ve zamanlama anlamında. Statevector yürütmesi, ideal ünite modelinin içinde kalır; T1/T2, okuma yanlılığı ve bağlanırlık kısıtı burada doğmaz. Donanıma yaklaşmak istiyorsanız gürültü veya emülasyon hatlarına kaymanız gerekir; bu sayfa o reçeteyi vermez, yalnızca ideal matematiksel çekirdeği netleştirir.
İki giriş: Aer arka ucu ve quantum_info
Pratikte iki aile görürsünüz: Aer’in StatevectorSimulator arka ucu, devreyi yürütüp sonuç nesnesinden vektör okumanızı sağlar; Qiskit’in quantum_info.Statevector sınıfı ise çoğu zaman devreyi saf ünite olarak yorumlayıp durumu doğrudan üretir. İkisi de aynı lineer cebri paylaşır; fakat bellek yönetimi, transpile ihtiyacı ve hata mesajları farklılaşabilir. Ekip içinde birini “standart” ilan etmek, karşılaştırmalı deneyleri basitleştirir.
Ne zaman hangisi?
Hızlı matematiksel deneme ve küçük devrelerde Statevector.from_instruction akışı okunabilir ve hafif olabilir. Büyük devrelerde ve Aer seçenekleriyle (örneğin hassasiyet veya paralellik) oynamak istediğinizde arka uç yolu tercih edilir. Kritik olan, her iki yolda da aynı devre grafiğinin aynı ünite olarak yorumlandığını küçük örneklerle doğrulamanızdır; transpile veya basis değişimi gibi ön işlemler vektörü sessizce kaydırır.
Aer ile ilişki
Aer simülatörü sayfasında AerSimulator içinde method="statevector" benzeri bir seçimle de aynı temsil kullanılabilir; burada odak, “genel Aer” yerine vektörü birinci sınıf çıktı olarak sunan yoldur. API ayrıntıları sürüme göre değişebileceğinden, burada yürüttüğümüz tartışma bilerek API’den biraz kopuk, davranışsal düzeydedir.
Bellek, boyut ve ölçek stratejisi
Her karmaşık genlik yaklaşık sekiz bayt yer tutar (tek veya çift hassasiyet); toplam bellek ölçeği O(2ⁿ) mertebesindedir ve bu, “bir kübit daha” eklemenin masrafını ikiye katlaması anlamına gelir. Bu yüzden statevector, eğitim ve algoritma doğrulaması için mükemmeldir; fakat üretim ölçeminde tek başına ölçeklenmez. Ölçek sınırına yaklaştığınızda MPS, stabilizatör veya yoğunluk gibi başka Aer yollarına geçiş düşünülür — bunların her biri farklı devre sınıflarında geçerlidir ve bu sayfada derinleştirilmez.
Profil çıkarma alışkanlığı
Kübit sayısını bir bir artırıp bellek ve süre eğrisini not etmek, ekip içi sezgiyi güçlendirir. İşletim sistemi bellek sayaçları bazen “ani tavan”ı geç gösterir; bu yüzden küçük prototipten sonra aynı kodu biraz daha büyük n ile denemek, planlama hatasını erken yakalar.
Ne zaman vazgeçmek gerekir?
Eğer amacınız yalnızca belirli bir observabl’ın beklenen değeri ise, tam vektörü üretmek gereksiz pahalı olabilir; varyasyonel hatlarda Estimator benzeri soyutlamalar tasarlanmıştır. Bu sayfa o soyutlamaları anlatmaz; yalnızca “tam durum gerekiyor mu?” sorusuna dürüst bir çerçeve çizer.
Endian, indeks ve okuma alışkanlığı
Vektörün k. bileşeninin hangi klasik ikili etikete denk geldiği, kütüphanenin kübit sırası sözleşmesine bağlıdır. İki farklı araç aynı devreyi “doğru” yürütüp farklı indeks düzeninde vektör döndürdüğünde, sorun genelde matematikte değil etiketlemededir. Bu yüzden küçük bir n=2 referans devresinde beklenen genlikleri elle tabloya dökmek, ekip içi tek doğruluk kaynağı oluşturur.
Çizim ile dizi aynı şey değildir
Devre çizimi estetik olarak “soldan sağa” okunur; vektör indeksleri ise bellek düzenine oturur. Görselleştiriciler bazen marjinal olasılıkları ayrıca hesaplar — bu iyi bir güvenlik valfidir: çizim güzel olsa da, sayısal dizi ile aynı sırayı paylaşmayabilir.
Kayıt ve kablo düzeni
Çoklu kübit kayıtları ve kablo permütasyonları, vektörün yorumunu etkiler; kayıt düzeyi disiplini için kayıt sistemleri sayfasındaki sözleşmeyi burada da hatırlamak gerekir.
Ünite evrim ile ölçüm arasındaki çatlak
Ölçüm talimatı, Born kuralı ile klasik bir sonuç üretir ve saf durum resmini tek başına sürdürmeyi zorlaştırır: ya dağılım diline geçersiniz ya da ölçüm öncesindeki ünite prefiksine çekilirsiniz. Statevector aracı, tipik olarak ünite veya ölçümsüz prefiks üzerinde anlamlıdır; ölçüm satırı eklenmiş devrede neyin döndüğünü her zaman “ham vektör” sanmamak gerekir. Bu ayrım, ölçüm mantığı ile dinamik devreler sayfalarının birleştiği noktadır.
Pratik desen
Aynı algoritmanın hem ünite analiz hem ölçümlü deney sürümünü yan yana tutmak için devreyi kopyalayıp bir kopyadan ölçüm satırlarını ayırmak sık bir desendir. Bu küçük disiplin, “neden ünite testim ölçüm sonrası devrede kırılıyor?” sorusunu kökten azaltır.
Klasik kontrol ve koşullu akış
Klasik geri beslemeli dinamik bloklar, yürütmeyi tek bir sabit ünite çarpanı olarak yazmayı zorlaştırır; statevector aracını bu senaryolarda kullanmadan önce desteklenen alt küme hakkında resmi belgeyi doğrulayın. Burada yalnızca riski işaretliyoruz, tam matrisi vermiyoruz.
Doğrulama ve küçük devre disiplini
Ünite kontrolü için Operator veya küçük boyutlu doğrudan matris çarpımı ile statevector sonucunu karşılaştırmak, regresyon testlerinde altın standarttır. Büyük devrede tam matris tutulamayacağından, ya bloklara bölünür ya da rastgele yönlerde özdeğer testleri gibi yöntemlere geçilir — bu sayfa o ileri teknikleri açmaz, fakat “küçükte kanıtla, büyükte ölç” ilkesini pekiştirir.
Transpile ve eşdeğerlik
Transpile edilmiş devre, orijinali ile ünite olarak eşdeğer olmalıdır; fakat farklı optimizasyon seviyeleri sayısal olarak mikroskobik farklar bırakabilir. Statevector karşılaştırmasında tolerans kullanmak, “sıfır mı değil mi” kadar basit bir karar olmayabilir.
Birim testi önerisi
Bell durumu gibi el ile yazılmış referans genlikler, CI hattında hızlı bir kontrol sunar. Testin anlamı, Aer sürümünüz yükseldiğinde regresyonu yakalamaktır.
Global faz, normalizasyon ve sayısal gürültü
Saf durumlar, global bir faz çarpanına kadar özdeştir; iki vektör bileşen bileşen yakınsa ama faz farkı taşıyorsa, aynı fiziksel durumu temsil edebilirler. Karşılaştırma yaparken bazen mutlak değer kareleri yeterlidir, bazen de fazı hizalamak için bir bileşeni referans seçmek gerekir. Sayısal simülasyonda birikmiş yuvarlama, normun biraz sapmasına yol açabilir; yeniden normalizasyon stratejisi, analiz hattınıza göre bilinçli seçilmelidir.
İçgörü mü, raporlama mı?
Araştırma notunda global fazı sabitlemek okunabilirlik kazandırır; üretim logunda ise fazı gereksiz yere “düzeltmek” bazen hata ayıklamayı zorlaştırır. Amaç fonksiyonunuza göre bir politika seçin ve kodda yorum satırıyla kilitleyin.
Notasyon köprüsü: Dirac ve bilgisayar belleği
Ders kitaplarında gördüğünüz |ψ⟩ yazımı ile Python dizisi arasındaki fark yalnızca sözdizimi değildir: biri sonsuz boyutlu Hilbert uzayı fikrini telaffuz etmeye uygun, diğeri ise sonlu boyutta gerçek bir bellek düzenine oturur. Qiskit’te statevector, işte bu ikinci dünyanın somut örneğidir; dolayısıyla “ket gördüm, dolayısıyla vektörü doğrudan okuyorum” geçişi, küçük bir zihinsel çeviri ister.
Kısa tarihsel not, bağlamı koparmadan
Dirac’ın braket notasyonu 20. yüzyıl ortasında hesaplamayı sadeleştirdi; kuantum bilgi çağında ise aynı fikir, SIMD ile hızlandırılmış dizi işlemlerine dönüştü. Richard Feynman’ın “klasik bilgisayarlar kuantumu verimli simüle edemez” uyarısı (polinom zamanlı genel simülasyon bağlamında) bugün hâlâ yön verir — Aer statevector da bu sınırın içinde çalışan bir araçtır; sihirli olarak sınırı aşmaz, fakat sınır içinde mümkün olanın hızlı yoludur. Bu cümleler kişisel biyografi okuması değil, neden bellek eğrisinin dik olduğunu hatırlatan kültürel bir çerçevedir.
Hilbert uzayı tekrarını nerede bulursunuz?
Soyut uzay ve durum postülatları için Hilbert uzayı ve durum sayfasına dönün; burada yalnızca o dilin Qiskit dizisiyle eşlendiği noktayı işaretledik.
Kod laboratuvarı
İlk blok, çekirdek quantum_info.Statevector yolunu gösterir (ölçüm içermeyen küçük devreler için uygundur). İkinci blok, Aer’in StatevectorSimulator yolundan vektör okur; sürümünüze göre import veya sonuç API’si değişebileceğinden, çalıştırmadan önce kısa bir doğrulama yapmanız önerilir.
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
sv = Statevector.from_instruction(qc)
print("Boyut:", len(sv.data))
print(sv)
from qiskit import QuantumCircuit
from qiskit_aer import StatevectorSimulator
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
backend = StatevectorSimulator()
job = backend.run(qc)
state = job.result().get_statevector()
print(type(state), len(state))
İleri okuma ve özet
Statevector yolu, algoritmanın lineer cebirini göz önüne serer; histogram ve donanım dünyasına geçiş ise başka sözleşmeler ister. Bu sayfa, Aer ailesinin bu ucunu diğer konulardan ayırarak okumanıza yardım etti; kardeş başlıklar (shot mantığı, anlık görüntü, olasılık kaydı, GPU) eklendikçe buradan çapraz bağlanabilir.
- Statevector (kuantum bilgi) — Hilbert uzayı, taban ve quantum_info.Statevector cebirsel çerçeve; bu sayfa yürütme ve Aer sözleşmesine odaklanır.
- Aer simülatörü — genel arka uç ve yöntem seçimi.
- Kapılar ve ünite mantığı — vektörün üzerinde hangi kapıların nasıl çarpan olduğu.
- Klasik simülasyon maliyeti — üstel bellek eğrisinin teorik çerçevesi.