Kuantum yaklaşık optimizasyon — maliyet ve karıştırıcı katmanları
QAOA (Quantum Approximate Optimization Algorithm), bir kombinatorik optimizasyon problemini önce Pauli terimleriyle yazılmış bir maliyet Hamiltoneni HC olarak kodlar; ardından bunun üssel evrimi ile tanımlanan “maliyet katmanını”, tipik olarak tüm kübitlerde X ile uyumlu bir karıştırıcı ünitesiyle dönüşümlü tekrarlar. Devre parametreleri (γ, β) klasik bir optimizasyonla seçilir; amaç, ölçümle örneklenen maliyet fonksiyonunun beklenen değerini (veya eşdeğer enerjiyi) iyileştirmektir. Tam çözüm garantisi vermez; NISQ döneminde graf kesme, zaman çizelgeleme gibi problemlerde sezgisel ve ölçeklenebilir bir varyasyonel şablondur.
Kuantum yaklaşık optimizasyon algoritması (QAOA) nedir?
QAOA, adından da anlaşılacağı gibi bir yaklaşık yöntemdir: kuantum devresi sabit bir şablonu takip eder, ama şablondaki sürekli parametreler klasik olarak ayarlanır. Böylece problem “tek seferde kapalı form çözülsün” yerine “örneklenen maliyetın beklenen değerini küçült” biçimine döner — bu da varyasyonel kuantum algoritmaları ailesinin tipik yüzeyidir.
Formal olarak, n kübitlik bir kayıt üzerinde önce basit bir başlangıç durumu hazırlanır (çoğu anlatımda tüm kübitlerde H ile eşit süperpozisyon). Sonra p pozitif tamsayı için, maliyet ünitesi UC(γ) ve karıştırıcı UM(β) sırayla p kez uygulanır. Devrenin sonunda ölçüm yapılır; klasik taraf, hangi ikili string’in hangi maliyeti temsil ettiğini bilir ve beklenen değeri tahmin etmek için birçok çalıştırmanın ortalamasını veya örnekleme tahminini kullanır.
QAOA’yı QPE veya Shor gibi “kanıtlanmış kuantum üstünlüğü” örnekleriyle karıştırmayın: başarı, problem geometrisine, p seçimine, gürültüye ve klasik optimizasyonun kalitesine bağlıdır. Bu sayfadaki hedef, doğru matematiksel çerçeveyi ve Qiskit’te tutarlı bir devre kurmayı öğretmektir.
Problemi kuantum maliyet Hamiltonenine çevirmek
Tipik başlangıç noktası, graf üzerinde tanımlı bir kombinatorik optimizasyon problemidir. Örneğin Max-Cut, düğümleri iki renge ayırarak iki ucu farklı renkte olan kenarların sayısını maksimize etmektir. Bu tür bir skor, önce klasik bir İsing tipi enerji fonksiyonuna yazılır; kuantum tarafta aynı yapı, özdeğerleri ±1 olan Pauli Z gözlemlenebilirlerinin toplamı olarak HC maliyet Hamiltoneninde yeniden üretilir. Böylece QAOA sayfası kendi içinde tutarlı kalır: İsing burada Grover, Shor veya QFT anlatılarındaki “oracle”dan bağımsız, doğrudan optimizasyon kodlaması için bir skalar enerji dilidir.
Klasik İsing enerji fonksiyonu. Her düğümde bir spin (veya iki durumlu kutuplaşma) düşünün: σi ∈ {+1, −1}. Çift etkileşimler ve isteğe bağlı dış alan ile yaygın yazılış Hİsing(σ) = ∑(i,j) Jij σi σj + ∑i hi σi biçimindedir; Jij kenar (veya çift) ağırlığını, hi tek düğüm sapmasını temsil eder. Kombinatorik problemi çözmek, uygun J, h ve işaret seçimiyle bu skoru minimize etmek veya — eşdeğer bir sabit kaydırmasıyla — maksimize etmek üzerine kurulur. Tam tanım probleme göre değişir; önemli olan, enerjinin çarpım terimleri σiσj ve tekil terimler σi cinsinden ifade edilebilmesidir.
Max-Cut’ün İsing diline taşınması. İki renk, iki spin değerine eşlenir: aynı taraftaki düğümler aynı işaretli σ alır. Bir kenar (i, j) kesildiğinde σi σj = −1, kesilmediğinde +1 olur. Kesilen kenar sayısı (ağırlıksız graf için) C(σ) = ∑(i,j) ∈ E (1 − σi σj) / 2 ile yazılır; burada toplanan ∑E 1 kenar sayısı olduğundan sabittir. Dolayısıyla C’yi büyütmek, uygun işaretle ∑E σiσj toplamını küçültmeye denktir — QAOA literatüründe maliyet Hamiltoneni sıklıkla bu ZZ yapısının Pauli karşılığı ve sabit terimlerle verilir; sabitler yalnızca enerji ölçeğini kaydırır, evrimin ZZ kısmına γ ölçeğinde yansır.
Kuantum maliyet Hamiltoneni. Hesaplama tabanında her kübit için Zi operatörünün özdeğerleri ±1 olduğundan, klasik σi ile kuantum Zi aynı ikili atamayı temsil eder. Bu yüzden HC, seçilen kodlamada ZiZj, gerekiyorsa Zi ve sabit terimlerin (çoğu kez I ile ifade edilen) toplamı olarak yazılır; ağırlıklı grafide her terim uygun katsayı ile çarpılır. QAOA’nın “hangi çözüm iyi?” sorusu böylece “hangi kuantum durumda ⟨HC⟩ istenen yönde?” sorusuna dönüşür — ölçüm ile örneklenen klasik string’ler üzerinden veya simülasyonda beklenen değerle değerlendirilir.
-
Graf ve kenar listesi
Qiskit devresinde genelde kenarları bir liste olarak tutarsınız; her kenar bir iki-kübit etkileşimi tetikler. Yönsüz grafide (i, j) ve (j, i)’yi iki kez yazmayın; QAOA ürününde her kenar bir kez yer almalıdır.
-
Pauli tabanı ve ölçüm
Hesaplama tabanında Z ölçümü, klasik bit string’i verir; beklenen maliyet tahmini için aynı parametrelerle çok örnek almak veya durum vektörü simülasyonunda beklenen değeri doğrudan hesaplamak gerekir. Donanımda örnek sayısı, gürültü ve derinlik birlikte sonucu belirler.
Maliyet ve karıştırıcı katmanları
Bir ZZ İsing terimi için doğal ünite evrim exp(−i γ ZiZj) şeklindedir. Qiskit’te QuantumCircuit.rzz(θ, i, j), yaygın tanımda exp(−i θ/2 · ZiZj) üretir; dolayısıyla saf ZZ evrimi için θ = 2γ seçilir. Maliyet katmanı, kenarlara göre bu kapıların uygun sırayla çarpımıdır (genelde kenar sırası fiziksel bağlantıya göre optimize edilir; matematiksel olarak çok terimli ZZ’lerde sıra genelde önemli değildir çünkü bu terimler aynı Pauli’ler üzerinde komüteler).
Karıştırıcı olarak standart seçim UM(β) = exp(−i β ∑k Xk) yani her kübitte bağımsız X rotasyonudur. Tek kübitte exp(−i β X), Qiskit’in Rx tanımıyla Rx(2β) olarak yazılır — bu yüzden kodda açı 2β görürsünüz.
Varyasyonel optimizasyon: beklenen maliyet
Parametre vektörü (γ1, …, γp, β1, …, βp) seçildiğinde devre bir kuantum durumu |ψ⟩ üretir. Bu bölüm başlığındaki maliyet sözcüğü günlük dildeki “para gideri” anlamına gelmez; matematiksel optimizasyondaki amaç fonksiyonu (objective) ile aynı şemsiyededir: küçültmek veya büyütmek istediğiniz skalar skor. Problem, 2 · Problemi Hamiltonene çevirmek bölümünde olduğu gibi bir maliyet Hamiltoneni HC ile kodlandığında, kuantum tarafta doğal ölçüt ⟨ψ| HC |ψ⟩ beklenen değeridir — yani Pauli terimlerinin durum üzerindeki ortalaması; İsing yazılımında bunu enerji beklentisi diye düşünmek yaygındır (birim “para” veya “TL” değildir). Ölçüm sonrası klasik ikili x için yazılan skor C(x) (örneğin kesime tekabül eden nicelik) aynı kodlamayla bu beklenen değerle uyumlu tutulur; klasik taraf çoğu zaman (γ, β)yi bu beklenen skoru iyileştirmek için günceller — gradyan tabanlı veya türevsiz optimizasyon kutuları burada devreye girer.
Kısa bir sözlük: literatürde hem “objective” hem HC için cost dilinin kullanılması Türkçede “maliyet” ile çakışabilir; bu sayfada bağlam her zaman optimizasyon skoru veya Hamiltonyen enerji beklentisidir. Ölçümle tahmin edilen C(x) ile doğrudan simülasyonlu ⟨HC⟩ aynı parametrelerde istatistiksel olarak yaklaşır; hangisinin tanımlandığı deney tasarımına kalır.
Pratikte parametreleri güncellemek için SPSA, COBYLA, L-BFGS veya makine öğrenmesi ekosisteminden benzer yöntemler kullanılabilir. Donanımda özellikle örnekleme yükü (shot sayısı: her turda kaç ölçüm toplanacağı) ve gürültü, gradyan tahminini zorlaştırır — buradaki “maliyet” yine finansal değil, ölçüm bütçesi anlamındadır. Derin modellerde “barren plateau” benzeri zorlanma raporları da göz önünde bulundurulmalıdır (literatürde QAOA için ortam ve problem bağlıdır).
| Bileşen | Rol |
|---|---|
| Kuantum çekirdek | |ψ(γ, β)⟩ durumunu üretir; ölçüm istatistiği veya simülasyonla beklenen skor tahmini. |
| Klasik optimizasyon | (γ, β) güncellenir; optimize edilen skor (beklenen ⟨HC⟩ veya örneklenmiş C(x)) tipik olarak birçok çalıştırmanın ortalamasını gerektirir. |
| Problem haritası | Cezası yüksek kenarlar için transpile sırasında uzun iki-kübit yolları veya hata azaltma teknikleri gerekebilir. |
p derinliği ve ne beklemeli?
p, maliyet ve karıştırıcı çiftinin kaç kez üst üste konacağını söyler; her artış, parametre sayısına iki yeni boyut (γℓ, βℓ) ekler. Böylece devre “daha ifade gücü yüksek” bir aileye geçer — tıpkı aynı melodiye ek ölçüler koymak gibi: çalınabilecek yörüngeler çoğalır, ama doğru yorumu bulmak da zorlaşabilir. Teoride bazı düzenlemelerde çok büyük p limiti ideal davranışa yaklaşmayı anlatır; deneyde ise kapı sayısı, derlenmiş devre derinliği ve ölçüm gürültüsü aynı anda büyüdüğünden p seçimi mühendislik dengesidir, tek bir evrensel rakam değildir.
İfade gücü arttıkça klasik optimizasyon tarafında manzara genelde daha engebeli hale gelir: çok parametre, gradyan veya sezgisel arayıcının takılıp kalmasına yer verir. Bu yüzden “her zaman daha yüksek p” doğru bir slogan değildir; grafın boyutu ve bağlantısı sabitken, bir adım daha derine inmek bazen belirgin kazanç vermez, yalnızca çalışma süresini ve donanımda birikmiş hatayı artırır. Pratik kural: önce küçük p ile taban çizgisi alın, sonra artışların maliyet–faydasını ölçün.
p → ∞ hakkındaki teorik sonuçlar, okuyucuya şunu hatırlatır: QAOA tek bir sabit derinlikte “kapalı kutu sihir” değildir; bazı yazılışlarda uzun p limiti, belirli bir kuantum–klasik karşılaştırma çerçevesinde anlamlıdır. Bunlar yol gösterir; fakat laboratuvar veya bulutta karşılaştığınız graf, gürültü modeli ve örnek bütçesi o çizginin dışında kalabilir. Özetle: limit teorisi = mevcut cihazınızın bugün garanti verdiği anlamına gelmez.
-
Başlangıç
p = 1 veya 2 ile taban çizgisi ve öğrenme eğrisi görünür; çoğu eğitim notunda küçük graf ve simülatörle buradan başlanır.
-
Artırırken
Beklenen enerji veya kesim skoru birkaç adım üst üste anlamlı iyileşmiyorsa, derinliği değil örnek sayısını, parametre başlatmayı veya transpile stratejisini gözden geçirmek çoğu zaman daha verimlidir.
-
Donanımda
Aynı p artışı, simülatörde ufak bir süre farkı iken gerçek ölçümde gürültü birikimini büyütebilir; “derin” devre kısa ömürlü kuantum kanalında daha zayıf olabilir.
Qiskit kod örneği
Aşağıdaki örnek, parametreli bir QAOA iskeleti kurar: başlangıçta tüm kübitlerde Hadamard ile süperpozisyon, ardından p katman boyunca kenar başına RZZ ve kübit başına Rx. Kenar listesi ve kübit sayısı dışarıdan verilir; iç içe döngüde katman indisi ile kübit indisi karıştırılmaz (yaygın yazım hatası budur).
from qiskit import QuantumCircuit
from qiskit.circuit import ParameterVector
def build_qaoa_circuit(n_qubits: int, graph_edges: list[tuple[int, int]], p_steps: int) -> QuantumCircuit:
"""İsing ZZ maliyeti + standart X karıştırıcı için QAOA iskeleti.
graph_edges: her kenar (i, j) bir kez; yönsüz graf varsayılır.
RZZ açısı 2*gamma_ek: exp(-i gamma Z_i Z_j) == RZZ(2*gamma, i, j) (Qiskit rzz tanımı).
"""
qc = QuantumCircuit(n_qubits)
# 1. Başlangıç: eşit süperpozisyon
qc.h(range(n_qubits))
gammas = ParameterVector('γ', p_steps)
betas = ParameterVector('β', p_steps)
# 2. p katmanlı döngü — katman indisi ile kübit indisini karıştırmayın
for layer in range(p_steps):
# Maliyet katmanı: her kenar için ZZ evrimi
for edge in graph_edges:
u, v = edge
qc.rzz(2 * gammas[layer], u, v)
# Karıştırıcı: global X-mixer -> her kübitte Rx(2 beta)
for q in range(n_qubits):
qc.rx(2 * betas[layer], q)
return qc
# Örnek: 4 düğümlü bir döngü C4
n = 4
edges = [(0, 1), (1, 2), (2, 3), (3, 0)]
p = 2
ansatz = build_qaoa_circuit(n, edges, p)
print(ansatz)
Kod Analizi
İskeletin rolü
Bu bölüm, editördeki kodun akış sırasını sabitlemek için: önce kübit sayısı ile graf düğümlerinin nasıl eşlendiğini, sonra başlangıç süperpozisyonunun ve γ–β katmanlarının QAOA hikâyesindeki yerini okursunuz. Maliyet ünitesinin fiziksel anlamı için 3 · Maliyet ve karıştırıcı katmanları, İsing — Max-Cut kodlaması için 2 · Problemi Hamiltonene çevirmek bölümüne dönebilirsiniz; kod, iki temsil ve geniş şema sırasıyla 6 · Qiskit kod örneği, 8 · Aynı devre (iki temsil) ve 9 · Devre ve doğrulama bölümlerinde birlikte düşünülmüştür.
QuantumCircuit(n_qubits) · graf ile hizalama
Örnekte n_qubits (ve alttaki n = 4), grafın her düğümüne bir kübit düşecek şekilde seçilir; kenar listesindeki her (u, v) çifti gerçekten bu kayıttaki iki hatta bağlanmalıdır. Çok büyük problemlerde “tek kübit = düğüm” yerine sıkıştırılmış kodlamalar kullanılabilir; bu iskelet ise bağlantı topolojisini doğrudan okunaklı tutar — kenar sayısı arttıkça yalnızca maliyet döngüsündeki RZZ sayısı büyür, kübit sayısı grafın düğüm sayısıyla sabit kalır.
qc.h(range(n_qubits))
Tüm kübitlerde Hadamard, klasik atamaların 2n olası ikili string’ine eşit genlikle süperpozisyon kurar; QAOA böylece çözüm uzayında başlangıçta tarafsız bir dağılımla başlar. Grover’da olduğu gibi tek bir işaretli hedefi genlikten seçmek yoktur; amaç, maliyet ve karıştırıcı katmanlarıyla bu geniş dağılımı zamanla daha düşük ⟨HC⟩ bölgelerine taşıyacak parametre yörüngeleri bulmaktır — yani keşif Grover’inki kadar “tek hedefli” değildir, varyasyonel optimizasyonla şekillenir.
ParameterVector('γ', p_steps) ve ParameterVector('β', p_steps)
Her katman için ayrı γℓ ve βℓ üretilir; toplam 2p sürekli parametre vardır. Sembolik parametreler, devreyi sabit açılar yerine bağlanabilir yer tutucularla kurmanızı sağlar: sonra klasik optimizasyon kutusu bu parametrelere sayısal değer atar veya gradyan tahminiyle günceller. İsimler (γ, β) yalnızca okunabilirlik içindir; önemli olan indekslerin katmanlarla doğru eşleşmesidir.
for layer in range(p_steps)
Dış döngü QAOA’nın p derinliğidir: her turda önce maliyet (UC), sonra karıştırıcı (UM) gelir. Aynı graf için p arttıkça Ansatz daha zenginleşir; devre uzunluğu ve gürültü de birlikte artabileceğinden bu sayfa düşük p ile başlamayı önerir (5 · p derinliği ve ne beklemeli?).
qc.rzz(2 * gammas[layer], u, v)
Kenar başına İsing ZZ etkileşiminin kısa süreli evrimi: Qiskit rzz(θ) tanımı exp(−i θ/2 · ZuZv) olduğundan, saf exp(−i γ ZuZv) için θ = 2γ seçilir. Aynı İsing terimleri birbirleriyle komüt ettiği için kenar sırası çoğu kurulumda sonucu değiştirmez; donanımda ise bağlantı haritasına göre transpile sırası etkili olur. Ağırlıklı kenarlarda açıyı kenar ağırlığı ile ölçeklemek gerekir.
qc.rx(2 * betas[layer], q)
Standart X karıştırıcısı exp(−i β ∑k Xk) şeklinde ürün olarak yazılır; tek kübitte exp(−i β X), Qiskit Rx tanımında Rx(2β) ile örtüşür. Mixer, maliyet katmanının bıraktığı durumu “karıştırarak” komşu klasik atamalara geçiş için olasılık genişletir — farklı bir mixer (ör. kısıtlı geçişler) seçilirse bu blok tamamen değişir.
for q in range(n_qubits) · indeks çakışması tuzakları
Karıştırıcı içinde üst döngüde for i in range(n_qubits) kullanmak, Python’da üstteki for i in range(p_steps) ile aynı ada çarpışırsa katman indeksini sessizce ezer ve parametreleri yanlış kapıya bağlar. Burada layer ve q ayrımı tam olarak bu üretim hatasına karşıdır.
Örnek: C₄, p = 2 ve print(ansatz)
Dört düğümlü döngü kenarları ve p = 2, mantığı küçük grafda takip etmek içindir; çıktıda parametreler sembolik kalır ve devrenin maliyet → karıştırıcı tekrarının metin şemada nasıl göründüğünü doğrulamanızı sağlar. Bu adımın kendisi henüz klasik optimizasyon veya örneklem içermez — tam deney için beklenen ⟨HC⟩ döngüsünü (Estimator / simülatör) ayrıca kurmanız gerekir.
Aynı devre (iki temsil)
Editördeki örnek C₄ döngüsü ve p = 2 ile tam graf akışını gösterir; şema okunabilirliği için burada minimal oyuncak kullanıyoruz: n = 2 kübit, tek kenar (0, 1), p = 1 katman — yani tek bir maliyet–karıştırıcı turu. Böylece terminal satırları taşmadan H → RZZ → Rx sırası Grover sayfasındaki gibi yan yana okunur; tam kodunuzu çalıştırdığınızda kenar ve katman sayısı doğal olarak uzar.
print(qc) çıktısı · n=2 · p=1 · kenar (0,1)
┌───┐ ┌────────────┐
q_0: ┤ H ├─■───────────┤ Rx(2*β[0]) ├
├───┤ │ZZ(2*γ[0]) ├────────────┤
q_1: ┤ H ├─■───────────┤ Rx(2*β[0]) ├
└───┘ └────────────┘
H · süperpozisyon maliyet · RZZ karıştırıcı · Rx
Premium devre çizimi
mor · H turuncu · RZZ yeşil · Rx kesik çizgi · hazırlık sınırı
Devre ve doğrulama
Şema iki kübitlik minimal QAOA Ansatz’ını gösterir: başta tüm hatlarda Hadamard ile süperpozisyon; ortada kenar (0, 1) için İsing maliyeti olarak RZZ(2γ); sonda standart X karıştırıcı olarak her kübitte Rx(2β). Ölçüm kapısı yoktur — bu iskelet ⟨HC⟩ için parametreleri bağlamadan önce doğrulanır. Terminal satır satır versiyon için 8 · Aynı devre (iki temsil) bölümüne bakın; yerleşim düzeni QFT · Devre ve doğrulama ile aynı çerçevedir.
Aşağıdaki dört adım bu sayfadaki QAOA Ansatz’ına özeldir: üst kısımdaki Qiskit kodunda qc.h, qc.rzz(2 * gammas[layer], …) ve qc.rx(2 * betas[layer], …) ile kurulan maliyet (UC(γ)) ve karıştırıcı (UM(β)) sırasının şemada nasıl renklendirildiğini okursunuz — başka bir algoritmanın (ör. QFT) şema dilinden kopyalanmış sablon metni değildir.
Şemayı adım adım oku
-
Soldaki mor kutularda her kübitte H: kodda qc.h(range(n_qubits)) ile aynı iş — klasik atamalara eşit ağırlıklı süperpozisyon; QAOA’nın başlangıç durumu. İki temsildeki terminal satırında da önce ┤ H ├ görülür.
-
Ortadaki turuncu iki kontrol ve ZZ etiketi, seçilen kenar üzerindeki maliyet katmanıdır: kodda her kenar için qc.rzz(2 * gammas[layer], u, v); Qiskit rzz(θ) tanımıyla exp(−i γ ZuZv) için θ = 2γ kullanılır. Bu minimal çizimde n = 2, tek kenar (0, 1) ve p = 1 olduğundan tek bir RZZ bloğu görünür (UC(γ)).
-
Yeşil Rx kutuları standart X karıştırıcısına karşılık gelir; kodda qc.rx(2 * betas[layer], q), şemadaki 2β etiketi ile aynı parametreyi taşır (UM(β)).
-
Sağ uçtaki gri bilgi kutusu kapı eklenmediğini hatırlatır: çizim yalnızca parametreli Ansatz iskeletini doğrular; γ, β klasik optimizer ile seçilir, ⟨HC⟩ için Estimator veya durum vektörü ayrıca bağlanır. p > 1 olduğunda kod iç döngüsündeki sırayla aynı maliyet–karıştırıcı bloğu yatayda tekrarlanır.
Hedef: soldan sağa H → RZZ(2γ) → Rx(2β) akışının QAOA olarak okunması; turuncunun kenar maliyeti (UC), yeşilin karıştırıcı (UM) olduğunun netleşmesi.
- kapılar: H + RZZ + Rx
- örnek şema: n=2 · p=1 · kenar (0,1)
- not: ölçüm yok · iskelet
Geniş yerleşim ve üst bölümdeki iki temsil
Yukarıdaki dört adım hem 8 · Aynı devre (iki temsil) içindeki kompakt SVG hem de buradaki geniş şema için geçerlidir; üst şeritteki H → maliyet → karıştırıcı özeti ve renkli çerçeveler yalnızca okumayı kolaylaştırır — yeni kapı eklemez. Sağdaki gri kutudaki “örneklem / statevector” notu, tam eğitim döngüsünde ⟨HC⟩’nin nasıl hesaplanacağını hatırlatır.
Hedef: geniş diyagramın kompakt şema ile aynı kapı sırasını göstermesi; üst başlıkların ve sağ bilgi kutusunun annotasyon olduğunun (şema ek kapısı olmadığının) anlaşılması.
- yerleşim: süperpozisyon · maliyet · karıştırıcı
- etiket: UC(γ) · UM(β)
- not: kutu ≠ kapı
Pratik notlar ve sonraki adımlar
Bu sayfa yalnızca Ansatz’ın doğru kurulması ve fiziksel olarak tutarlı Pauli evrimlerinin seçilmesi üzerine odaklanır. Tam bir Max-Cut deneyinde bir sonraki adımlar tipik olarak: parametreleri bağlayıcı bir maliyet fonksiyonu tanımlamak, simülatör veya donanımda örnekleme ve klasik optimizasyon döngüsünü çalıştırmak ve sonuçları klasik sezgilerle (ör. Goemans–Williamson) karşılaştırmaktır.
Qiskit ekosisteminde üretim kodları sıklıkla SparsePauliOp, özel transpiler düzenleri ve hata azaltma ile devreyi donanıma göre şekillendirir; eğitim amaçlı iskelet ile gerçek backend deneyi arasındaki farkı özellikle örnek sayısı ve gürültü modellerinde göreceksiniz.