1. Ana sayfa
  2. Algoritmalar
  3. Varyasyonel optimizasyon ve QML
  4. QAOA · Qiskit
Varyasyonel optimizasyon · Qiskit

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.

  • Girdi: İsing / Max-Cut tarzı HC
  • Yapı: p tekrarlı UC(γ) · UM(β)
  • Dış döngü: klasik parametre optimizasyonu
  • Örnek: kenar listesi ve RZZ + Rx

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.

Neden “Hamiltonen”? Kuantum bilgisayarda doğal olarak ünite evrimler exp(−i t H) biçimindedir; kombinatorik bir skor fonksiyonu da genelde Pauli Z terimlerinin toplamı olarak yazılır (İsing modeli). QAOA’nın maliyet katmanı, seçilen HC için bu evrimin uygun kısa süreli (γ parametreli) bir parçasıdır; tam sürekli zaman yerine “kapı sayısı sabit, parametre sürekli” bir Ansatz kullanılı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.

Kısa köprü · diğer algoritma sayfalarıyla çakışma yok Burada İsing dili yalnızca bir kostüm: kombinatorik skoru Pauli terimlerine çeviriyoruz. Grover’da olduğu gibi alternatif bir skor fonksiyonu tanımlamıyoruz; Shor veya QFT’deki gibi periyot çıkarma da yok. Aynı matematiksel nesne (spin çarpımları), başka bağlamlarda istatistik fizik modelinde “gerçek enerji”, burada ise optimize edilecek pseudo-enerji olarak okunur.
  • 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.

Genelleme Max-Cut dışında traveling salesman relaxasyonları, kısıtlı ikili programlar veya daha karmaşık Pauli toplamları da HC olabilir; maliyet katmanı o zaman RZZ yerine başka iki-kübit kapıları veya ayrık parçalara ayrıştırma gerektirebilir. Bu sayfadaki kod, standart ZZ köprülerini temel alır.

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çı görürsünüz.

Tek katmanın özeti Her tekrarda önce tüm kenarlarda γ ile ölçeklenmiş RZZ bloğu, ardından her kübitte β ile ölçeklenmiş Rx bloğu gelir. Katman indeksi arttıkça (p), parametre sayısı 2p olur (kenar başına aynı γ varsayımıyla; katman başına farklı γ, β kullanılır).

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.

NISQ gerçekçiliği QAOA, bağlantı topolojisi, örnek sayısı, kompilasyon ve kalibrasyonla birlikte düşünülen bir boru hattıdır; p yalnızca bu hattaki kuantum çekirdeğin uzunluğunu seçer. Bu yüzden önce küçük graf ve ideal simülatörde iskeleti doğrulamak, sonra donanımda düşük derinlikten başlayarak ölçeklemek genelde daha az hayal kırıklığıdır.

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).

qaoa_maxcut_skeleton_qiskit.py Python
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)
qiskit Parametreli · Max-Cut / İsing ZZ · X-mixer UTF-8 · LF

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.

Bir sonraki katman İskelet doğruysa, sıradaki iş parametreleri bir maliyet fonksiyonuna bağlamak ve örneklemle veya durum vektörüyle beklenen enerjiyi tahmin etmektir; bunun için Qiskit’in çalıştırma API’leri ve transpile katmanı devreye girer — bu sayfa ise devrenin QAOA hikâyesine uygun kurulduğunu kanıtlamaya odaklanır.

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.

terminal

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

svg

Premium devre çizimi

QAOA · Qiskit n=2 · p=1 · kenar (0,1) H → maliyet → karıştırıcı q0 q1 H H süperpozisyon maliyet katmanı · U_C(γ) kenar (0,1) · RZZ(2γ) ZZ karıştırıcı X-mixer · U_M(β) Rx Rx parametreli Ansatz ⟨H_C⟩ için örneklem veya statevector; optimizer ile γ, β ölçüm kapısı yok · iskelet minimal Ansatz · ℓ = 0 · p = 1 · kesik çizgi: H hazırlığı sınırı p > 1: maliyet+kutu şeridi tekrarlanır (ghost layer etiketleri opsiyonel)

mor · H turuncu · RZZ yeşil · Rx kesik çizgi · hazırlık sınırı

Canlı devre paneli bu sayfada yok. Aşağıdaki terminal ve SVG (veya özet şema) tam referans görselidir; tarayıcıda simülatör veya örnek histogram çalışmaz. Canlı devre, moment turu ve örnek sayım şu an şu sayfalarda: Bell · Qiskit, GHZ · Qiskit, Bell · Cirq, QRNG · Qiskit, Süper yoğun kodlama, BB84, Teleportasyon, Bernstein–Vazirani ve Grover.
Ne öğreniyoruz? Terminal çıktısı Qiskit’in metin şemasıdır; SVG aynı minimal örneği blok olarak özetler. Grover · iki temsil ile düzen aynıdır — yalnızca oracle/diffüzör yerine QAOA’da maliyet ve karıştırıcı katmanları vardı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.

QAOA minimal Ansatz · n=2 · p=1 · kenar (0,1) H → UC(γ) · RZZ → UM(β) · Rx
QAOA · Qiskit n=2 · p=1 · kenar (0,1) H → maliyet → karıştırıcı q0 q1 H H süperpozisyon kenar (0,1) · RZZ(2γ) maliyet katmanı · U_C(γ) ZZ karıştırıcı X-mixer · U_M(β) Rx Rx parametreli Ansatz ⟨H_C⟩ için örneklem veya statevector; optimizer ile γ, β ölçüm kapısı yok · iskelet minimal Ansatz · ℓ = 0 · p = 1 · kesik çizgi: H hazırlığı sınırı p > 1: maliyet+kutu şeridi tekrarlanır (ghost layer etiketleri opsiyonel)

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

  1. 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.

  2. 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(γ)).

  3. Yeşil Rx kutuları standart X karıştırıcısına karşılık gelir; kodda qc.rx(2 * betas[layer], q), şemadaki etiketi ile aynı parametreyi taşır (UM(β)).

  4. 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.

Doğrulama

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.

Doğrulama

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.

İlgili okuma Faz tahmini ve Fourier yapıları için Kuantum Fourier dönüşümü sayfası doğrudan QAOA ile aynı problemde olmayabilir; ancak Pauli gözlemlenebilirlerinin spektrum bağlamında düşünmek bazen yardımcı olur. Grover tabanlı arama ile karıştırmayın — QAOA optimizasyon içindir, yapısal olarak farklıdı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.