29  Hesaplama Karmaşıklığı: P, NP, NP-Tamlık

Bütün bir alan tek derste — sınıf hiyerarşisi, halting, şanslı algoritma ve certificate, reduction ile zorluk kanıtı

NotOturum bilgisi

Bu ders ödevlerde işlenmedi; final’de yalnız TANIMLAR test edilir (Ders 31’in retrospektif notu). Önceki dört DP dersinden (Ders 23-27) sonra perspektif tersine döner: artık “nasıl iyi çözeriz?” değil, “neden iyi çözemeyiz?” (alt sınır) sorusu merkezdedir. Subset sum’ın (Ders 27) “evet kolay, hayır zor” gözlemi tam buraya, NP’ye bağlanır.

29.1 Bu Derste Ne Var?

Bütün bir alanı tek derste: hesaplama karmaşıklığı (computational complexity) (Erik Demaine). Algoritmalar “nasıl iyi çözeriz?” derken, karmaşıklık “neden iyi çözemeyiz?” (alt sınır) der. Buradaki ölçek polinom vs üstel (\(n\) vs \(n \log n\) değil).

“cover an entire field, which is computational complexity.” — Demaine, 0:19

Şaşırtıcı sonuç: çoğu problemin hiçbir algoritması yoktur.

“most problems actually have no algorithm.” — Demaine, 1:32

Üç ana fikir:

  1. Sınıf hiyerarşisi\(P \subseteq NP \subseteq EXP \subseteq R\); halting problem \(R\) dışında (uncomputable); çoğu problem çözülemez.
  2. NP — “şanslı algoritma” (hep doğru tahmin) veya “certificate ile polinom-zamanda doğrulanabilir”.
  3. NP-tamlık + reduction — bir problemi bilinen-zor bir probleme indirgeyerek zorluğunu kanıtla.
flowchart TD
    A["Ders 28 (L19): Hesaplama Karmaşıklığı — P, NP, NP-Tamlık (Demaine)"] --> SH["Sınıf hiyerarşisi — P ⊆ NP ⊆ EXP ⊆ R"]
    SH --> SHa["P çözülebilir · NP doğrulanabilir · EXP üstel · R sonlu<br/>P ≠ EXP KESİN; P =? NP AÇIK (1 M$)"]
    A --> HP["Halting problem — R DIŞI (uncomputable)"]
    HP --> HPa["program durur mu? mükemmel hata bulucu olurdu<br/>ama imkânsız — hiçbir algoritma karar veremez"]
    A --> CP["Çoğu problem çözülemez — SAYMA argümanı"]
    CP --> CPa["program = sonlu bit = ℕ (sayılabilir)<br/>problem = sonsuz bit = ℝ (sayılamaz) → program YOK"]
    A --> NP["NP — iki tanım + NP-tamlık + reduction"]
    NP --> NPa["şanslı algoritma ≡ certificate doğrulayıcı; ASİMETRİ<br/>NP-hard alt sınır; reduction: 3-partition → Tetris"]
    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 SH,HP,CP,NP branch
    class SHa,HPa,CPa,NPa leaf
Şekil 29.1: Ders 28’in (L19) kavram haritası: kök = Hesaplama Karmaşıklığı (Demaine) — bütün bir alan tek derste, perspektif tersine döner ALT SINIR tarafı yani neden iyi çözemeyiz. Dört dal — (1) Sınıf hiyerarşisi P alt küme NP alt küme EXP alt küme R: P polinom zamanda CÖZÜLEBİLİR verimli örnek negatif çevrim tespiti Bellman-Ford; NP polinom zamanda DOĞRULANABİLİR örnek Tetris ve subset sum; EXP üstel zamanda çözülebilir örnek n çarpı n satranç; R herhangi sonlu zamanda decidable; P ile EXP farkı KESİN ama P ile NP eşit mi AÇIK bir milyon dolarlık problem. (2) Halting problem R DIŞI uncomputable: verilen bir program durur mu sorusu, mükemmel bir hata bulucu olurdu ama imkânsızdır hiçbir algoritma karar veremez. (3) Çoğu problem çözülemez SAYMA argümanı: program sonlu bit dizisi yani doğal sayı SAYILABİLİR countable, karar problemi her girdi için evet hayır yani sonsuz bit dizisi yani sıfır bir aralığında reel sayı SAYILAMAZ uncountable, reel kat kat fazla yani problemlere yetecek program YOK yani çoğu problem çözülemez. (4) NP sınıfı iki eşdeğer tanım artı NP-tamlık: Tanım bir ŞANSLI algoritma tahmin yapabilir ve bir evet yolu varsa hep doğru tahmin eder; Tanım iki DOĞRULAYICI girdi artı certificate alıp polinom zamanda kontrol eder, ASİMETRİ evet ispatlanabilir hayır değil; NP-hard NP kadar zor alt sınır, NP-complete NP kesişim NP-hard NP’nin en zoru Tetris TSP üç-SAT; REDUCTION bilinen-zor problemi hedefe indirge örnek üç-partition oku Tetris zorluk kanıtı. Birleştirici tema: problemler zorluk ekseninde sınıflanır P verimli çözülebilir alt küme NP verimli doğrulanabilir alt küme EXP alt küme R, çoğu problem R’nin bile dışındadır halting gibi uncomputable, NP-tam problemler NP’nin en zorudur ve bir problemi NP-tam bir probleme indirgeyerek P eşit değil NP ise verimli çözülemez kanıtlanır, şans engineer edilemez modern güvenliğin dayanağıdır.

29.2 1. Karmaşıklık: Alt Sınır Tarafı

Algoritmalar “iyi çözebiliriz” gösterir; karmaşıklık “iyi çözemeyiz” (alt sınır) kanıtlar. Eski alt sınırlar (sıralama \(n \log n\)) “\(n\) vs \(n \log n\)” düzeyindeydi; bu ders polinom vs üstel düzeyinde. Polinom = iyi süre (her zaman hedefimiz); üstel = genelde kolay elde edilir (kaba kuvvet).

“cover an entire field, which is computational complexity.” — Demaine, 0:19

Perspektif tersine döner: dört DP dersi boyunca “ne kadar hızlı çözebiliriz?” diye sorduk; şimdi soru “bu problem verimli çözülebilir mi, yoksa imkânsız mı?

29.3 2. P, EXP, R Hiyerarşisi

  • P = polinom-zamanda (girdi boyutu \(n\)’e polinom) çözülebilir problemler — “verimli”.
  • EXP = üstel-zamanda (\(2^{n^c}\)) çözülebilir. \(P \subseteq EXP\) (ve kesin \(P \neq EXP\)).
  • R = sonlu (recursive) zamanda çözülebilir. \(P \subseteq EXP \subseteq R\).

“P… is the set of all problems solvable in polynomial time.” — Demaine, 1:50

Örnekler: \(n \times n\) satranç EXP’de ama P’de değil (kanıtlı); negatif çevrim tespiti P’de (Bellman-Ford); Tetris (mükemmel-bilgi) EXP’de, P’de mi bilinmiyor. Çoğu problem karar problemidir (yes/no çıktı).

Şekil 29.2 bu iç içe yapıyı tek bir zorluk ekseni üzerinde gösterir: \(P \subseteq NP \subseteq EXP \subseteq R\) dört yarım-kapsül (ortak sol kenar, kademeli sağ kenar) hâlinde nest edilir; sınıf üyeliği bir üst sınır (“şu kadar zamanda çözülebilir”), NP-hard ise bir alt sınır (“bu noktanın sağında”) olarak ayrışır. Motor tanığı NP’nin somut anlamını çalıştırır: subset sum’ın EVET girdisi (\(A = \{2, 5, 7, 8, 9\}\), \(T = 21\)) için kısa-doğrulanabilir bir certificate vardır (\(\{5, 7, 9\}\)), HAYIR girdisi (\(T = 25\)) için yoktur — “NP = polinom-doğrulanabilir” rozetinin çalışan kanıtı.

Şekil 29.2: Hesaplama sınıfları hiyerarşisi (Demaine L19 §2 İMZA + Kontrol-4, 1:50): P ⊆ NP ⊆ EXP ⊆ R — soldan sağa zorluk artar, R dışı uncomputable. İç içe DÖRT yarım-kapsül (ortak sol kenar, kademeli sağ): P ‘polinom-zamanda ÇÖZÜLEBİLİR’ (örnek negatif çevrim tespiti Bellman-Ford O(V·E)), NP ‘polinom-zamanda DOĞRULANABİLİR’, EXP ‘üstel-zamanda’, R ‘herhangi sonlu zamanda decidable’. NP sağ ucu amber şerit = NP-complete (Tetris/TSP/3-SAT rozetleri); EXP sağ ucu = EXP-complete (n×n satranç). NP-hard = NP-complete’ten SAĞA uzanan amber ok (alt sınır, kapsül dışına taşar). Eksenin SAĞ ÖTESİ kırmızı-soluk ‘R DIŞI uncomputable’ (halting problem). İki rozet: P ≠ EXP KESİN + P =? NP 1M$ AÇIK. Alt not: ÜST sınır = sınıf üyeliği · ALT sınır = X-hard. Motor tanığı (assert): build_subset_example == ([2,5,7,8,9],21,25); subset_sum_certificate(A,21)==[5,7,9] toplam 21; verify_subset_certificate(A,21,[5,7,9]) is True; subset_sum_certificate(A,25) is None (HAYIR için kısa kanıt yok); verify_subset_certificate(A,21,[2,8]) is False.

29.4 3. Halting Problem: Uncomputable

\(R\)’nin de dışında problemler var. En ünlüsü halting problem: “verilen bir program durur mu (sonsuz döngü var mı)?”

“Given a computer program, does it ever halt?” — Demaine, 10:49

Bu, mükemmel bir hata bulucu olurdu — ama imkânsızdır: tüm girdileri çözen bir algoritma yoktur. Böyle problemlere uncomputable (\(R\) dışı) denir.

“We call such problems uncomputable.” — Demaine, 11:36

29.5 4. Çoğu Problem Çözülemez

Şaşırtıcı gerçek: çoğu karar problemi uncomputable. Sayma argümanı:

  • Program = sonlu bit dizisi → bir doğal sayı. Doğal sayılar sayılabilir (countable).
  • Karar problemi = her girdi (sonsuz girdi) için yes/no → sonsuz bit dizisi → \([0, 1]\) aralığında bir reel sayı. Reel sayılar sayılamaz (uncountable).

Reel sayılar, doğal sayılardan “çok daha fazladır” → problemlere yetecek kadar program yoktur → çoğu problem çözülemez. Şans eseri, önemsediğimiz çoğu problem \(R\)’dedir (\(n \times n\) satranç bile — yalnız yavaş).

Şekil 29.3 bu argümanı iki panelde somutlaştırır: solda programlar kısa→uzun sonlu bit dizileri olarak doğal sayılara eşlenir (tam \(8\)-bit program sayısı \(= 2^8 = 256\), sonlu); sağda tek bir karar problemi sonsuz bit dizisi → \([0, 1]\) reel sayı olur ve mini Cantor köşegen şeması (köşegeni ters çevir → listede olmayan problem) reel’in “kat kat fazla” olduğunu gösterir. Ortadaki köprü \(\mathbb{N} \ll \mathbb{R}\) → “problemlere yetecek program yok” çıkarımını taşır.

Şekil 29.3: Sayma argümanı (Demaine L19 §4 İMZA, 1:32): programlar SAYILABİLİR, problemler SAYILAMAZ → çoğu problem ÇÖZÜLEMEZ (uncomputable). SOL panel ‘PROGRAMLAR — sayılabilir’: kısa→uzun sonlu bit dizileri (0,1,00,01,10,11) doğal sayılara (#1..#6) eşlenmiş; rozet ‘her program = SONLU bit dizisi = bir doğal sayı (ℕ)’; tam 8-bit program sayısı 2⁸ = 256, uzunluk ≤ 8 program sayısı 2⁹−1 = 511 (SONLU). ORTA köprü: ℕ ≪ ℝ (sayılabilir ≪ sayılamaz) → amber kutu ‘problemlere yetecek program YOK → çoğu problem UNCOMPUTABLE (Demaine 1:32)’. SAĞ panel ‘KARAR PROBLEMLERİ — sayılamaz’: tek problem = her girdi için evet/hayır = SONSUZ bit dizisi → 0.0110101… ∈ [0,1] reel; mini Cantor 4×4 köşegen tablosu + çevrilmiş köşegen P* ‘her biti çevir → listede YOK’; rozet ‘reel sayılar ≫ doğal sayılar (Cantor)’. Alt not: neyse ki önemsediğimiz çoğu problem R’dedir. Veri CANLI hesap (assert): prog_count_exact(8)==256; prog_count_upto(8)==511; diag_flip(Cantor) listedeki hiçbir satıra eşit değil + köşegen biti ters çevrilmiş.

29.6 5. NP: Tanım 1 — Şanslı Algoritma

NP (\(P \subseteq NP \subseteq EXP\)), yalnız karar problemleri için. P gibi “polinom-zamanda çözülebilir” ama şanslı algoritma ile.

“a lucky algorithm, which can make guesses and always makes the right guess.” — Demaine, 22:46

Şanslı algoritma: tahmin yapabilir ve bir “evet”e götüren yol varsa hep doğru tahmin eder (non-deterministic polynomial time). DP’deki “tahmin et” sezgisinin gerçek hâli — ama DP tüm seçenekleri denerken, şanslı algoritma yalnız doğru tahminin maliyetini öder. Asimetri: “evet”i bulur, “hayır”ı garanti etmez.

29.7 6. NP: Tanım 2 — Doğrulayıcı

Eşdeğer tanım: NP = polinom-zamanda doğrulanabilen (checkable) karar problemleri.

“NP is a set of decision problems that can be checked in polynomial time.” — Demaine, 31:31

Bir doğrulayıcı (verifier) girdi + certificate (kanıt) alır, polinom-zamanda yes/no der. İki koşul: (1) her evet girdisi için, doğrulayıcıyı “evet” dedirten bir certificate vardır; (2) her hayır girdisi için, hiçbir certificate doğrulayıcıyı “evet” dedirtmez. Yani “evet”ler ispatlanabilir, “hayır”lar değil. Örnek: subset sum (alt kümeyi göster → topla, doğrula); Tetris (hamle dizisi = certificate, kuralları uygula).

Şekil 29.4 NP’nin iki tanımını tek figürde, motor üzerinde birleştirir: üst panelde şanslı makine \(A = \{2, 5, 7, 8, 9\}\), \(T = 21\) için karar ağacında hep doğru tahmin eder ve \(\{5, 7, 9\} \to 21\) EVET yaprağına ulaşır (amber yol); “tahminleri yazarsan certificate olur” köprüsü Tanım-2’ye bağlanır. Alt panelde doğrulayıcı, certificate \(\{5, 7, 9\}\)’u \(O(|\text{cert}| + |A|)\)’da kontrol eder (\(5 + 7 + 9 = 21 \checkmark\)), kötü certificate \(\{5, 7, 8\}\)’i (\(= 20 \neq 21\)) reddeder; asimetri rozeti \(T = 25 \to\) certificate None ile “hayır kısa-kanıtlanamaz”ı gösterir.

Şekil 29.4: NP’nin iki eşdeğer tanımı (Demaine L19 §5-6, 22:46 + 31:31): ŞANSLI tahmin ≡ hızlı DOĞRULAMA. ÜST panel ‘Tanım 1 — ŞANSLI algoritma’: karar ağacı kökte A={2,5,7,8,9}, T=21; her öğede koy/koyma tahmini; şanslı makine bir EVET-yolu VARSA hep doğru tahmin eder ve {5,7,9}→21 ✓ EVET yaprağına ulaşır (amber yol, diğer dallar soluk); köprü kutusu ‘tahminleri YAZARSAN → certificate olur = Tanım 2’ye köprü (Demaine 22:46)’. ALT panel ‘Tanım 2 — DOĞRULAYICI’: akış (A,T)+cert {5,7,9} → VERIFIER O(|cert|+|A|) → ‘5+7+9 = 21 == 21 ✓ EVET’; kötü cert {5,7,8} → ‘5+7+8 = 20 ≠ 21 ✗ red’; iki koşul kutusu (1) her EVET için cert VAR (2) hiçbir HAYIR için cert YOK; ASİMETRİ rozeti ‘EVET ispatlanabilir · HAYIR DEĞİL — T=25 → cert = None’. Veri MOTORDAN (assert): build_subset_example == ([2,5,7,8,9],21,25); subset_sum_certificate(A,21)==[5,7,9] toplam 21; verify_subset_certificate(A,21,[5,7,9]) is True; verify_subset_certificate(A,21,[5,7,8]) is False (toplam 20); subset_sum(A,25)[0] is False; subset_sum_certificate(A,25) is None.

29.8 7. P ≠ NP Konjektürü

\(P \subseteq NP\) biliniyor; \(P = NP\) mi? bilinmiyor (1 milyon dolarlık açık problem). Çoğunluk \(P \neq NP\) sanır.

“you cannot engineer luck.” — Demaine, 39:17

Sezgi: NP = şansla çözülebilir, P = şansız çözülebilir; \(P = NP\) olsaydı “şans hiçbir şey kazandırmazdı” — ki tuhaf. Eşdeğer ifade:

“it’s harder to come up with proofs than it is to check them.” — Demaine, 39:56

(İspat bulmak, doğrulamaktan zor.)

29.9 8. NP-hard ve NP-complete

  • NP-hard: NP’deki tüm problemler kadar zor (alt sınır). NP’deki her problem buna indirgenir.
  • NP-complete: NP ve NP-hard (NP’nin en zoru).

“NP-complete… the problems that are in NP and they are NP-hard.” — Demaine, 43:11

\(P \neq NP\) ise, NP-tam problemler P’de değildir (polinom-zamanda çözülemez). Tetris NP-tamdır → \(P \neq NP\) varsayımıyla, bir Tetris dizisini hayatta kalıp kalamayacağını polinom-zamanda hesaplayamazsın.

29.10 9. Reduction: İndirgeme ile Zorluk Kanıtı

Reduction (indirgeme): A’yı B’ye çevir — A girdisini B girdisine, B çözümünü A çözümüne. Algoritma için: çözmek istediğini bildiğine indirge. Zorluk için: bilinen-zor problemi hedefe indirge.

“Reductions are the easy way to use algorithms.” — Demaine, 44:38

Anlamı: \(A \le B\) reduction’ı varsa, “A en az B kadar kolay” = “B en az A kadar zor”. Gördüğümüz indirgemeler: ağırlıksız SP → ağırlıklı SP (ağırlık\(=1\)); tamsayı-ağırlık → ağırlıksız (kenar böl); en uzun yol → en kısa yol (negatifle). NP-hardness kanıtı: bilinen NP-tam bir problemi (örn. 3-partition) hedefe indirge. 3-partition → jigsaw puzzle (NP-hard); 3-partition → Tetris (NP-hard).

Şekil 29.5 reduction’ın yönünü — sınavların klasiği — iki panelde ayırır. Üst panel algoritma için reduction’ı (\(A \le B\): bildiğine indirge) üç çalışır motor-tanığıyla gösterir: R1 ağırlıksız → ağırlıklı SP (\(w = 1\); dijkstra \(=\) bfs, \(\delta(s \to d) = 2\), \(60\) rastgele çizgede aynı), R2 tamsayı-ağırlık → ağırlıksız (kenar böl; \(\delta(t) = 5\)), R3 en uzun → en kısa yol (negatifle; yalnız DAG güvenli, \(e \to h = 11\), brute ile aynı). Alt panel zorluk için reduction’ı verir: bilinen-zor 3-partition \(\to\) Tetris (gadget), büyük amber yön oku “\(A \le B \Rightarrow B\) en az \(A\) kadar zor”; ters yön kırmızı çarpıyla yasaklanır (“hedefi kolay-bilinene indirgemek hiçbir şey kanıtlamaz”).

Şekil 29.5: Reduction YÖNÜ — sınavların klasiği (Demaine L19 §9 İMZA, 44:38). ÜST panel ‘ALGORİTMA için reduction (A ≤ B: bildiğine indirge)’: üç çalışır motor-tanığı — R1 ağırlıksız SP → ağırlıklı SP (w=1; dijkstra=bfs, δ(s→d)=2), R2 tamsayı-ağırlık SP → ağırlıksız SP (kenarı w parçaya böl; bfs(bölünmüş)=5, 3+2), R3 en UZUN yol → en KISA yol (negatifle −w; dag_longest=brute, e→h=11, yalnız DAG güvenli ✓); çöz B’yi kara kutu → cevabı A’ya geri çevir, amber kutu = «bildiğim» problem. ALT panel ‘ZORLUK için reduction (bilinen-ZOR’u hedefe indirge)’: 3-PARTITION (NP-zor BİLİNEN) → gadget → TETRIS (hedef); büyük amber yön oku ‘A ≤ B ⟹ B EN AZ A kadar ZOR’; ters-yön kırmızı çarpılı ok ‘hedefi kolay-bilinene indirgemek HİÇBİR ŞEY kanıtlamaz’; zincir ‘Tetris polinom çözülseydi → 3-partition da çözülürdü → P = NP (Demaine 44:38)’. Veri MOTORDAN (assert): R1 dijkstra(w=1)==bfs, δ(s→d)=2; R2 reduce_integer_to_unweighted + bfs == dijkstra, δ(t)=5; R3 dag_longest_path==brute_dag_longest, e→h=11; subset cert [5,7,9] toplam 21 (NP-tam çıpa).

Bu indirgemelerden ikincisi (R2: tamsayı-ağırlık → ağırlıksız) tek başına da öğreticidir: çünkü “ücretsiz” değildir. Şekil 29.6 bu kenar-bölme reduction’ını motor üzerinde açar: solda orijinal ağırlıklı çizge (\(a, b, c, d\); Dijkstra \(\delta\): \(a{:}0, b{:}3, c{:}1, d{:}5\)), sağda her \(w\)-ağırlıklı kenar \(w\) parçaya bölünmüş ağırlıksız çizge — BFS seviyeleri orijinal düğümlerde birebir aynı değerleri verir. Ama bedel: yeni düğüm sayısı \(= \Sigma w = 11\); ağırlıklar büyürse çizge patlar — bu, subset sum’ın \(T\) büyüdükçe patlaması (Ders 27, pseudopolinom) ile aynı köprüdür: girdi bit sayısında üstel.

Şekil 29.6: R2 redüksiyonu (Demaine L19 §9, R2): tamsayı-ağırlık → ağırlıksız · bfs(bölünmüş) == dijkstra(orijinal). SOL panel ‘Orijinal: AĞIRLIKLI çizge · Dijkstra δ rozetleri’: 4 düğüm a,b,c,d kenar ağırlıkları (a→b:3, a→c:1, b→d:2, c→d:5); δ rozetleri motordan a:0, b:3, c:1, d:5; δ(a,d)=5 (a→b→d: 3+2=5 < a→c→d: 1+5=6); kaynak s=a. SAĞ panel ‘Kenar-bölünmüş: AĞIRLIKSIZ çizge · BFS seviye rozetleri (AYNI)’: her w-kenar w parçaya bölünür (a→b 3 parça/2 ara, a→c tek/0 ara, b→d 2 parça/1 ara, c→d 5 parça/4 ara, gri ara düğümler); BFS seviye rozetleri orijinal düğümlerde AYNI (amber) çünkü ağırlıksız kenar = 1 adım, w parça = w adım. Alt not: bedel Σw = 11 yeni düğüm — sayılar büyükse çizge PATLAR (pseudopolinom bedel · Ders 27 köprüsü). Veri MOTORDAN (assert): reduce_integer_to_unweighted + bfs orijinal düğümlerde == dijkstra (a:0,b:3,c:1,d:5); ara düğüm sayısı = Σw−|E| = 11−4 = 7; her kenarın parça sayısı = ağırlığı.

29.11 10. NP-complete Örnekleri

NP-tam problemler her yerde:

  • Optimizasyon/sayı: subset sum (pseudopoli en iyisi), 3-partition, knapsack, TSP (gezgin satıcı: tüm düğümleri gezen en kısa yol).
  • Çizge: en uzun basit yol, 3-renklendirme (2 polinom!), maksimum klik.
  • Mantık: SAT / 3-SAT (Boole formülünü doğru yapan atama var mı).
  • Oyun/bulmaca: Minesweeper, Sudoku, Super Mario, Zelda, Pokemon (bazıları P-space, NP’den de zor).

EXP-complete: \(n \times n\) satranç (iki-oyunculu doğası gereği). (LCS de n dizi ile NP-tam olur; sabit sayı dizi polinom.)

Şekil 29.7 bu kataloğu bir kart-galerisi olarak dizer: dört kategori sütunu (sayı, çizge, mantık, oyun/bulmaca) altında \(12\) NP-tam problem, her biri “NP-tam” rozetli. Üç kontrast rozeti NP-tam’ın ince çizgisini vurgular: “3-renklendirme NP-tam ama 2-renklendirme polinom”, “en uzun basit yol NP-tam ama en kısa yol polinom”, “subset sum pseudopolinom var ama gerçek polinom yok (\(P \neq NP\) ise)”. Sağ altta EXP-complete kutusu (\(n \times n\) satranç, iki-oyunculu) ve LCS’in \(n\)-dizi notu; alt şerit “\(P \neq NP\) ise hiçbiri polinom-zamanda çözülemez (yaklaşık/sezgisel/SAT-solver’a git)”.

Şekil 29.7: NP-tam Hayvanat Bahçesi (Demaine L19 §10 İMZA): NP-tam problemler her yerde. 4 kategori sütunu kart-galerisi (her kart ‘NP-tam’ rozetli, mini kavramsal ikon, SAYI YOK): SAYI (subset sum ‘pseudopolinom en iyisi’, 3-partition, knapsack, TSP), ÇİZGE (en uzun BASİT yol, 3-renklendirme, maksimum klik), MANTIK (SAT / 3-SAT), OYUN/BULMACA (Minesweeper, Sudoku, Super Mario, Tetris). KONTRAST rozetleri — küçük bir değişiklik P ↔︎ NP-tam’ı ayırır: 3-renklendirme NP-tam AMA 2-renklendirme POLİNOM · en uzun BASİT yol NP-tam AMA en kısa yol POLİNOM · subset sum pseudopolinom VAR AMA gerçek polinom YOK (P ≠ NP ise). EXP-complete kutusu (sağ alt): n×n satranç (iki-oyunculu doğası gereği, EXP’de P’de DEĞİL) + ‘LCS sabit dizi polinom ama n DİZİ ile NP-tam’. Alt şerit: P ≠ NP ise hiçbiri polinom-zamanda çözülemez (yaklaşık/sezgisel/SAT-solver’a git). KAVRAMSAL figür (assert): 4 kategori [4,3,1,4] = 12 NP-tam problem L19 §10 birebir; 3 kontrast çifti; EXP-complete satranç ayrı.

29.12 Bu Dersin Özeti

  1. \(P \subseteq NP \subseteq EXP \subseteq R\); \(P \neq EXP\) kesin; \(P = NP\) açık (1 M$).
  2. Halting problem \(R\) dışında (uncomputable); çoğu problem çözülemez (countable program vs uncountable problem).
  3. NP = şanslı algoritma (hep doğru tahmin) = certificate’le polinom-doğrulanabilir.
  4. Asimetri: “evet” ispatlanabilir, “hayır” değil.
  5. \(P \neq NP\) (varsayım): “şans engineer edilemez”; ispat bulmak doğrulamaktan zor.
  6. NP-hard = NP kadar zor; NP-complete = \(NP \cap NP\text{-hard}\) (NP’nin en zoru).
  7. Reduction: bilinen-zor problemi hedefe indirge → zorluk kanıtı (3-partition → Tetris).
ÖnemliTek Bir Cümle

\(P\) (verimli çözülebilir) \(\subseteq NP\) (verimli doğrulanabilir) \(\subseteq EXP \subseteq R\); çoğu problem \(R\)’nin bile dışındadır; NP-tam problemler (Tetris, TSP, 3-SAT) NP’nin en zorudur ve bir problemi NP-tam bir probleme indirgeyerek “\(P \neq NP\) ise verimli çözülemez” kanıtlanır.

29.13 Kontrol Soruları

Cevap: Bir program sonlu bir bit dizisidir → bir doğal sayıya karşılık gelir; doğal sayılar sayılabilir (countable). Bir karar problemi ise, her olası girdi (sonsuz girdi) için bir yes/no belirtir → sonsuz bir bit dizisi → \([0, 1]\) aralığında bir reel sayı; reel sayılar sayılamaz (uncountable). Sayılamaz çokluk, sayılabilirden “kat kat fazladır” — yani problem sayısı, program sayısından çok daha fazla. Her program en fazla bir problemi çözdüğünden, problemlere yetecek program yoktur → çoğu problem çözülemez (uncomputable). (Neyse ki önemsediğimiz çoğu problem \(R\)’dedir.)

Cevap: Şanslı algoritma: tahmin yapan, bir “evet”e götüren yol varsa hep doğru tahmin eden polinom-zaman algoritması. Doğrulayıcı: girdi + certificate alıp polinom-zamanda kontrol eden algoritma. Eşdeğerlik: şanslı algoritmanın “doğru tahminleri” tam olarak certificate’tır — tahminleri yazarsan certificate olur; certificate verilirse doğrulayıcı onu “tahmin gibi” kontrol eder. Asimetri: her ikisi de yalnız “evet” cevaplarını garanti eder — evet için certificate vardır/doğrulayıcı evet der; ama “hayır” için kısa bir kanıt yoktur (subset sum’da “bu sayı temsil edilemez”i ispatlamanın bilinen kısa yolu yok). Bu yüzden Tetris’i “hayatta kalınabilir mi?” diye tanımlamak NP’dedir, “kalınamaz mı?” değil.

Cevap: A’dan B’ye bir reduction (A girdisini B girdisine, B çözümünü A çözümüne çeviren), “A en az B kadar kolaydır” der (B’yi çözebilirsem A’yı da çözerim). Mantıksal karşıt-tersi: “B en az A kadar zordur”. Zorluk kanıtı için: bilinen NP-tam bir problemi (A \(=\) 3-partition) hedef probleme (B \(=\) Tetris) indirgeriz; bu, “Tetris en az 3-partition kadar zor” \(=\) Tetris NP-hard demektir. Yani Tetris için polinom algoritma olsaydı, 3-partition (ve dolayısıyla tüm NP) polinom-zamanda çözülürdü → \(P = NP\). \(P \neq NP\) varsayımıyla, Tetris polinom-zamanda çözülemez.

Cevap: Tek bir “zorluk” ekseni düşün (solda kolay, sağda zor). P (en solda küçük segment), NP (P’yi içerir, biraz daha geniş), EXP (NP’yi içerir), R (EXP’yi içerir, sonlu-zaman) — hepsi üst sınır (“bu çizginin solundasın”). NP-hard bir alt sınırdır (“şu noktanın sağındasın” — NP’nin en zorundan itibaren sağa, sonsuza). NP-complete \(= NP \cap NP\text{-hard}\), yani NP’nin tam sağ ucu (hem NP’de hem NP kadar zor; Tetris, TSP). EXP-complete \(=\) EXP’nin sağ ucu (\(n \times n\) satranç). \(P = NP\) olup olmadığını bilmediğimizden, P ile NP arası “boşluk” var mı kesin değil — ama \(P \neq EXP\) kesin.

29.14 Egzersizler

Egzersiz 1. P, NP, EXP, R sınıflarını birer örnek problemle eşle; her birinin “üst sınır” mı “alt sınır” mı belirttiğini yaz.

Egzersiz 2. Halting problem’in neden uncomputable olduğunu, “çoğu problem çözülemez” sayma argümanıyla ilişkilendir.

Egzersiz 3. NP’nin iki tanımının (şanslı algoritma / doğrulayıcı) Tetris üzerinde nasıl çalıştığını adım adım yaz.

Egzersiz 4. 3-partition → Tetris indirgemesinin neden Tetris’i NP-hard yaptığını, \(A \le B\) mantığıyla açıkla.

Egzersiz 5. Verilen bir optimizasyon problemini (örn. TSP) karar problemine çevir (\(\le x\) var mı) ve ikili aramayla optimumun nasıl bulunacağını göster.

29.15 Sonraki Ders İçin Hazırlık

UyarıSonraki: Ders 29 (PS9) — Problem Oturumu 9 (Justin Solomon)

Ders 29 (PS9): Problem Oturumu 9 (karmaşıklık + genel tekrar). Hoca değişir: bu oturumu Justin Solomon yürütür (Demaine’in ders dizisinden farklı). Bir problem oturumuyla, gördüğümüz tüm konuları (özellikle karmaşıklık ve indirgeme) gerçek problemlerde pekiştiriyoruz. P/NP ayrımı, NP-hardness kanıtı ve reduction sezgisi merkezde.

Ders 29 Öncesi Yapılacak:

  • Bu dersin egzersizlerini, özellikle Egzersiz 3 (NP iki tanım) ve 4 (reduction) çöz.
  • P/NP/EXP/R hiyerarşisini ve NP-hard/NP-complete ayrımını ezberden çiz.
  • Ana cümleyi tekrar oku: “Bilinen-zor problemi hedefe indirge → zorluk kanıtı; şans engineer edilemez.”

29.16 Anahtar Kavramlar (Cheat Sheet)

Kavram Tanım Sayfada
P Polinom-zaman çözülebilir; “verimli” Böl. 2
NP Şanslı algoritma / certificate’le doğrulanabilir Böl. 5-6
EXP / R Üstel-zaman / sonlu-zaman; \(P \subseteq NP \subseteq EXP \subseteq R\) Böl. 2
Uncomputable \(R\) dışı (halting); çoğu problem böyle Böl. 3-4
\(P \neq NP\) Varsayım; “şans engineer edilemez” Böl. 7
NP-hard NP kadar zor (alt sınır); her NP buna indirger Böl. 8
NP-complete \(NP \cap NP\text{-hard}\); Tetris, TSP, 3-SAT Böl. 8, 10
Reduction \(A \le B \to B\) en az \(A\) kadar zor; zorluk kanıtı Böl. 9

29.17 Builder ve OMSCS Bağlantıları

İpucu6 köprü

Bu dersin sınıf hiyerarşisi, NP’nin iki tanımı ve reduction aracı, sistem mühendisliği, kriptografi ve graduate algoritmalarındaki çok sayıda araca bağlanır; köprülerin özeti:

  1. \(P \neq NP\) \(\to\) kriptografi/güvenlik temeli (RSA, hash); “tek yön kolay, ters zor” — modern şifreleme bu konjektürün doğru olduğuna bahse girer.
  2. NP-complete farkındalığı \(\to\) TSP, scheduling, knapsack; “verimli çözme yok → yaklaşık/sezgisel/SAT-solver’a git” (pratikte 3-SAT örnekleri devasa olsa da modern SAT-solver’lar çoğu gerçek örneği çözer).
  3. Reduction \(\to\) problem indirgeme refleksi; bir problemi bildiğin-zor bir probleme oturtmak — OMSCS CS 6515 NP-tamlık çekirdeği’nin temel becerisi.
  4. Halting \(=\) uncomputable \(\to\) statik analiz / bug tespiti sınırı; “tüm sonsuz döngüleri (veya tüm bug’ları) bulan program yoktur” — derleyici ve linter’ların neden eksiksiz olamadığının teorik nedeni.
  5. Certificate / doğrulayıcı \(\to\) blockchain ispatı, zero-knowledge kanıt, hızlı doğrulama; “çözmek zor, doğrulamak kolay” asimetrisi (verify_subset_certificate NP Tanım-2’nin çalışan örneğidir).
  6. Decision problem \(\to\) optimizasyon \(\leftrightarrow\) karar dönüşümü (ikili aramayla); “\(\le x\) var mı?” sorusu binary search’le optimumu verir — graduate algoritmalarında sürekli kullanılan dönüşüm.

ÖnemliTek bir şey alıp gideceksen

Problemler zorluk ekseninde sınıflanır: P (verimli çözülebilir) \(\subseteq\) NP (verimli doğrulanabilir) \(\subseteq\) EXP \(\subseteq\) R (sonlu-zaman). Çoğu problem \(R\)’nin bile dışındadır — halting problem gibi uncomputable (çünkü reel-sayı-çoklukta problem, doğal-sayı-çoklukta program var). NP-tam problemler (Tetris, TSP, 3-SAT) NP’nin en zorudur; bir problemi NP-tam bir probleme indirgeyerek\(P \neq NP\) ise verimli çözülemez” kanıtlanır. NP’de “evet” ispatlanabilir ama “hayır” değildir — ve “şans engineer edilemez” (\(P \neq NP\)), modern güvenliğin dayanağıdır.