4 Důkaz NP-úplnosti redukcí
- 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 a udělej doplněk , hrany prohoď. Množina je nezávislá v právě tehdy, když je klikou v . 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
znamená, že existuje funkce počitatelná v polynomiálním čase, pro kterou .
je NP-těžký, pokud pro všechna NP. NP-úplný je, pokud je navíc v NP.
Vždy ze známého těžkého problému na svůj: . Opačný směr nedokazuje nic.
4.3 Kostra důkazu
- NP. Co je certifikát a proč ho ověříš v polynomiálním čase.
- Zdroj. „Redukujeme z problému .“
- Konstrukce. Z instance popiš instanci včetně všech čísel.
- Polynomiálnost. Kolik vrcholů, hran a jak velká čísla.
- ⇒ Z řešení sestav řešení . Většinou snadné.
- ⇐ Z řešení přečti řešení . 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ů
| 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 | , | existuje navzájem spojených vrcholů? | hledá hustý podgraf |
| Independent Set | , | existuje vrcholů bez hran mezi nimi? | vybírá bez konfliktů |
| Vertex Cover | , | pokryje vrcholů všechny hrany? | pokrývá nebo zasahuje |
| 3-Coloring | lze obarvit 3 barvami? | přiřazuje do tříd | |
| Hamiltonian Cycle | existuje kružnice přes všechny vrcholy? | řeší cestu nebo pořadí | |
| X3C | , trojice | lze přesně pokrýt trojicemi? | přesně dělí prvky |
| Subset Sum | čísla, | má podmnožina součet přesně ? | pracuje s čísly |
| Knapsack | váhy, ceny, , | jde váha a cena ? | má dvě kritéria proti sobě |
| 3-Partition | čísel, | lze rozdělit na trojice se součtem ? | 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.
Dokaž NP-úplnost: jsou dány grafy a . Obsahuje podgraf izomorfní s ?
Nápověda
Jaký speciální případ odpovídá známému problému?
Řešení
NP: certifikát je zobrazení , ověříme ho přes hrany.
Redukce z Clique: pro polož .
⇒ i ⇐: obsahuje podgraf izomorfní s právě tehdy, když má kliku velikosti .
Polynomiální, protože pro rovnou odpovíme NE, jinak má polynomiálně velikost.
Dokaž NP-úplnost: je dán graf na vrcholech. Obsahuje kliku velikosti aspoň ?
Nápověda
Velikost kliky z Clique je obecná, tady je pevně daná. Přidej vrcholy, aby vyšlo přesně na polovinu.
Řešení
NP: certifikát je množina vrcholů.
Redukce z Clique. Máme a vrcholů.
- Pokud : přidej izolovaných vrcholů. Nový graf má vrcholů a hledáme kliku .
- Pokud : přidej vrcholů spojených se všemi. Nový graf má vrcholů a hledáme kliku .
⇒ V prvním případě klika zůstává. Ve druhém ji doplníme všemi univerzálními vrcholy: .
⇐ Izolované vrcholy v klice velikosti aspoň 2 nejsou. Ve druhém případě odeber z kliky univerzální vrcholy, je jich , a zbude aspoň původních.
Dokaž NP-úplnost: je dáno , systém podmnožin a číslo . Lze vybrat nejvýše množin, jejichž sjednocení je ?
Nápověda
Hledej vrchol jako množinu. Co pak budou prvky ?
Řešení
NP: certifikát je vybraných množin.
Redukce z Vertex Cover: a pro každý vrchol množina hran u . Parametr stejný.
⇒ i ⇐: Vybrané vrcholy pokrývají všechny hrany právě tehdy, když příslušné množiny pokrývají .
Dokaž NP-úplnost: je dán a . Existuje velikosti nejvýše , 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í
NP: certifikát je . Ověříme, že nemá kružnici.
Redukce z Vertex Cover: ke každé hraně přidej nový vrchol spojený s i . Vznikne trojúhelník. Parametr stejný.
⇒ Po odebrání pokrytí nezbude žádná původní hrana. Zbylý graf tvoří jen hrany k vrcholům , které mají stupeň nejvýš 1, takže je to les.
⇐ Každý trojúhelník musí mít vrchol v . Pokud obsahuje , nahraď ho vrcholem . 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.
Dokaž NP-úplnost: je dán a . Existuje velikosti nejvýše takové, že každý vrchol mimo má souseda v ?
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 .
Redukce z Vertex Cover: odstraň izolované vrcholy, pokrytí nepotřebují. Ke každé hraně přidej nový vrchol spojený s i . Parametr stejný.
⇒ Pokrytí dominuje všem: každý má souseda v a každý původní vrchol mimo má hranu, jejíž druhý konec je v .
⇐ Pokud , nahraď ho za . Každý musí být dominován, takže teď nebo leží v . To je vrcholové pokrytí velikosti nejvýše .
Dokaž NP-úplnost: je dána CNF s klauzulemi o nejvýše dvou literálech a . Lze splnit aspoň 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 přidej novou proměnnou a deset klauzulí:
| Pravdivých z | Nejlepší | Splněno |
|---|---|---|
| 0 | 0 | 6 |
| 1 | 0 | 7 |
| 2 | 1 | 7 |
| 3 | 1 | 7 |
Polož .
⇒ V každé klauzuli zvol 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ž .
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 jako neutrální barva a trojúhelník s pro každou proměnnou. Co musí splnit trojúhelník klauzule, aby zakázal tři stejné barvy?
Řešení
Konstrukce. Vrchol značí neutrální barvu. Pro každou proměnnou trojúhelník . Literály tak mají dvě zbylé barvy, čteme je jako True a False.
Pro každou klauzuli trojúhelník a hrana z na -tý literál.
⇒ Literály nejsou všechny stejné. Vezmi dva s různou hodnotou, třeba True a False. Třetí vrchol dostane , dále False a True. Žádná hrana není jednobarevná.
⇐ Máme 3-obarvení. Barvu 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é 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 | 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é s | 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
Čísla na vstupu jsou binárně. Pokud za číslo přidáš 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.
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í.
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
4.9 Příklady na procvičení
Dokaž, že 4-Coloring je NP-úplný.
Řešení
NP: obarvení. Z 3-Coloring: přidej vrchol spojený se všemi. ⇒ Dej čtvrtou barvu. ⇐ má barvu, kterou nikdo jiný nemá, takže zbytek používá tři barvy.
Dokaž, že Hitting Set je NP-úplný.
Řešení
NP: množina . Z Vertex Cover: , množiny jsou hrany, parametr stejný. Pokrytí hran je přesně zasažení všech dvouprvkových množin.
4.10 Tahák
- : 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 pro každou hranu.
- : nezávislá množina ↔ vrcholové pokrytí. Doplněk grafu: nezávislá ↔ klika.
- Čísla binárně. Nikdy vrcholů.
- Dvě kritéria nesmí zmizet.
- ⇐ musí platit pro libovolné řešení, pomůže kapacita gadgetu nebo BÚNO.