23  Quiz 2 Gözden Geçirme

Çizge bloğu toplu tekrarı — modelleme ve indirgeme, çizge algoritma haritası, SSSP hiyerarşisi, Johnson, graf değiştirme stratejileri ve dört gerçek sınav problemi

NotOturum bilgisi

Bu normal bir ders değil — Quiz 2 öncesi toplu tekrar oturumudur (çizge bloğu). Kursun ağırlıklı/ağırlıksız çizge derslerini tek çatı altında toparlar ve sınavda nasıl düşünüleceğini öğretir.

23.1 Bu Quiz Review Ne Hakkında?

Bu, Jason Ku ile Quiz 2 öncesi toplu tekrar oturumudur. Kursun çizge bloğunu (Ders 13-21: iki ağırlıksız + dört ağırlıklı çizge dersi, PS5 + PS6) tek çatı altında toparlar ve sınavda nasıl düşünüleceğini öğretir. Quiz 1 materyali “fair game”dir ama vurgu çizge algoritmalarındadır. İçerik üç eksende ilerler: (1) çizge algoritma haritası, (2) modelleme + graf-değiştirme stratejileri, (3) dört gerçek sınav problemi çözümü.

“there’s really a small number of graph algorithms but they can solve a lot of different problems.” — Ku, 1:27

Ku’nun ana mesajı: çizge ünitesi “indirgeme” ünitesidir — az sayıda güçlü kara kutu (BFS, DFS, Dijkstra, Bellman-Ford, Johnson) var; iş, problemi doğru bir çizgeye modelleyip o kara kutulardan birine indirgemektir.

“defining a graph is an important aspect of that problem solving.” — Ku, 9:50

flowchart TD
    A["Ders 22: Quiz 2 Review"] --> B["Modelleme ve indirgeme<br/>çizgeye çevir · kara kutuya indirge"]
    A --> C["Çizge algoritma haritası"]
    C --> C1["erişilebilirlik · full BFS/DFS<br/>DAG araçları · Bellman-Ford"]
    A --> D["SSSP hiyerarşisi"]
    D --> D1["BFS → DAG → Dijkstra<br/>→ Bellman-Ford"]
    A --> E["APSP ve Johnson"]
    E --> E1["potansiyel ile yeniden ağırlıklandır<br/>→ V kez Dijkstra"]
    A --> F["Graf değiştirme"]
    F --> F1["düğüm çoğaltma · süpernode<br/>ön işleme (filtreleme)"]

    classDef root fill:#fef3c7,stroke:#b45309,stroke-width:3px,color:#1f2937
    classDef branch fill:#f3f4f6,stroke:#374151,stroke-width:2px,color:#1f2937
    classDef leaf fill:#ffffff,stroke:#9ca3af,stroke-width:1px,color:#1f2937
    class A root
    class B,C,D,E,F branch
    class C1,D1,E1,F1 leaf
Şekil 23.1: Ders 22’nin (Quiz 2 Review) kavram haritası: kök = Quiz 2 Review. Beş dal — (1) modelleme ve indirgeme: sözel problemi bir çizgeye çevir (düğüm/kenar/ağırlık/yön tanımla), sonra bilinen kara kutuya indirge, algoritmayı asla modifiye etme. (2) çizge algoritma haritası: erişilebilirlik, full BFS ve DFS ile bağlı bileşen, DAG araçları (topolojik sıra ve çevrim), Bellman-Ford ile negatif çevrim. (3) SSSP hiyerarşisi: BFS sonra DAG relaxation sonra Dijkstra sonra Bellman-Ford — artan genellik. (4) APSP ve Johnson: potansiyel ile yeniden ağırlıklandır, sonra her düğümden Dijkstra. (5) graf değiştirme stratejileri: düğüm çoğaltma ile durum izleme, süpernode ile çok kaynak ya da çok hedef, ön işleme ile filtreleme. Sonuç: Quiz 2 = icat değil modelleme sınavı.
İpucuBuilder Notu — Bu = Çizge Midterm

Quiz 2, kursun çizge bloğu sınavıdır: erişilebilirlik, bileşenler, topolojik sıralama, SSSP (dört algoritma), APSP/Johnson. Veri yapıları ve sıralama Quiz 1’de kaldı; dinamik programlama Quiz 3’e kalır.

  • Bu = ikinci sınav. OMSCS CS 6515 (Graduate Algorithms) ekseninde Quiz 2, çizge algoritmaları + indirgeme refleksidir — lisansüstü dersin giriş varsayımı.
  • Modelleme = gerçek dünya refleksi. “Sözel problemi bir çizgeye çevir” becerisi, lisans sonrası en sık kullanılan algoritmik beceridir.
  • İleriye → graduate algorithms: “algoritmayı modifiye etme, kara kutuya indirge” disiplini, lisansüstü derste ve gerçek sistemde temeldir.

Tek cümle: Quiz 2, “yeni çizge algoritması yaz” demez; “problemi doğru bir çizgeye modelle, ne sakladığını ve aradığını net söyle, BFS/Dijkstra/Bellman-Ford/Johnson kara kutusuna indirge, sonra süreyi grafın boyutundan analiz et” der.

23.2 1. Quiz 2 Neyi Ölçer — Modelleme ve İndirgeme

Sınav, çizge algoritması icat etmeni beklemez (onların doğruluğunu derslerde sayfalarca kanıtladık). İki refleks öne çıkar:

  • Modelleme: sözel problemde çizge verilmemiş olabilir — onu sen tanımlarsın (düğüm? kenar? ağırlık? yönlü mü?). Önce temiz bir soyut problem ifade et: “bu soyut problemi çözebilseydim, sözel problemi kolayca çözerdim.”

“see if you can state cleanly an abstract problem.” — Ku, 10:54

  • İndirgeme, modifiye etme değil: verilen algoritmaları değiştirmeye çalışma; onları kara kutu olarak kullan. Karmaşıklık, grafı “bariz-olmayan” yapmaktan gelir (girdi grafı \(\ne\) çözümde kullanacağın graf).

“the way in which we introduce complexity into problems is to make the graph non-obvious.” — Ku, 13:19

23.3 2. Çizge Algoritmaları Haritası

Az algoritma, çok problem. Ana kara kutular:

  • Erişilebilirlik (tek kaynak): s’den nereye ulaşılır; bir bağlı bileşen, \(\le \lvert E \rvert\) düğüm.
  • Full BFS/DFS: tüm grafı gez, bağlı bileşenleri say — \(O(V + E)\).
  • DAG araçları: full DFS ters bitiş sırası \(\to\) topolojik sıralama; geri kenar \(\to\) çevrim tespiti.
  • Bellman-Ford: negatif ağırlıklı çevrim tespit/bul.

“there’s really a small number of graph algorithms but they can solve a lot of different problems.” — Ku, 1:27

23.4 3. SSSP Hiyerarşisi: BFS → DAG → Dijkstra → Bellman-Ford

Tek-kaynak en kısa yol için, artan genellik (azalan kısıt) sırasıyla:

  • BFS — ağırlıksız; \(O(V + E)\).
  • DAG relaxation — çevrimsiz, herhangi ağırlık; \(O(V + E)\).
  • Dijkstra — ağırlık \(\ge 0\); \(O(V \log V + E)\).
  • Bellman-Fordherhangi (negatif çevrim dahil); \(O(V \cdot E)\).

“in general you want to choose an algorithm that’s higher on this list but sometimes the algorithms higher on this list don’t apply.” — Ku, 5:41

Kritik sınav tuzağı: listede yukarıdakini seç ama yalnız uygulanabilirse. Bir DAG değilken DAG relaxation kullanırsan yanlış olur (sıfır puan). Sıkışınca, doğru-ama-yavaş Bellman-Ford yaz — yanlış-ama-hızlıdan iyidir.

“you’ll get more points because it is a correct algorithm than if you apply a faster algorithm that doesn’t apply.” — Ku, 6:13

İpucuBuilder Notu — Modelleme = Gerçek-Dünya Refleksi

“Sözel problemi bir çizgeye çevir” becerisi sınıf dışında her yerde: bağımlılık çözümü (paket yöneticisi = topolojik sıra), navigasyon (en kısa yol = Dijkstra), sosyal/öneri grafları (BFS ile erişilebilirlik). Quiz 2’nin sana öğrettiği refleks tam olarak budur: önce düğüm/kenar/ağırlık tanımla, sonra hangi kara kutunun uygulandığını söyle. “En kısıtlı uygulanabilir algoritmayı seç” disiplini, pratikte performans bilincidir.

23.5 4. APSP ve Johnson

Tüm-çiftler en kısa yol: en basiti her düğümden SSSP (\(V \times\) Bellman-Ford veya \(V \times\) Dijkstra). Johnson, negatif ağırlıklı çizgede \(V \times\) Bellman-Ford’un yavaşlığından kurtarır: süpernode’dan Bellman-Ford ile potansiyel \(h = \delta(s, v)\) bul, kenarları \(w' = w + h(u) - h(v)\) ile negatif-olmayana çevir (üçgen eşitsizliği garanti eder, en kısa yollar korunur), \(V \times\) Dijkstra çalıştır \(\to O(V^2 \log V + V \cdot E)\).

23.6 5. Graf Değiştirme Stratejileri

Girdi grafı, çözümde kullanacağın graf olmayabilir. Üç klasik dönüşüm:

  • Düğüm çoğaltma (state): gezerken bir “durum” izlemek gerekiyorsa, düğümleri çoğalt — her olası durum için ayrı düğüm (örneğin kalan kapasite, kaç adımda bir mola).

“you can expand the number of vertices in your graph to keep track of what state I’m in.” — Ku, 13:47

  • Süpernode / yardımcı düğüm: birçok kaynaktan/hedefe aynı anda aramak için, hepsine kenarlı bir yardımcı düğüm ekle, tek SSSP çalıştır.

“adding an auxiliary node… run a single source shortest path algorithm from that super node.” — Ku, 14:30

  • Ön işleme (preprocessing): bazı kenarları yasakla, yön ver veya grafı filtrele (yasak düğümleri at, çevrimi kır, gereksiz kısmı buda).
İpucuBuilder Notu — Süpernode ve Düğüm Çoğaltma Sistem Örnekleri

İki dönüşüm gerçek sistemlerde sürekli görünür:

  • Süpernode = çok-kaynak/çok-hedef indirgemesi. Bir veri merkezinde “en yakın herhangi bir CDN düğümü” sorusu, tüm CDN düğümlerine sıfır-ağırlıklı bağlı tek yardımcı kaynaktan tek SSSP’ye iner. Bu derste Problem 3 (donut filtreleme) tam olarak bu kalıbı kullanır.
  • Düğüm çoğaltma = durum-augmentasyonu. Zaman-genişletilmiş çizge (her düğüm × zaman dilimi), mod/kapasite katmanları (her düğüm × kalan yakıt). PS6’da “kaç boş küre taşıyorum” durumu bu şekilde katmanlandı; bu derste Problem 4 (≥V kenarlı yol) katmanlı çizge ile çözülür.

23.7 6. Sınav Taktiği ve Puan Kaybı

  • Önce grafı tanımla. Sözel problemde graf yoksa, “düğüm = …, kenar = …, ağırlık = …” diye açıkça kur. (En sık puan kaybı: graf tanımlamamak.)
  • Grafı tam belirt: kaç düğüm/kenar, çevrimsiz mi, ağırlıklar ne. Graderın işini kolaylaştır.
  • Çözdüğün problemi söyle: “bu grafta en kısa yol / bağlı bileşen / topolojik sıra arıyorum.” Yanlış algoritma seçsen bile, doğru problemi belirtmek puan getirir.
  • Doğruluk cümlesi: “yeni graftaki X, orijinal problemdeki Y’ye karşılık gelir.”
  • Süreyi analiz et: grafın boyutu (\(V\), \(E\)) + algoritmanın o boyuttaki süresi. (Unutmak büyük kayıp.)

“almost any question in this class can… get 80 to 90 percent of the points by writing maybe three lines.” — Ku, 1:03:03

23.8 Bu Quiz Review’in Özeti

  1. Quiz 2 = çizge bloğu (Ders 13-21); az algoritma, çok problem; ana iş modelleme + indirgeme.
  2. Algoritma haritası: erişilebilirlik, full BFS/DFS (bileşen), DAG (topolojik/çevrim), Bellman-Ford (negatif çevrim).
  3. SSSP hiyerarşisi: BFS \(\to\) DAG relaxation \(\to\) Dijkstra \(\to\) Bellman-Ford; yukarıyı seç ama uygulanabilirse.
  4. APSP/Johnson: potansiyel ile yeniden ağırlıklandır \(\to V \times\) Dijkstra \(\to O(V^2 \log V + V \cdot E)\).
  5. Graf değiştirme: düğüm çoğaltma (state), süpernode (çok kaynak/hedef), ön işleme (filtrele/yönlendir).
  6. Taktik: grafı tanımla + tam belirt + çözdüğün problemi söyle + doğruluk cümlesi + süre analizi.
ÖnemliTek Bir Cümle

Quiz 2, icat değil modelleme sınavıdır: problemi doğru bir çizgeye çevir, ne sakladığını ve aradığını açıkça yaz, BFS/Dijkstra/Bellman-Ford/Johnson kara kutusuna indirge — algoritmayı asla modifiye etme — ve süreyi grafın boyutundan analiz et.

23.9 Quiz-tarzı Problemler

Aşağıda dört quiz-tarzı problem var; her birinin çözümünü açmadan önce kendin dene. Her problem aynı reçeteyi izler: grafı tanımla → kara kutuya indirge → süreyi analiz et. Tüm sayılar QR2 motoruyla doğrulanmıştır.

Şekil 23.2 Problem 1’in modelini gösterir: beyaz pikseller düğüm, 4-komşu beyaz çiftler kenar; blob sayısı = bağlı bileşen sayısı.

Şekil 23.2: Blob sayma = bağlı bileşen (QR2 Problem 1, Ku 31:10): n×m beyaz/siyah piksel grid → çizge; düğüm = beyaz piksel (r,c), kenar = 4-komşu beyaz çift. Doğruluk cümlesi: görüntüdeki blob sayısı = bu çizgedeki bağlı bileşen sayısı. SOL panel: 5×7 grid, 11 beyaz piksel dört bileşene göre renkli (amber + üç slate tonu); siyah pikseller açık gri. SAĞ panel: çizge modeli — bileşen başına kesikli hale + numara rozeti; toplam 4 bileşen = 4 blob. Motordan: V = 11 beyaz piksel, nm = 35, bileşenler {(0,0),(0,1),(1,0)}, {(0,4),(1,4),(1,5),(2,4)}, {(3,1),(4,0),(4,1)}, {(4,6)}. E = O(nm) (her piksel en çok 4 komşu) → full BFS/DFS O(nm); girdi nm piksel olduğundan DOĞRUSAL.

Çözüm.

“Blob” tanımı transitiftir (a–b, b–c bitişikse a, c aynı blob) \(\to\) bu bir bağlı bileşen problemidir. Çizge kur: düğüm = her beyaz piksel (x,y koordinatıyla kimliklendir); kenar = bitişik (kenar paylaşan) iki beyaz piksel. \(V \le n \cdot m\), \(E \le 4 \cdot n \cdot m\) (her piksel \(\le 4\) komşu).

Doğruluk cümlesi: görüntüdeki blob sayısı = bu çizgedeki bağlı bileşen sayısıdır.

“the number of blobs in the image corresponds to the number of connected components in this graph.” — Ku, 31:10

Full BFS/DFS ile bağlı bileşenleri say. (Girdi karesel görünse de — \(n \cdot m\) piksel — girdi boyutu \(n \cdot m\) olduğundan bu doğrusaldır.)

Karmaşıklık. \(V = O(n \cdot m)\), \(E = O(n \cdot m)\) \(\to\) full BFS/DFS \(O(n \cdot m)\).

Şekil 23.3 Problem 2’nin imza fikrini gösterir: \(E = V\) olduğunda çizge ağaç + bir kenardır (tam bir çevrim); s′’nin iki çevrim kenarını teker teker silerek iki aday yol elde edilir.

Şekil 23.3: Ağaç + bir kenar (QR2 Problem 2, İMZA figür, Ku 37:21): bağlı yönsüz çizge, pozitif ağırlık, E = V → ağaç (V−1 kenar) + bir fazladan kenar = TAM BİR çevrim. Çevrim b-c-d-e (motordan); s kuyruğu s-a-b, t kuyruğu d-t. s′ = b (s’in çevrime bağlandığı düğüm). İmza fikir: s′’nin iki çevrim kenarını (b-c ve b-e) teker teker sil → her silme çevrimi kırar → ağaç → tek basit yol; iki adayın min’i. KAZANAN kısa yay s-a-b-c-d-t = 2+1+4+1+3 = 11 (amber); kaybeden uzun yay s-a-b-e-d-t = 2+1+7+2+3 = 15 (kesikli slate). Dijkstra çapraz tanık = 11 (sağ alt). Sabit sayıda O(V) tarama → O(V).

Çözüm.

\(E = V\) gözlemi kilit: bir ağaç \(V - 1\) kenarlıdır, demek ki bu çizge ağaç + bir fazladan kenar = tam olarak bir çevrim içerir.

“this graph is a tree plus an extra edge.” — Ku, 37:21

Pozitif ağırlık \(\to\) en kısa yollar basit. Çevrim yoksa (ağaçta) iki düğüm arasında tek basit yol vardır \(\to\) ağırlıksız erişilebilirlik (BFS/DFS) ağacı o yolu verir. Çevrim varsa s→t için iki olası basit yol (çevrimin iki yarısı). Algoritma: BFS/DFS ile bir yayılma ağacı kur; ağaçta olmayan kenar \((u, v)\) çevrimi belirler; s’ten u ve v’ye yolların son ortak düğümü s′ (çevrimde s’e en yakın). s′’nin çevrim kenarlarını teker teker kaldırıp her seferinde s→t erişilebilirliğini çalıştır, en kısasını seç. Sabit sayıda (\(\le\) derece) BFS/DFS.

Karmaşıklık. Sabit sayıda \(O(V)\) erişilebilirlik araması + ön-ek bulma \(O(V)\) \(\to\) \(O(V)\).

Problem 3’ün figürü yoktur — süpernode kalıbı, PS6’daki sensör problemi görselinde zaten ayrıntılı görselleştirildi (donut shop = sensör, aynı süpernode + tek Dijkstra şeması). Aşağıda doğrudan çözüme geçiyoruz.

Çözüm.

Çizge: düğüm = konum (n tane), kenar = yol (ağırlık = pozitif sürüş mesafesi); derece \(\le 5\) \(\to E = O(n)\). Bir donut’a \(\le k\) mesafedeki her düğüm yasaktır. d donut’tan teker teker Dijkstra \(O(d \cdot n \log n)\) — d sınırsız, yavaş. Süpernode ile paralelleştir.

“filter forbidden vertices by using supernode plus one run of Dijkstra.” — Ku, 1:01:30

  1. Süpernode x \(\to\) tüm donut shop’lara 0-ağırlıklı kenar; x’ten tek Dijkstra \(\to\) her düğümün en yakın donut mesafesi (\(O(n \log n)\)). (2) Mesafesi \(\le k\) olan düğümleri çıkar (filtrele). (3) Kalan grafta p→h Dijkstra \(\to\) istenen en kısa yol. (Genelleme: her donut farklı yarıçap \(\to\) giriş kenar ağırlığını maks_yarıçap − yarıçap yap.)

Bu, PS6’daki sensör problemiyle aynı kara kutudur — orada “her an sensörlerden \(\ge k\) uzakta kal”, burada “donut’lardan \(> k\) uzakta kal”. Motorda da nearest_sensor_dist aynen yeniden kullanılır: bu derste deterministik örnek (donut q, b’ye 2 uzakta; \(k = 3\) ile b yasak) en yakın mesafeleri a=4, c=4, p=6, h=6, d=9, e=9 verir; üst koridor 8 kapanır \(\to\) alt dolambaç 9. \(k = 1\) ile b serbest (2 > 1) \(\to\) üst koridor açılır \(\to\) 8.

Karmaşıklık. İki Dijkstra + filtreleme \(\to\) \(O(n \log n)\).

Şekil 23.4 Problem 4’ün üç adımını gösterir: orijinal çizgede kısa yolun neden geçersiz olduğu, kalmasız katmanlı DAG ve süpernode + Bellman-Ford soneki.

Şekil 23.4: En az V kenarlı en küçük ağırlıklı yol (QR2 Problem 4, Ku): yönlü, keyfi ağırlık; en az V kenarlı en küçük ağırlıklı s→t yolu. SOL panel: orijinal çizge (V=4); doğrudan s→t ağırlık 1 ama yalnız 1 kenar < V → GEÇERSİZ (kesikli kırmızı + yasak işareti); pozitif çevrim s→a→b→s yolu tur atmaya zorlar. ORTA panel: kalmasız katmanlı DAG (k=0..4, kalma kenarı YOK) → katman 4 = TAM 4 kenar; optimal s₀→a₁→b₂→s₃→t₄ (amber rota, ağırlık 4). SAĞ panel: süpernode s* → δ₌₄ sonlu düğümler (a=4, t=4; s ve b sonsuz) + orijinal çizgede Bellman-Ford soneki → cevap = 4. Motordan: δ₌₄ = {s sonsuz, a=4, b sonsuz, t=4}, optimal yol s→a→b→s→t (tam 4 kenar, ağırlık 4); doğrudan s→t (ağırlık 1) tek kenar olduğu için geçersiz. Negatif çevrim varyantında (a ile b arası çift −2) cevap −∞; brute kmax 16→32 hâlâ düşer (−12→−28), iraksamanın sayısal izi.

Çözüm.

“En az V kenar” \(\to\) yol basit olamaz (\(V + 1\) düğüm gerekir). Önce Bellman-Ford: negatif çevrim s→t yolunda ise cevap \(-\infty\) (sonsuz kenarlı yol mevcut). Yoksa: “tam V kenarlı” mesafeyi düşün. Graf çoğaltma: \(V + 1\) katman, kenarları yalnız bir alt katmana yönlendir (kalma-kenarı yok) \(\to\) katman 0’dan katman V’ye yol = orijinalde tam V kenarlı yol; çizge bir DAG \(\to\) DAG relaxation \(O(V^3)\) (G′ boyutu \(V \cdot (V + E) = O(V^3)\)).

“En az V” için: tam-V-kenarlı mesafeleri (DAG relaxation çıktısı) bir süpernode ile alt katmana bağla, sonra orijinal graf üzerinde Bellman-Ford çalıştır (kalan kısım basit yol — negatif çevrim yok). Üst kısım (DAG) ucuz, alt kısım (çevrimli) küçük \(\to\) karmaşıklık ayrıştırılır. Deterministik örnek bunu doğrular: \(\delta_{=4} = \{s: \infty,\, a: 4,\, b: \infty,\, t: 4\}\), optimal yol s→a→b→s→t (tam 4 kenar, ağırlık 4); doğrudan s→t ağırlık 1 ama tek kenar olduğu için geçersiz. Negatif çevrim varyantında (\(a\) ile \(b\) arası çift toplam \(-2\)) cevap \(-\infty\); kaba kuvvet \(k_{\max}\) 16’dan 32’ye çıkınca değer \(-12\)’den \(-28\)’e düşer — iraksamanın sayısal izi.

Karmaşıklık. Bellman-Ford \(O(V \cdot E)\) + DAG relaxation \(O(V^3)\) + son Bellman-Ford \(O(V \cdot E)\) \(\to\) \(O(V^3)\).

23.10 Quiz Hazırlığı Egzersizleri

Egzersiz 1. Bir sözel problemi (örneğin labirent, ağ, oyun) çizgeye modelle: düğüm/kenar/ağırlık/yön tanımla, çözeceğin soyut problemi (en kısa yol / bileşen / topolojik) ifade et.

Egzersiz 2. SSSP hiyerarşisi tablosunu (BFS/DAG/Dijkstra/Bellman-Ford) ezberden çıkar; her biri için “hangi kısıt + hangi süre” yaz.

Egzersiz 3. Üç graf-değiştirme stratejisini (düğüm çoğaltma, süpernode, ön işleme) birer örnek problemle eşle.

Egzersiz 4. Bir “durum izleme” problemini düğüm çoğaltmayla çöz (örneğin kapasite/mod katmanları); \(V\) ve \(E\)’nin nasıl büyüdüğünü hesapla.

Egzersiz 5. Johnson’ın 5 adımını ezberden anlat; her adımın süresini ve neden \(V \times\) Dijkstra’nın baskın olduğunu açıkla.

23.11 Quiz 3 Öncesi Kapsam Genişlemesi

Quiz 2 buraya kadar; sıradaki blok (Ders 23+, Quiz 3 kapsamı) dinamik programlamaya (DP) geçer:

  • Ders 23-27 (L15-L18; araya Ders 25 = PS8 girer): DP temelleri — alt problem tanımı, ilişki (recurrence), topolojik sıra, taban durum, çözüm kurma.
  • DP, “kendi algoritmanı tasarla” ünitesidir; en kısa yolların optimal alt yapı ve örtüşen alt problem sezgileri DP’nin habercisidir.

Bağ: çizge bloğu “kara kutuya indirge” iken, DP “alt problemleri birleştir” der — ama ikisi de aynı optimal-alt-yapı omurgasını paylaşır.

23.12 Ders 13-21 Toplu Cheat Sheet (L9-L14 + PS5-6)

Konu Özü Kaynak (L/PS)
Çizge G = (V, E) Komşuluk listesi; \(O(1)\) kenar sorgu L9
BFS Seviye kümeleri; ağırlıksız en kısa yol; \(O(V+E)\) L9
DFS / full DFS Erişilebilirlik \(O(E)\); bileşen / topolojik / çevrim \(O(V+E)\) L10
DAG relaxation Topolojik sırada gevşet; herhangi ağırlık; \(O(V+E)\) L11
Bellman-Ford Genel SSSP; negatif çevrim \(-\infty\); \(O(V \cdot E)\) L12
Dijkstra Ağırlık \(\ge 0\); öncelik kuyruğu; \(O(V \log V + E)\) L13
Johnson (APSP) Potansiyel ile yeniden ağırlıklandır \(\to V \times\) Dijkstra; \(O(V^2 \log V + V \cdot E)\) L14
Graf değiştirme Düğüm çoğaltma / süpernode / ön işleme PS5-6
UyarıSonraki Ders

Ders 23 (L15): Dinamik Programlama 1 — SRTBOT

Erik Demaine ile dinamik programlama (DP) ünitesine geçiyoruz: SRTBOT çerçevesi (Subproblem, Relation, Topological order, Base case, Original problem, Time). Çizge bloğunun “kara kutuya indirge” disiplini biter; DP “alt problemleri tanımla ve birleştir” disiplinine geçer — ama optimal-alt-yapı omurgası aynı kalır.

23.13 Builder ve OMSCS Bağlantıları

İpucu6 köprü

Bu tekrar oturumu, “problemi doğru bir çizgeye modelle, kara kutuya indirge, sakladığını ve aradığını yaz” disiplinini kurar — köprülerin özeti:

  1. Quiz 2 = çizge midterm \(\to\) OMSCS CS 6515: çizge algoritmaları + indirgeme, graduate dersin giriş varsayımıdır.
  2. Modelleme \(\to\) gerçek dünya \(\to\) çizge: sosyal graf, bağımlılık grafı, ağ topolojisi, durum-uzayı.
  3. Süpernode \(\to\) çok-kaynak/çok-hedef indirgemesi; veritabanı, ağ akışı, kümeleme.
  4. Düğüm çoğaltma \(\to\) durum-augmentasyonu: zaman-genişletilmiş çizge, mod/kapasite katmanları.
  5. SSSP hiyerarşisi \(\to\) “en kısıtlı uygulanabilir algoritmayı seç”: pratik performans bilinci.
  6. Doğru ama yavaş > yanlış ama hızlı \(\to\) mühendislikte önce doğruluk, sonra optimizasyon.

ÖnemliTek bir şey alıp gideceksen

Quiz 2 senden çizge algoritması icat etmeni değil, problemi doğru bir çizgeye modellemeni ister. Düğüm/kenar/ağırlığı açıkça tanımla, çözeceğin soyut problemi (en kısa yol, bileşen, topolojik sıra) söyle, BFS/Dijkstra/Bellman-Ford/Johnson kara kutusuna indirge — algoritmayı asla modifiye etme — ve süreyi grafın boyutundan analiz et. Karmaşıklık, algoritmadan değil, “doğru grafı görmekten” gelir.