32  Toparlanma ve Sonraki Dersler

Dönem retrospektifi — dört hedef, üç ünitenin tek omurgası ve 6.046 köprüsü

NotOturum bilgisi
  • Ku’nun videosu: YouTube — Lecture 20: Course Review (≈38 dk — normal dersten kısa)
  • OCW sayfası: MIT 6.006 Lecture 20
  • Seri: MIT 6.006 — Introduction to Algorithms (Spring 2020) — Ders 31 (L20)
  • Hoca: Jason Ku (dönem retrospektifi; sondan bir önceki ders)
  • Okuma süresi: ≈24 dk

SONDAN BİR ÖNCEKİ ders — test edilebilir materyal bitti; bu ders yüksek-seviye sentez. Önceki ders (Ders 30 / Quiz 3 Review, Ku) DP’yi gözden geçirdi; bu retrospektif tüm dönemi tek bir omurgada toplar ve 6.046’ya köprü kurar. Son ders (Ders 32 / L21) dönemi kapatır.

32.1 Bu Derste Ne Var?

Sondan bir önceki ders (Jason Ku): dönem retrospektifi + “buradan nereye?”. Test edilebilir tüm materyal bitti; bu ders öğrendiklerimizi bağlama oturtur ve sonraki teori derslerini tanıtır — yüksek-seviye sentez.

“Welcome, everybody, to the second-to-last lecture of 6.006.” — Ku, 0:18

Üç ana parça: (1) 6.006’nın 4 hedefi (neden bu dersi alıyoruz), (2) 3 ünitenin tek bir hikâye olarak özeti (veri yapıları → çizge → DP), (3) 6.046 ve ötesi (karmaşıklığı/modeli gevşeten teori dalları).

flowchart TD
    A["Ders 31 (L20): Toparlanma ve Sonraki Dersler — dönem retrospektifi (Ku)"] --> G["Dört hedef — neden bu dersi alıyoruz"]
    G --> Ga["çöz · doğruluğu kanıtla (uyg. 6.042) · verimliliği kanıtla<br/>İNSANLARA İLET = EN ÖNEMLİSİ (anlaşılmayan kod tam puan almaz)"]
    A --> U["Üç ünite — tek omurga"]
    U --> Ua["Quiz 1 veri yapıları (bul) · Quiz 2 çizgeler (ilişki)<br/>Quiz 3 DP = çizge İNŞASI (SRTBOT) — çizgeyi SEN kurarsın"]
    A --> F["Final için — L19 tanımları"]
    F --> Fa["P ⊆ NP ⊆ EXP iç içe · reduction yönü<br/>hard vs complete (genelde doğru/yanlış sorusu)"]
    A --> S["6.046 ve ötesi — OMSCS CS 6515"]
    S --> Sa["doğal uzantı: union-find · MST · max-flow · reduction<br/>tanım gevşetme: randomized · numerical · approximation · model"]
    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 G,U,F,S branch
    class Ga,Ua,Fa,Sa leaf
Şekil 32.1: Ders 31’in (L20) kavram haritası: kök = Toparlanma ve Sonraki Dersler (Ku) — dönem retrospektifi, yüksek-seviye sentez, test edilebilir materyal bitti. Dört dal — (1) Dört hedef: zor problemi çöz algoritma üret, doğruluğu kanıtla özyineleme artı tümevarım uygulamalı 6.042, verimliliği kanıtla word-RAM artı asimptotik artı ölçeklenebilirlik, insanlara ilet EN ÖNEMLİSİ doğru ama anlaşılmayan kod tam puan almaz. (2) Üç ünite tek omurga: Quiz 1 veri yapıları bir şey bul dizi vs küme artı sıralama heap counting radix; Quiz 2 çizgeler düğüm durum kenar geçiş SSSP genellik-runtime takası DAG BFS Dijkstra Bellman-Ford; Quiz 3 DP eşittir çizge inşası SRTBOT alt problem düğüm bağıntı kenar topolojik sıra DAG, çizgeyi SEN kurarsın yaratıcı kısım. (3) Final için L19 tanımlar: P alt küme NP alt küme EXP iç içe, reduction yönü bilinen-zoru hedefe indirge, hard vs complete. (4) 6.046 OMSCS CS 6515: doğal uzantı union-find MST max-flow gerçek reduction artı analiz çok daha zor; tanım gevşetme randomized Las Vegas Monte Carlo, numerical kesinliği zamanla öde, approximation sabit-çarpan yakın, model değişimi cache quantum parallel. Birleştirici tema: 6.006’nın amacı sadece algoritma yazmak değil doğruluğu ve verimliliği insanlara iletmek; üç ünite tek özyinelemeli hikâyedir bul ilişkilendir inşa et; 6.046 bu hikâyeyi derinleştirir ve doğru verimli tanımını gevşetir.

32.2 1. 6.006’nın 4 Hedefi

Ders dört (aslında 3+1) hedef üzerine kuruluydu:

  1. Zor hesaplama problemlerini çöz — algoritma üret (6.0001/6.009’daki gibi “bilgisayara çözdüğünü göster”).
  2. Doğruluğu kanıtla — her geçerli girdi için doğru çıktı; sonsuz girdi uzayı → özyineleme + tümevarım. “Bu ders aslında uygulamalı 6.042’dir.”
  3. Verimliliği kanıtla — “iyi” ne demek? Hesaplama modeli (word-RAM) + asimptotik + ölçeklenebilirlik (performans, girdi büyüme oranına göre).
  4. İnsanlara iletişim — en önemlisi. Kod doğru olsa bile ne yaptığı anlaşılmazsa tam puan yok.

“your algorithm might be correct or efficient, but you need to be able to communicate that to humans.” — Ku

Bilgisayar bilimi büyük ölçüde başkalarıyla çalışmaktır; ne yaptığını ve neden doğru/verimli olduğunu iletemezsen sınırlısın. Şekil 32.2 dört hedefi soldan sağa kademeli bir disiplin olarak dizer ve dördüncü kademeyi (iletişim) amber/büyük olarak öne çıkarır.

Şekil 32.2: 6.006’nın dört hedefi (Ku L20 §1): bir algoritmayı yalnız çözmek değil, doğruluğunu ve verimliliğini KANITLAYIP İNSANLARA İLETMEK. Soldan sağa DÖRT kademe (akış oklarıyla bağlı): (1) ZOR PROBLEMİ ÇÖZ — algoritma tasarla; (2) DOĞRULUĞU KANITLA — özyineleme + tümevarım ‘uygulamalı 6.042’; (3) VERİMLİLİĞİ KANITLA — word-RAM + asimptotik + ölçeklenebilirlik; (4) İNSANLARA İLET — EN ÖNEMLİSİ (amber, büyük), Ku alıntısı ‘your algorithm might be correct or efficient, but you need to be able to communicate that to humans’. Alt şerit: doğru ama anlaşılmayan kod TAM PUAN ALMAZ — bilgisayar bilimi büyük ölçüde BAŞKALARIYLA çalışmaktır. KAVRAMSAL figür (sayı yok).

32.3 2. Karmaşıklık — Final İçin (L19 Özeti)

L19 (Ders 28) hiçbir ödevde işlenmedi; final’de tanımlar test edilir. Mesaj: çoğu problem “iyi” (polinom) çözülemez — ama önemsediğimiz problemler rastgele değildir: ya certificate ile polinom-zamanda doğrulanır (NP) ya da üstel kaba kuvvetle çözülür.

“the problems we think about are not random.” — Ku

Final’de beklenenler: P/NP/EXP iç içe geçişi (\(EXP \supseteq NP \supseteq P\)), reduction yönü (A’yı zor-bilinen B’ye indirgersen A da zordur), hard vs complete ayrımı. Genelde doğru/yanlış sorusu. Şekil 32.3 bu üç tanımı yan yana üç mini-kartla toplar.

Şekil 32.3: Final hazırlığı — L19 tanımları (L20 §2): sınıflar · reduction yönü · hard vs complete. KART 1 ‘iç içe kümeler’: EXP ⊇ NP ⊇ P iç içe bant (önemsediğimiz problemler rastgele değil — ya NP’de polinom-DOĞRULANABİLİR ya da üstel kaba kuvvetle ÇÖZÜLEBİLİR). KART 2 ‘reduction yönü’: DOĞRU yön amber ok — bilinen-ZOR A ≤ hedef B ⟹ B ZOR; TERS yön kırmızı çarpı (A’yı zor YAPMAZ). KART 3 ‘hard vs complete’: NP-hard = alt sınır (NP DIŞINA taşabilir); NP-complete = NP ∩ NP-hard. Alt şerit: tanımları EZBER değil KAVRA + Ku tanığı ‘the problems we think about are not random’. KAVRAMSAL figür (sayı yok).

32.4 3. Üç Ünite — Quiz 1: Veri Yapıları (Kara Kutular)

Sabit-olmayan boyutta girdide bir şey bulmak. İki sorgu tipi: dizi (extrinsic sıra) vs küme (intrinsic anahtar).

  • Dizi: dinamik dizi (Python list — en yaygın; sona ekle/çıkar süper) ve sıra AVL (ortaya ekleme için).
  • Küme: hash table (sözlük işlemleri \(O(1)\) beklenen), küme AVL (dinamik sıralı işlemler: önceki/sonraki), sıralı dizi (statikse yeterli).

Sonra bu veri yapılarını sıralama için kullandık: öncelik kuyruğu sıralaması (dizi/sıralı dizi → \(n^2\)), heap sort (\(n \log n\)), AVL sort, ve counting/radix (direct access array → lineer, polinom-sınırlı sayılar).

Bu ünite, sonraki ikisiyle birlikte tek bir omurganın ilk parçasıdır. Şekil 32.4 bu üç üniteyi tek özyinelemeli hikâye olarak (bul → ilişkilendir → inşa et) yan yana dizer; bu İMZA figür §3, §4 ve §5’i birden kapsar.

Şekil 32.4: Üç ünite, tek omurga (Ku L20 §3-5 İMZA): Quiz 1 (veri yapıları + sıralama) → Quiz 2 (çizgeler) → Quiz 3 (DP = çizge inşası). PANO 1 ‘Quiz 1 — bir şey BUL’: iki kara kutu DİZİ (sıra: dinamik dizi / sıra-AVL) vs KÜME (anahtar: hash / küme-AVL / sıralı dizi); sıralama şeridi n² → n log n → lineer (kümeyi/sırayı HIZLANDIRIR). PANO 2 ‘Quiz 2 — İLİŞKİLER’: düğüm=durum kenar=geçiş mini-çizge; SSSP merdiveni BFS → DAG ilişki → Dijkstra(w≥0) → Bellman-Ford (kısıt gevşedikçe süre doğrusaldan uzaklaşır). PANO 3 ‘Quiz 3 — çizgeyi SEN KUR’: SRTBOT → alt-problem DAG’ı (alt problem=düğüm, bağımlılık=kenar, T=DAG); Ku alıntıları ‘quiz 3 material as really an application of the graph material’ + ‘creative process in trying to construct that graph’. Üç pano amber oklarla bağlı; alt rozet ‘tek özyinelemeli hikâye: BUL → İLİŞKİLENDİR → İNŞA ET’. KAVRAMSAL sentez (asimptotik etiketler sınıf adıdır, ölçülmüş rakam değil).

32.5 4. Üç Ünite — Quiz 2: Çizgeler

Çizge = elemanlar arası ilişki: düğüm = sistemin durumu, kenar = geçiş. Ayrık sistemleri (yol ağı, sıra-tabanlı oyun) modellemenin güçlü çerçevesi.

Odak: tek-kaynak en kısa yollar — genellik/runtime takasıyla birden çok algoritma:

  • DAG (çevrim yok) → lineer (DAG relaxation).
  • BFS → ağırlıksız.
  • Dijkstra → negatif olmayan ağırlık.
  • Bellman-Ford → genel (negatif çevrim tespiti).

Bu merdivenin önemli bir özelliği: uygulanabildiği yerde hepsi aynı cevabı verir. Şekil 32.5 ağırlıksız (\(w = 1\)) küçük bir çizgede üç algoritmanın birebir aynı \(\delta\) ürettiğini motor tanığıyla gösterir — bfs == dijkstra(w=1) == bellman_ford_classic her düğümde aynı; _verify D31 koşusunda random.seed(31) ile 60 rastgele çizgede sssp_backbone_check 60/60 True. Kural: kısıtın en dar uygulanabilir basamağını seç (en hızlısı odur).

Şekil 32.5: SSSP omurga tanığı (Ku L20 §4, motor-tanıklı): ağırlıksız (w=1) çizgede BFS = Dijkstra(w=1) = Bellman-Ford aynı δ — genellik ARTAR, cevap DEĞİŞMEZ. SOL küçük çizge (4 düğüm, kaynak s=0 amber, her kenar w=1); SAĞ tablo (satır=düğüm, sütun=BFS / Dijkstra(w=1) / Bellman-Ford) üç sütun BİREBİR aynı → tek δ (amber eşitlik kuşağı). Beklenen δ (kaynak 0): δ(0)=0, δ(1)=1, δ(2)=1, δ(3)=2 — _engine’den CANLI alınır + assert; sssp_backbone_check True. Alt rozet: SSSP merdiveni BFS O(V+E) → Dijkstra(w=1) O(V log V + E) → Bellman-Ford O(V·E) (genellik artar) · 60 random çizgede birebir (_verify D31) · kuralı kısıtın EN DAR uygulanabilir basamağını seç (Quiz 2).

32.6 5. Üç Ünite — Quiz 3: DP = Uygulamalı Çizge

DP, özyinelemeli çerçevenin çizgeye uygulanışıdır. SRTBOT aslında bir çizge inşa eder: alt problemler = düğümler, bağıntı = kenarlar, topolojik sıra + taban durumlar.

“You can actually think of the quiz 3 material as really an application of the graph material.” — Ku

Kilit fark: Quiz 2’de çizge sana verilir; Quiz 3’te çizgeyi sen kurarsın — bu yüzden DP yaratıcıdır ve daha zordur.

“There’s a creative process in trying to construct that graph.” — Ku

Bu nokta Şekil 32.4’in üçüncü panosunda görünür: SRTBOT, alt-problemleri düğüm, bağıntıyı kenar yapan bir DAG kurar; yaratıcı kısım o çizgeyi var etmektir. Üç ünite böylece tek omurgada kapanır — bul → ilişkilendir → inşa et.

32.7 6. 6.046 — Doğal Uzantı

6.046 (Design and Analysis of Algorithms) — lisans devam dersi (OMSCS karşılığı CS 6515 Graduate Algorithms). İki bakış. Birincisi: 006’nın uzantısı — algoritmayı söylemek kolay, ama doğruluk + verimlilik analizi çok daha zor. İçerik:

  • union-find + amortization via potential analysis (dinamik dizideki “pahalı işi seyrek yap” sezgisinin formel hâli; dinamik bağlı bileşenler, near-constant sorgu).
  • Minimum Spanning Tree (greedy) — ağırlıklı çizgede tüm düğümleri bağlayan min-ağırlık ağaç.
  • Network flow / max-flow & cuts — kapasiteli çizgede source→sink max “su”; Dijkstra/Bellman-Ford gibi artımlı polinom algoritmalar.
  • Tasarım paradigmaları (divide-and-conquer, DP, greedy) derinlemesine; reductions ile gerçekten NP-hard kanıtı.

Greedy zordur: tüm seçimleri taramaz, lokal en iyiyi seçip ilerler ve umut eder — DP’nin “hepsini dene”sinden farklı, daha çetin paradigma. Şekil 32.6 bu uzantıyı (sol sütun) ve bir sonraki bölümdeki tanım gevşetmeyi (sağ sütun) tek bir köprü şemasında toplar; her kart 6.006 köküne (← “…”) bağlıdır.

Şekil 32.6: 6.006 → 6.046 köprüsü (Ku L20 §6-7) — iki bakış: doğal uzantı (006 köklerinden büyür) vs ‘doğru/verimli’ tanımını gevşetme. ÜST köprü bandı ‘6.006 → 6.046 (OMSCS · CS 6515)’ amber ok. SOL sütun (A) DOĞAL UZANTI 5 kart: union-find + amortization (← dinamik dizi amortizasyonu L2); MST greedy (← ağırlıklı çizge / SSSP Quiz 2); max-flow & cuts (← Dijkstra/Bellman-Ford artımlı Quiz 2); tasarım paradigmaları d&c·DP·greedy (← SRTBOT/DP Quiz 3); gerçek reduction’larla NP-hardness (← NP-hard pratiği Ders 28·L19). SAĞ sütun (B) TANIM GEVŞETME 4 kart: randomized LV/MC (← hashing beklenen O(1) L5); numerical ‘kesinliği zamanla öde’ (← word-RAM tamsayı modeli L1); approximation sabit-çarpan yakın TSP %10 (← NP-hard pratiği Ders 28); model değişimi cache/quantum/parallel (← tek-işlemci word-RAM L1). Alt not: greedy tüm seçenekleri TARAMAZ — lokal en iyiyi seç + umut et; DP’nin ’hepsini-dene’sinden çetin. KAVRAMSAL figür (sayı yok).

32.8 7. 6.046 — “Doğru/Verimli” Tanımını Gevşetmek

İkinci bakış: doğruluk veya hesaplama modelini gevşet.

“6.046 [is about] change my definition of what it means to be correct or efficient.” — Ku

  • Randomized algoritmalar: Las Vegas = hep doğru, muhtemelen verimli (hashing böyle — bazen zincir uzun). Monte Carlo = hep verimli, muhtemelen doğru (sabit zaman ama bazen yanlış). Randomization genelde daha hızlı sınırlar verir.
  • Numerical algoritmalar: reel sayılar bilgisayarda tam saklanamaz → sınırlı kesinlikle hesapla; kesinliği zamanla öde (uzun bölme / karekök analojisi). Sürekli (continuous) optimizasyon.

“I pay for precision with time.” — Ku

  • Approximation algoritmalar: NP-hard optimizasyonda optimumu değil, sabit çarpan yakınını polinom-zamanda hedefle (TSP’de %10 içinde).
  • Hesaplama modelini değiştir: cache model (bellek hiyerarşisi: register/L1/…/disk farklı maliyet), quantum (entanglement/superposition — şifre kırma), parallel (k CPU → k-kat hızlanma; her zaman mümkün değil; multicore paylaşımlı bellek vs distributed).

Randomization’ın somut yüzü iki turdur — aynı 40 anahtarı aynı 7 kovaya iki farklı sözleşmeyle yerleştir. Şekil 32.7 bu İMZA tanığı motor-tanıklı gösterir: Las Vegas chaining (HashTableChaining) 40/40 doğru (en uzun zincir 6); Monte Carlo (MonteCarloHashSet, kova başına ≤2) contains hep \(O(1)\) ama 26 öğe düşer → tam 26 yanlış-negatif — ve yanlış-pozitif asla (asimetri). monte_carlo_demo(range(40), 7) birebir (26, 26, False) döndürür: yanlış-negatif = dropped, yanlış-pozitif yok.

Şekil 32.7: Las Vegas vs Monte Carlo (Ku L20 §7 İMZA, motor-tanıklı): aynı 40 anahtar, aynı 7 kova, iki randomizasyon sözleşmesi. SOL LAS VEGAS chaining (HashTableChaining) — hep DOĞRU, muhtemelen verimli; tüm zincirler saklanır (en uzun zincir 6 amber vurgulu); 40/40 bulundu ✓. SAĞ MONTE CARLO (MonteCarloHashSet, kova başına ≤2 öğe) — hep VERİMLİ, muhtemelen doğru; taşan öğeler kırmızı çarpıyla DÜŞÜRÜLDÜ (26 öğe) → contains hep O(1) AMA 26/40 yanlış-negatif; yanlış-POZİTİF asla (asimetri). ORTA TAKAS kutusu: doğruluk ⟷ süre garantisi — birini sabitle, diğerini olasılaştır; Ku ‘I pay for precision with time’. Tüm sayılar _engine’den CANLI: monte_carlo_demo(range(40), 7) == (26, 26, False); Las Vegas 40/40 doğru, en uzun zincir = max(chain_lengths) (assert).

32.9 Bu Dersin Özeti

  1. 4 hedef: algoritma üret · doğruluğu kanıtla (uygulamalı 6.042) · verimliliği kanıtla (model+asimptotik) · insanlara ilet (en önemli).
  2. L19 final’de: tanımlar — P/NP/EXP iç içe, reduction yönü, hard vs complete.
  3. Quiz 1: veri yapıları (dizi vs küme) + onları sömüren sıralama (heap/counting/radix).
  4. Quiz 2: çizgeler — durum/geçiş; SSSP genellik-runtime takası (DAG/BFS/Dijkstra/Bellman-Ford).
  5. Quiz 3: DP = çizge inşası (SRTBOT: düğüm/kenar/topolojik sıra); yaratıcı kısım çizgeyi kurmaktır.
  6. 6.046: ya 006’nın uzantısı (union-find/MST/flow/reductions) ya da tanım gevşetme (randomized/numerical/approximation/model).
ÖnemliTek Bir Cümle

6.006 sadece algoritma yazmayı değil, doğruluk ve verimliliği insanlara iletmeyi öğretir; üç ünite tek bir omurgadır (veri yapısı → çizge → DP=çizge inşası) ve 6.046 bunu derinleştirip “doğru/verimli” tanımını gevşetir (randomized, approximation, farklı hesaplama modelleri).

32.10 Kontrol Soruları

Cevap: İletişim (communication) en önemli hedef. Diğer üçü — algoritma üretmek, doğruluğu kanıtlamak, verimliliği kanıtlamak — teknik olarak yeterli görünse de, 6.006 bunların insanlara aktarılmasını ister. Quiz’de doğru ama “ne yaptığı anlaşılmayan” bir Python script’i tam puan almaz; çünkü ders, bir algoritmanın ne yaptığını ve neden doğru/verimli olduğunu başkalarına iletme becerisini ölçer. Bilgisayar bilimi büyük ölçüde başkalarıyla çalışmaktır; iletemezsen, ne kadar yetkin olursan ol sınırlı kalırsın.

Cevap: SRTBOT bir çizge inşa eder: alt problemler = düğümler, bağıntı (R) = kenarlar (bir alt problemin hangi küçük alt problemlere bağlı olduğu), topolojik sıra (T) = çizgenin DAG olması, taban durumlar (B) = çıkış-kenarı olmayan düğümler. Yani DP, üzerinde en kısa yol / erişilebilirlik tarzı bir hesaplama yapılan bir DAG’dır. Quiz 2’den fark: orada çizge sana verilir (düğüm ve kenarlar belli, algoritma uygula). Quiz 3’te çizgeyi sen kurarsın — düğümleri (alt problemleri) ve kenarları (bağıntıyı) yaratman gerekir. Bu yaratıcı inşa, DP’yi çizge algoritmalarını uygulamaktan daha zor yapar.

Cevap: Las Vegas: hep doğru, muhtemelen (beklenen) verimli. Monte Carlo: hep verimli, muhtemelen doğru. Hashing bir Las Vegas örneğidir: bir öğenin kümede olup olmadığını her zaman doğru söyler, ama bazen zincir uzunsa beklenenden yavaştır (verimlilik olasılıksal). Aynı hash table’ı Monte Carlo yapabilirsin: her kovada çarpışanların yalnız ilk ikisini sakla → her zaman sabit zaman (hep verimli) ama bazen yanlış (saklanmayan öğe “yok” görünür). Şekil 32.7 bunu motor tanığıyla gösterir: aynı 40 anahtarda Monte Carlo 26 yanlış-negatif üretir (\(O(1)\) garantisi karşılığında), Las Vegas 40/40 doğrudur. Pratikte bazen “bazen yanlış ama hep hızlı” iyi bir takastır.

Cevap: (A) Doğal uzantı: Aynı hedefler, ama daha zor analiz. Algoritmayı söylemek kolay; asıl zorluk doğruluk + verimlilik kanıtında. Yeni konular: union-find (potential analysis ile amortization), MST (greedy), network flow / max-flow & cuts (artımlı algoritmalar), tasarım paradigmaları (divide-conquer/DP/greedy derin), gerçek reduction’larla NP-hardness kanıtı. (B) Tanım gevşetme: “Doğru” veya “verimli/model” tanımını esnetir. Randomized (Las Vegas/Monte Carlo), numerical (reel sayılar sınırlı kesinlikle; kesinliği zamanla öde), approximation (NP-hard optimumun sabit-çarpan yakını), model değişimi (cache hiyerarşisi, quantum, parallel/distributed). İkisi birlikte 006’nın doğal devamı + yeni teori dallarıdır.

32.11 Egzersizler

Egzersiz 1. Quiz 1-2-3’ü tek cümlelik bir “omurga” hikâyesi olarak yaz (veri yapısı → çizge → DP=çizge inşası).

Egzersiz 2. Bir set veri yapısı seçimi için karar ağacı çiz: dinamik sıralı işlem gerekiyor mu? sözlük yeter mi? statik mi? (hash table / set AVL / sıralı dizi).

Egzersiz 3. Verilen bir problemi (örn. TSP) önce tam-optimal (NP-hard) sonra approximation açısından ele al; “%10 içinde yeter” yaklaşımının pratik değerini tartış.

Egzersiz 4. word-RAM ile cache modelini karşılaştır: hangi algoritma analizleri ikisinde farklı sonuç verir? (örn. ardışık vs rastgele bellek erişimi).

Egzersiz 5. Hashing’i Monte Carlo’ya çeviren “ilk iki çarpışmayı sakla” fikrini kodla ve hata olasılığını tartış.

32.12 Sonraki Ders İçin Hazırlık

UyarıSonraki: Ders 32 (L21) — Son Ders: Algoritmalar Her Yerde (Ku + Demaine + Solomon)

Ders 32 (L21): Son Ders — dönemin kapanışı ve kursun FİNALİ. Üç hoca: Jason Ku açar, Erik Demaine ile Justin Solomon devam eder. Bu retrospektifteki “omurga” görüşü (veri yapısı → çizge → DP) ve 6.046 köprüsü, son derste nihai bağlamına oturur — algoritmaların gerçek dünyadaki uygulamaları.

Ders 32 Öncesi Yapılacak:

  • L19 tanımlarını (P/NP/EXP, reduction yönü, hard/complete) final için gözden geçir.
  • Üç ünitenin cheat sheet’lerini (Quiz 1-2-3 review dersleri) birlikte oku.
  • 6.046 (CS 6515) konularına göz at: union-find, MST, max-flow, randomized.

32.13 Anahtar Kavramlar (Cheat Sheet)

Tema Özet Sayfada
4 Hedef Algoritma · doğruluk · verimlilik · iletişim (en önemli) Böl. 1
L19 (final) P/NP/EXP iç içe · reduction yönü · hard vs complete Böl. 2
Quiz 1 Veri yapıları (dizi vs küme) + sıralama (heap/counting/radix) Böl. 3
Quiz 2 Çizge (durum/geçiş); SSSP genellik-runtime takası Böl. 4
Quiz 3 DP = SRTBOT ile çizge inşası (yaratıcı) Böl. 5
6.046 (A) union-find, MST, max-flow, reductions (zor analiz) Böl. 6
6.046 (B) randomized, numerical, approximation, model değişimi Böl. 7
Randomized Las Vegas (hep doğru) vs Monte Carlo (hep hızlı) Böl. 7

32.14 Builder ve OMSCS Bağlantıları

İpucu7 köprü

Bu retrospektifin omurga görüşü, dört hedefi ve 6.046 köprüsü, graduate algoritmalarına ve gerçek sistem mühendisliğine doğrudan bağlanır; köprülerin özeti:

  1. 6.046 = CS 6515 (Graduate Algorithms) — OMSCS çekirdek dersi; bu retrospektif birebir hazırlık (omurga görüşü ve 6.046 konu listesi CS 6515 ile örtüşür).
  2. İletişim hedefikod review, tasarım dokümanı, teknik yazım: “ne + neden” anlatımı; doğru kod yetmez, anlaşılır olmalı (en önemli builder becerisi).
  3. Max-flow / network flow → matching, scheduling, segmentation; gerçek sistem optimizasyonu (kapasiteli çizgede source→sink akış pek çok kaynak-tahsis problemine oturur).
  4. Randomized (Las Vegas / Monte Carlo) → hashing, sketch / probabilistic veri yapıları (Bloom filter), ML sampling; “hep hızlı, bazen yanlış” takası monte_carlo_demo’nun çalışan örneğidir.
  5. Approximation → NP-hard pratiği: heuristik + garanti; routing, packing (optimumun sabit-çarpan yakını yeterli olduğunda).
  6. Cache / parallel model → gerçek performans mühendisliği; multicore, distributed, GPU (word-RAM tek-işlemci modeli yerine bellek hiyerarşisi/paralellik).
  7. Quantum → post-kuantum kriptografi farkındalığı (\(P \neq NP\) güvenliğinin kırılganlığı; quantum entanglement şifre kırmayı değiştirir).

ÖnemliTek bir şey alıp gideceksen

6.006’nın gerçek dersi algoritma yazmak değil, doğruluğu ve verimliliği insanlara iletmektir — quiz’de anlaşılmayan doğru kod tam puan almaz. Tüm dönem tek bir omurgadır: veri yapıları (Quiz 1, bir şey bul) → çizgeler (Quiz 2, ilişkiler) → DP (Quiz 3, çizgeyi sen kur — SRTBOT). Buradan 6.046’ya (OMSCS CS 6515) gidersin: ya bu hikâyeyi derinleştir (union-find, MST, max-flow, gerçek reduction’lar) ya da “doğru/verimli” tanımını gevşet (randomized = Las Vegas/Monte Carlo, numerical = kesinliği zamanla öde, approximation = optimumun sabit-çarpan yakını, model = cache/quantum/parallel).