Čtení: 55 minHodnotí se: zápočtový test, úloha 4 (12 b), ústní zkouška

4 Důkaz NP-úplnosti redukcí

Po přečtení umíš
  • napsat důkaz NP-úplnosti ve stejné šestibodové kostře
  • vybrat vhodný zdrojový problém
  • dokázat obě implikace a polynomiálnost
  • poznat tři nejčastější chyby v redukcích

Tahle úloha je nejtěžší v testu, ale kvůli zápočtu ji úplně vyřešit nemusíš. Body se dají získat i po částech. Kostra z této kapitoly ti dá část bodů, i když gadget nevymyslíš celý.

4.1 Ukázka: redukce na jeden řádek

Chceme ukázat, že Clique je NP-těžký a víme, že Independent Set je NP-těžký.

Vezmi graf GG a udělej doplněk G‾\overline{G}, hrany prohoď. Množina SS je nezávislá v GG právě tehdy, když je klikou v G‾\overline{G}. Algoritmus na kliku by tedy vyřešil i nezávislou množinu, takže klika je aspoň stejně těžká.

To je celá myšlenka redukce: známý těžký problém přeložíš na ten nový.

4.2 Co přesně dokazujeme

Definice 4.2 (Polynomiální redukce)

A≤pBA \le_p B znamená, že existuje funkce ff počitatelná v polynomiálním čase, pro kterou x∈A  ⟺  f(x)∈Bx \in A \iff f(x) \in B.

Definice 4.3 (NP-těžký a NP-úplný)

QQ je NP-těžký, pokud L≤pQL \le_p Q pro všechna L∈L \in NP. NP-úplný je, pokud je navíc v NP.

Varování 4.4 (Směr redukce)

Vždy ze známého těžkého problému na svůj: A≤pQA \le_p Q. Opačný směr nedokazuje nic.

4.3 Kostra důkazu

Tahák (Kostra, kterou opiš do testu)
  1. Q∈Q \in NP. Co je certifikát a proč ho ověříš v polynomiálním čase.
  2. Zdroj. „Redukujeme z problému AA.“
  3. Konstrukce. Z instance AA popiš instanci QQ včetně všech čísel.
  4. Polynomiálnost. Kolik vrcholů, hran a jak velká čísla.
  5. ⇒ Z řešení AA sestav řešení QQ. Většinou snadné.
  6. ⇐ Z řešení QQ přečti řešení AA. Tady je nejvíc práce: musíš ukázat, že řešení nemůže gadgety obejít.

Každý bod je samostatně obodovatelný.

4.4 Katalog zdrojových problémů

SAT3-SATIS3-ColoringSubset SumMAX-2-SATX3CVCClique4-ColoringPartitionKnapsackSet CoverFVSDom. SetHalf-CliqueSubgraph Iso
Mapa redukcí z přednášek a cvičení. Šipka vede od známého těžkého problému k novému.
Problém Vstup Otázka Vyber ho, když tvůj problém
3-SAT CNF, klauzule se 3 literály je splnitelná? má rozhodnutí ano/ne, gadgety
Clique GG, kk existuje kk navzájem spojených vrcholů? hledá hustý podgraf
Independent Set GG, kk existuje kk vrcholů bez hran mezi nimi? vybírá bez konfliktů
Vertex Cover GG, kk pokryje kk vrcholů všechny hrany? pokrývá nebo zasahuje
3-Coloring GG lze obarvit 3 barvami? přiřazuje do tříd
Hamiltonian Cycle GG existuje kružnice přes všechny vrcholy? řeší cestu nebo pořadí
X3C UU, trojice lze přesně pokrýt trojicemi? přesně dělí prvky
Subset Sum čísla, TT má podmnožina součet přesně TT? pracuje s čísly
Knapsack váhy, ceny, WW, CC jde váha ≤W\le W a cena ≥C\ge C? má dvě kritéria proti sobě
3-Partition 3q3q čísel, BB lze rozdělit na trojice se součtem BB? je silně těžký s čísly

Vertex Cover je často nejlepší volba. Je jednoduchý a blízko mnoha problémů. Proseminář 4 ukazuje, že dobrá volba zdroje promění složitou konstrukci v jednoduchou.

4.5 Řešené příklady ze cvičení

U každého příkladu si nejdřív zkus napsat kostru sám, klidně pět minut. Teprve pak si rozklikni nápovědu a řešení. Čtení hotového důkazu tě na test nepřipraví, tvoření ano.

Příklad 4.6 (Subgraph Isomorphism, cvičení 3.1)

Dokaž NP-úplnost: jsou dány grafy GG a HH. Obsahuje GG podgraf izomorfní s HH?

Nápověda

Jaký speciální případ HH odpovídá známému problému?

Řešení

NP: certifikát je zobrazení ff, ověříme ho přes hrany.

Redukce z Clique: pro (G,k)(G, k) polož H=KkH = K_k.

⇒ i ⇐: GG obsahuje podgraf izomorfní s KkK_k právě tehdy, když má kliku velikosti kk.

Polynomiální, protože pro k>nk > n rovnou odpovíme NE, jinak má KkK_k polynomiálně velikost.

Příklad 4.7 (Half-Clique, cvičení 3.2)

Dokaž NP-úplnost: je dán graf na nn vrcholech. Obsahuje kliku velikosti aspoň n/2n/2?

Nápověda

Velikost kliky z Clique je obecná, tady je pevně daná. Přidej vrcholy, aby kk vyšlo přesně na polovinu.

Řešení

NP: certifikát je množina vrcholů.

Redukce z Clique. Máme (G,k)(G, k) a nn vrcholů.

  • Pokud 2k≥n2k \ge n: přidej 2k−n2k - n izolovaných vrcholů. Nový graf má 2k2k vrcholů a hledáme kliku kk.
  • Pokud 2k<n2k < n: přidej n−2kn - 2k vrcholů spojených se všemi. Nový graf má 2n−2k2n - 2k vrcholů a hledáme kliku n−kn - k.

⇒ V prvním případě klika zůstává. Ve druhém ji doplníme všemi univerzálními vrcholy: k+(n−2k)=n−kk + (n - 2k) = n - k.

⇐ Izolované vrcholy v klice velikosti aspoň 2 nejsou. Ve druhém případě odeber z kliky univerzální vrcholy, je jich n−2kn - 2k, a zbude aspoň kk původních.

Příklad 4.8 (Set Cover, cvičení 3.3)

Dokaž NP-úplnost: je dáno UU, systém podmnožin a číslo kk. Lze vybrat nejvýše kk množin, jejichž sjednocení je UU?

Nápověda

Hledej vrchol jako množinu. Co pak budou prvky UU?

Řešení

NP: certifikát je vybraných kk množin.

Redukce z Vertex Cover: U=EU = E a pro každý vrchol vv množina SvS_v hran u vv. Parametr kk stejný.

⇒ i ⇐: Vybrané vrcholy pokrývají všechny hrany právě tehdy, když příslušné množiny pokrývají UU.

Příklad 4.9 (Feedback Vertex Set, cvičení 3.4)

Dokaž NP-úplnost: je dán GG a kk. Existuje FF velikosti nejvýše kk, po jehož odebrání nezbude žádná kružnice?

Nápověda

Chceš z hrany udělat něco, co musí být zasaženo jako kružnice. Co je nejmenší kružnice?

Řešení
uv→uvw

NP: certifikát je FF. Ověříme, že G−FG - F nemá kružnici.

Redukce z Vertex Cover: ke každé hraně {u,v}\{u, v\} přidej nový vrchol wuvw_{uv} spojený s uu i vv. Vznikne trojúhelník. Parametr kk stejný.

⇒ Po odebrání pokrytí CC nezbude žádná původní hrana. Zbylý graf tvoří jen hrany k vrcholům ww, které mají stupeň nejvýš 1, takže je to les.

⇐ Každý trojúhelník musí mít vrchol v FF. Pokud FF obsahuje wuvw_{uv}, nahraď ho vrcholem uu. Velikost neroste a trojúhelník zůstane zasažený. Teď každou hranu zasahuje původní vrchol, tedy jde o vrcholové pokrytí.

Krok s nahrazením je BÚNO argument: řešení upravíme do standardního tvaru.

Příklad 4.10 (Dominating Set, cvičení 3.5)

Dokaž NP-úplnost: je dán GG a kk. Existuje DD velikosti nejvýše kk takové, že každý vrchol mimo DD má souseda v DD?

Nápověda

Podobný trik jako u FVS. Dominující množina řeší vrcholy, Vertex Cover hrany. Jak z hrany udělat vrchol?

Řešení

NP: certifikát je DD.

Redukce z Vertex Cover: odstraň izolované vrcholy, pokrytí nepotřebují. Ke každé hraně {u,v}\{u, v\} přidej nový vrchol wuvw_{uv} spojený s uu i vv. Parametr kk stejný.

⇒ Pokrytí CC dominuje všem: každý wuvw_{uv} má souseda v CC a každý původní vrchol mimo CC má hranu, jejíž druhý konec je v CC.

⇐ Pokud wuv∈Dw_{uv} \in D, nahraď ho za uu. Každý wuvw_{uv} musí být dominován, takže teď uu nebo vv leží v DD. To je vrcholové pokrytí velikosti nejvýše kk.

Příklad 4.11 (MAX-2-SAT, cvičení 4.1)

Dokaž NP-úplnost: je dána CNF s klauzulemi o nejvýše dvou literálech a kk. Lze splnit aspoň kk klauzulí?

Nápověda

Z 3-SAT. Každou klauzuli nahraď skupinou 2-klauzulí, která pozná, jestli je původní splněná. Hledej počet, který jde dosáhnout právě když je splněná.

Řešení

NP: certifikát je ohodnocení. Spočítáme splněné klauzule.

Redukce z 3-SAT. Pro klauzuli (a∨b∨c)(a \vee b \vee c) přidej novou proměnnou dd a deset klauzulí:

(a), (b), (c), (d), (¬a∨¬b), (¬a∨¬c), (¬b∨¬c), (a∨¬d), (b∨¬d), (c∨¬d)(a),\ (b),\ (c),\ (d),\ (\neg a \vee \neg b),\ (\neg a \vee \neg c),\ (\neg b \vee \neg c),\ (a \vee \neg d),\ (b \vee \neg d),\ (c \vee \neg d)
Pravdivých z a,b,ca, b, c Nejlepší dd Splněno
0 0 6
1 0 7
2 1 7
3 1 7

Polož k=7mk = 7m.

⇒ V každé klauzuli zvol dd podle tabulky, dostaneš 7 z 10.

⇐ Kdyby některá klauzule nebyla splněná, dala by nejvýše 6 a ostatní nejvýše 7, celkem méně než 7m7m.

Příklad 4.12 (NAE-3-SAT na 3-Coloring, cvičení 4.2)

Navrhni jednodušší redukci než na přednášce: NAE-3-SAT se ptá na ohodnocení, kde v žádné klauzuli nemají všechny tři literály stejnou hodnotu.

Nápověda

Jeden vrchol BB jako neutrální barva a trojúhelník s BB pro každou proměnnou. Co musí splnit trojúhelník klauzule, aby zakázal tři stejné barvy?

Řešení

Konstrukce. Vrchol BB značí neutrální barvu. Pro každou proměnnou trojúhelník B,x,¬xB, x, \neg x. Literály tak mají dvě zbylé barvy, čteme je jako True a False.

Pro každou klauzuli trojúhelník t1,t2,t3t_1, t_2, t_3 a hrana z tit_i na ii-tý literál.

⇒ Literály nejsou všechny stejné. Vezmi dva s různou hodnotou, třeba ℓ1\ell_1 True a ℓ2\ell_2 False. Třetí vrchol dostane t3=Bt_3 = B, dále t1t_1 False a t2t_2 True. Žádná hrana není jednobarevná.

⇐ Máme 3-obarvení. Barvu BB nazveme neutrální, další dvě True a False. Trojúhelník klauzule používá všechny tři barvy. Kdyby všechny literály byly True, žádné tit_i by nesmělo být True a na tři vrcholy by zbyly dvě barvy, spor. Stejně pro False.

Je to jednodušší, protože NAE je symetrický vůči prohození True a False, stejně jako barvy.

4.6 Certifikáty (cvičení 2.3)

Problém Certifikát Je v NP?
Clique kk vrcholů ano
Hamiltonian Path pořadí vrcholů ano
Graph Isomorphism bijekce vrcholů ano
Non-2-colorability lichá kružnice ano, i v P
Singularita matice nenulové xx s Ax=0Ax = 0 ano, i v P
Regularita matice inverzní matice ano, i v P
DFA Non-universality nepřijímané slovo délky nejvýš $ Q
NFA Non-universality nepřijímané slovo? pozor

U NFA může být nejkratší nepřijímané slovo exponenciálně dlouhé, takže slovo samo není polynomiální certifikát. Nad rámec materiálů: problém je PSPACE-úplný.

4.7 Tři nejčastější chyby

Varování 4.13 (1. Exponenciální konstrukce)

Čísla na vstupu jsou binárně. Pokud za číslo aia_i přidáš aia_i vrcholů, je výstup exponenciálně velký. Proto redukce Subset Sum na Exact Path v DAG neplatí. Bez vah je ten problém dokonce v P. Pomůže nechat čísla jako váhy hran.

Varování 4.14 (2. Zapomenuté kritérium)

Redukce Knapsack na Longest Path v DAG zapomněla na nosnost. Nejdelší cesta vezme všechny předměty a implikace ⇐ neplatí. Těžkost byla v souboji dvou kritérií.

Varování 4.15 (3. Slabá implikace ⇐)

Nestačí ukázat, že „hezké“ řešení dává odpověď. Musíš vysvětlit, proč i libovolné řešení lze přečíst. Pomáhá kapacita gadgetů nebo BÚNO výměna.

4.8 Kvíz

Kvíz

1. Chceš ukázat, že QQ je NP-těžký. Co redukuješ?
2. Co musí důkaz NP-úplnosti obsahovat? Může být správně více možností, ale také žádná.
3. Redukce za číslo aia_i přidá aia_i vrcholů. Co je špatně?
4. Je-li SS nezávislá množina v GG, co je V∖SV \setminus S?
5. MAX-2-SAT z 3-SAT se 4 klauzulemi: jaké kk zvolíš?
6. Co říká NP-úplnost Subset Sum o čase O(n⋅T)O(n \cdot T)?
7. Co je BÚNO argument v implikaci ⇐?
Ukázat řešeníLibovolné řešení lokálními výměnami upravíme do standardního tvaru, aniž by přestalo být platné a větší. U FVS nahradíme nový vrchol wuvw_{uv} za uu. Ze standardního tvaru pak řešení přečteme.

4.9 Příklady na procvičení

Cvičení 4.16

Dokaž, že 4-Coloring je NP-úplný.

Řešení

NP: obarvení. Z 3-Coloring: přidej vrchol uu spojený se všemi. ⇒ Dej uu čtvrtou barvu. ⇐ uu má barvu, kterou nikdo jiný nemá, takže zbytek používá tři barvy.

Cvičení 4.17

Dokaž, že Hitting Set je NP-úplný.

Řešení

NP: množina HH. Z Vertex Cover: U=VU = V, množiny jsou hrany, parametr stejný. Pokrytí hran je přesně zasažení všech dvouprvkových množin.

4.10 Tahák

Tahák
  • A≤pQA \le_p Q: ze známého těžkého na svůj.
  • Kostra: NP → zdroj → konstrukce → polynomiálnost → ⇒ → ⇐.
  • Doplnění velikosti: izolované nebo univerzální vrcholy.
  • Trik s hranami: nový vrchol wuvw_{uv} pro každou hranu.
  • V∖SV \setminus S: nezávislá množina ↔ vrcholové pokrytí. Doplněk grafu: nezávislá ↔ klika.
  • Čísla binárně. Nikdy aia_i vrcholů.
  • Dvě kritéria nesmí zmizet.
  • ⇐ musí platit pro libovolné řešení, pomůže kapacita gadgetu nebo BÚNO.

Zdroje

  • NI-ICC přednáška 3: redukce strany 3–6, Karpův strom 31–32
  • NI-ICC přednáška 5: slabá a silná NP-těžkost strany 36–41
  • NI-ICC proseminář 3: recept a gadgety strany 2–15
  • NI-ICC proseminář 4: X3C strany 2–13
  • NI-ICC proseminář 5: chyby v redukcích strany 2–16
  • NI-ICC cvičení 2 (úloha 3), 3 a 4 (řešení jsou vlastní)