YZTI - poznámky ke složitosti

Podobné dokumenty
Třídy složitosti P a NP, NP-úplnost

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Další NP-úplné problémy

4. NP-úplné (NPC) a NP-těžké (NPH) problémy

Výroková a predikátová logika - III

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

NP-úplnost problému SAT

Výroková a predikátová logika - II

Výroková a predikátová logika - II

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Třída PTIME a třída NPTIME. NP-úplnost.

Složitost Filip Hlásek

Matematická logika. Rostislav Horčík. horcik

Výroková a predikátová logika - V

Matematická logika. Miroslav Kolařík

Výroková a predikátová logika - IV

ALGORITMY A DATOVÉ STRUKTURY

Přijímací zkouška - matematika

Univerzální Turingův stroj a Nedeterministický Turingův stroj

Od Turingových strojů k P=NP

Problémy třídy Pa N P, převody problémů

Výroková a predikátová logika - II

NP-úplnost. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 23. května / 32

1 Linearní prostory nad komplexními čísly

KMI/ALM3 Mgr. Petr Osička, Ph.D. ZS ANO je slovo 1 a kódováním NE je slovo 0, pak je problém popsán pomocí dvojice L, R takové, že:

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Základy logiky a teorie množin

Vztah jazyků Chomskeho hierarchie a jazyků TS

3.10 Rezoluční metoda ve výrokové logice

Složitost. Teoretická informatika Tomáš Foltýnek

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

Výroková a predikátová logika - XII

Výpočetní složitost algoritmů

Matematická analýza pro informatiky I. Limita funkce

Výroková a predikátová logika - III

1 Pravdivost formulí v interpretaci a daném ohodnocení

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Formální systém výrokové logiky

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 4. PREDNÁŠKA - SOUČIN PROSTORŮ A TICHONOVOVA VĚTA.

Výroková a predikátová logika - XIII

Výroková logika - opakování

10 Přednáška ze

TGH12 - Problém za milion dolarů

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout

Úvod do informatiky. Miroslav Kolařík

Základy matematické analýzy

Úvod do informatiky. Miroslav Kolařík

Třída PTIME a třída NPTIME. NP-úplnost.

Kapitola 6. LL gramatiky. 6.1 Definice LL(k) gramatik. Definice 6.3. Necht G = (N, Σ, P, S) je CFG, k 1 je celé číslo.

KMI/VCS1 Vyčíslitelnost a složitost

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

Matematická logika. Miroslav Kolařík

Matematická analýza 1

Logika. 5. Rezoluční princip. RNDr. Luděk Cienciala, Ph. D.

H {{u, v} : u,v U u v }

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Interpolace Lagrangeovy polynomy. 29. října 2012

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Kreslení grafů na plochy Tomáš Novotný

Modely Herbrandovské interpretace

Dijkstrův algoritmus

5 Orientované grafy, Toky v sítích

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

PŘEDNÁŠKA 7 Kongruence svazů

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16

Úvod do informatiky. Miroslav Kolařík

Množiny, relace, zobrazení

1 Lineární prostory a podprostory

Lineární algebra : Násobení matic a inverzní matice

Výroková a predikátová logika - IX

Vrcholová barevnost grafu

Logika. 2. Výroková logika. RNDr. Luděk Cienciala, Ph. D.

Výroková a predikátová logika - IX

Lineární algebra : Lineární prostor

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

Lineární algebra : Násobení matic a inverzní matice

Rezoluce ve výrokové logice

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2017

Výroková logika dokazatelnost

10. Složitost a výkon

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Výroková a predikátová logika - X

PŘEDNÁŠKA 5 Konjuktivně disjunktivní termy, konečné distributivní svazy

Algoritmická matematika 3 Mgr. Petr Osička, Ph.D. ZS Základní pojmy

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α

Operační výzkum. Síťová analýza. Metoda CPM.

Výroková a predikátová logika - XII

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML

Lingebraické kapitolky - Počítání s maticemi

Transkript:

YZTI - poznámky ke složitosti LS 2018 Abstrakt Poznámky k přednášce YZTI zabývající se složitostí algoritmických problémů a teorií NP-úplnosti. Složitost algoritmu a problému Zabýváme se už pouze rekurzivními problémy. Budeme se snažit určit, které problémy jsou a které nejsou řešitelné s použitím rozumného množství výpočetních zdrojů (v našem případě času, ale část úvah z textu lze aplikovat i na pamět ). Pro instanci x, algoritmus A (tj. Turingův stroj A, pokud v textu budeme používat pojem algoritmus, budeme se spoléhat na Church-Turingovu tezi), definujeme složitost t A (x) algoritmu A pro instanci x jako počet elementárních kroků, které A provede při výpočtu (u TS to je počet aplikací přechodové funkce). Složitost algoritmu A je funkce Time A : N N zobrazující velikost vstupu na počet kroků, které algoritmus provede pro vstupy dané velikosti. Rozlišujeme složitost v nejhorším případě. Time A (n) = max{t A (x) x = n}. složitost v průměrném případě. Time A (n) = avg{t A (x) x = n}. složitost v nejlepším případě. Time A (n) = min{t A (x) x = n}. Poznámky k předchozí definici Zajímá nás rychlost růstu počtu kroku v závislosti na velikosti instance, nikoliv počet kroků pro konkrétní instanci. Pro různé instance x 1, x 2, x 1 = x 2 můžeme mít t A (x 1 ) t A (x 2 ) (například quicksort). K vyjádření hlavního trendu růstu složitosti často používáme asymtotické notace. Ve zbytku textu se budeme zabývat složitostí v nejhorším případě. Složitost algoritmického problému odvozujeme jistým způsobem od složitosti algoritmů. omezení seshora (upper bound): složitost nejlepšího (známého) algoritmu pro daný problém. omezení zespoda (lower bound): každý algoritmus pro daný problém (i ten, který ještě neznáme) musí mít alespoň takovou složitost. Příklad: O(n log n) pro třídění porovnáváním, většína algoritmů musí přečíst celý vstup, tedy mají omezení zespoda O(n). Nalézt omezení seshora je (relativně) snadné. Oproti tomu nalézt omezení zespoda je typicky velmi obtížné. 1

Třídy P a NP Třída složitosti je množina problémů, které jsou určeny výpočetním modelem (pro nás TS) a omezením složitosti. Definice 1. Necht T : N N je funkce. Jazyk L patří do DTIME(T(n)) pokud existuje algoritmus se složitostí O(T(n)), který rozhoduje jazyk L. Věta 1 (Existence časové hierarchie). Pro každou funkci f : N N, která je časově zkonstruovatelná (existuje algoritmus, který pro vstup n spočítá f(n) nejhůře v čase O(f(n))), existuje problém, který je řešitelný v čase O(f(n)) ale není řešitelný v čase o(f(n)/ log n). Tedy platí přirozená myšlenka: když zvětšuji čas, který mám pro počítání k dispozici, umím spočítat víc a víc problémů. Z předchozí věty vidíme, že pro g(n) o(f(n)/ log n) platí, že DT IME(g(n)) DT IME(f(n)). Předchozí věta má také hezký (i když technický) důkaz, který ale z časových důvodů vynecháme. Definice 2 (Třída P). P = c 1 DTIME(nc ) Poznámky D v DTIME znamená deterministic. Třídou P zachycujeme prakticky řešitelné problémy. Nemůžeme se vyhnout námitce, že algoritmus se složitostí n 100 není efektivní, a některé problémy z P tak nejsou prakticky řešitelné. Nicméně, dosavadní zkušenost je taková, že pro většinu problémů, pro které se najde algoritmus s polynomickou složitostí, je nakonec nalezen i algoritmus se složitostí, která je polynomem s nízkým exponentem. Polynom jsme vybrali, protože (1) je to nejrychleji rostoucí funkce, která neroste moc rychle (2) polynomy jsou uzavřeny na násobení (a sčítání) a tedy skládáním algoritmů s polynomickou složitostí dostaneme opět polynom. (3) třída P je stejná vzhledem k různým definicím algoritmu (výpočetním modelům). Problém nalezení minimální kostry grafu, problém nalezení nejkratší cesty mezi dvěma uzly v grafu a problém testování prvočíselnosti všechny patří do třídy P (u optimalizačních problémů uvažujeme jim příbuzné rozhodovací verze, viz pojem redukce v předchozí přednášce). Definice 3 (Třída NP). Jazyk L patří do třídy NP, pokud existují polynom p a algoritmus V (verifikátor) s polynomickou časovou složitostí takové, že pro každé x {0, 1} x L právě když u {0, 1} p( x ) takový, že M(x, u) = 1. Řetězec u je certifikát (nebo důkaz) toho, že x L. Do třídy NP patří problémy, které mají jednoduše verifikovatelnou správnost řešení. Například uvažme problém nalezení minimální kostry grafu. Vstupem je graf G a číslo k, odpověd je ANO, pokud G obsahuje kostru s cenou nejvýše k. Pokud taková kostra existuje, můžeme ji použít jako certifikát u (a ověřit tak správnost odpovědi ANO). Verifikátor v tomto případě ověří, že u je skutečně kostra a že její cena je nejvýše k (pokud tomu tak je, tak přijímá, jinak zamítá). Pokud je správná odpověd pro G a k NE, žádný certifikát, pro který by verifikátor přijímal neexistuje (protože neexistuje kostra s cenou menší než k). NP je zkratkou anglického nondeterministic polynomial. Ukážeme si alternativní definici třídy NP, díky které získala svoje jméno. Definice 4. Nedeterministický Turingův stroj (NTS) je dán sedmicí (Q, Σ, Γ, δ, q 0, q +, q ), kde vše mimo δ je shodné s deterministickým TS. Funkce δ : Q Γ 2 Q Γ {L,P} ovšem místo jedné trojice tvořené stavem, znakem páskové abecedy a směrem posunutí hlavy nyní vrací množinu takových trojic. 2

Výpočet determinitického TS si lze představit jako seznam konfigurací, kterými TS při výpočtu prochází. Seznam je to proto, že z každé konfigurace je možné přejít pouze do jedné další konfigurace (to je dáno tvarem přechodové funkce deterministického TS). Oproti tomu NTS může přejít do některé z množiny možných konfigurací. Množinu všech možných výpočetních větví si u NTS můžeme představit uspořádanou do stromu, kde jednotlivé uzly jsou konfigurace NTS a hrany značí přechody mezi konfiguracemi. Bez ztráty na obecnosti můžeme předpokládat, že NTS má na výběr vždy maximálně ze dvou konfigurací (toto tvrzení lze dokázat, nicméně důkaz vynecháme, čtenář si ho snadno sestaví), a tedy že strom konfigurací je binární. NTS přijímá řetěz w, pokud se v alespoň jedné výpočetní větvi dostane do přijímací konfigurace (do jakých konfigurací se dostane v ostatních větvích nás nezajímá). NTS má složitost nejhůře T(n), pokud každá výpočetní větev zastaví (tj. NTS bud přijme, nebo zamítne) po nejvíce T(n) krocích (n zde značí délku řetězce na vstupu). Definice 5. Pro funkci T : N N a jazyk L řekneme, že L NTIME(T(n)), pokud existuje NTS M se složitostí O(T(n)) takový, že x L právě když M přijímá x. Věta 2. NP = c N NTIME(nc ) Důkaz. Hlavní idea: sérii voleb které NTS při výběru, do jaké z možných konfigurací NTS přejde při provádění přijímací větve výpočtu, budeme brát jako certifikát. Necht L je rozhodován NTS N v čase p(n), kde p je polynom. Pro každé x L existuje přijímací větev výpočtu stroje N, tj. existuje sekvence voleb, které N provede, aby zůstal na této větvi. Tuto sekvenci lze reprezentovat jako sekvenci bitů, díky úmluvě o tom, že strom konfigurací je binární. Označme tuto sekvenci u. Verifikátor V sestavíme tak, že V simuluje činnosti N a díky u ví, do které z konfigurací má přejít dále (a držet se tak přijímací větve v N). Zřejmě V přijímá dvojici (x, u) právě když existuje přijímací větev v N (pro výpočet se vstupem x). Protože přijímací větev má délku maximálně p(n), je délka u také omezena p(n) a V pracuje v polynomickém čase. Necht L je verifikován verifikátorem V se složitostí p(n). Sestavíme NTS N, který rozhoduje L. N pro vstup x nejdříve nedeterministicky vygeneruje řetěz w {0, 1} p( x ) (začne s w = ɛ, při přechodu z konfigurace na jinou konfiguraci přidá k w symbol 1 nebo symbol 0 v závislosti na tom, do které ze dvou možných konfigurací přejde; na konci každé z výpočetních větví tak dostaneme unikátní w a přitom pokryjeme všechny možné řetězce délky p( x ).) Poté N simuluje V pro vstup (x, w). Pak v N existuje přijímací větev právě když existuje řetěz u o délce maximálně p( x ) takový, že V přijímá (x, u). Každá výpočetní větev stroje N má polynomickou délku, protože délka w je polynomická a V také pracuje v polynomickém čase. NP-úplné problémy Víme, že P NP, protože problémy z P jsou verifikovatelné i bez použití certifikátu, stačí prostě v polynomickém čase spočítat správný výsledek. Oproti tomu nevíme, jestli NP P. Většina informatiků věří (nebo alespoň tiše předpokládá), že to neplatí (a tedy třídy P a NP jsou různé). Rovnost P a NP by mohla mít dalekosáhlé důsledky (například v kryptografii). Teorie NP-úplnosti vznikla při zkoumání vztahu mezi P a NP. Definice 6. Jazyk L je redukovatelný Karpovou redukcí na jazyk L, značeno L K L, pokud existuje funkce f : {0, 1} {0, 1} spočetná v polynomickém čase taková, že pro každé x {0, 1} platí: x L právě když f(x) L. Poznámky Karpova redukce se také nazývá polynomická redukce (problémy jsou redukovatelné v polynomickém čase). Je to speciální případ Turingovy redukce z minulé přednášky. 3

Funkce f je spočetná v polynomické čase, pokud existuje TS pracující v polynomickém čase, který pro vstup x zastaví a na pásce zůstane f(x). Karpova redukce nemusí být surjektivní (bývá také označována jako many-to-one redukce). Věta 3. Pokud L K L a L K L, pak L K L Důkaz. Označme jako f 1 funkci realizující redukci L K L a jako f 2 funkci realizující redukci L K L, pak funkce f = f 2 f 1 (tedy funkce f taková, že f(x) = f 2 (f 1 (x))) realizuje redukci L K L. Přímo z definice Karpovy redukce totiž plyne, že x L právě když f 1 (x) L právě když f 2 (f 1 (x)) L. Funkce f je spočetná v polynomickém čase, protože f 1 i f 2 jsou spočetné v polynomickém čase. Definice 7. Jazyk L je NP-težký, pokud pro každý jazyk L NP platí, že L K L. Jazyk L je NP-úplný, pokud je NP-těžký a patří do NP. Věta 4. Pokud je L NP-težký a L P, pak P = NP. Důkaz. Stačí si uvědomit, že pokud je L NP-težký a L P, pak lze sestavit polynomický algoritmus řešící libovolný problém z NP. Necht L NP, algoritmus jej řešící provede pro vstup x následující: 1. NP-težkost jazyka L zajišt uje L K L. Algoritmus tedy spočítá f(x), kde f je funkce realizující Karpovu redukci. 2. Protože L P, existuje polynomický algoritmus řešící L. Tento algoritmus spustíme pro f(x) a vrátíme obdržený výsledek. Z definice Karpovy redukce plyne, že algoritmus vrací korektní výsledek. Navíc určitě pracuje v polynomickém čase, protože f je spočetná v polynomickém čase a algoritmus z bodu 2 také pracuje v polynomickém čase. NP-úplné problémy jsou ty nejtěžší problémy z třídy NP v následujícím smyslu: pokud dokážeme vyřešit v polynomickém čase libovolný NP-úplný problém, tak dokážeme vyřešit v polynomickém čase libovolný problém z NP, a platilo by tedy P = NP. (Ve skutečnosti bychom pak uměli vyřešit v polynomickém čase i některé problémy mimo NP, ale na vysvětlení nemáme čas.) Příklady NP-úplných problémů Připomeňme, že SAT je problém definovaný následovně: vstupem je formule výrokové logiky v konjunktivní normální formě, odpovědí je ANO, pokud je tato formule splnitelná (tedy existuje ohodnocení výrokových proměnných ve formuli obsažených takové, že formule je pravdivá), jinak je odpověd NE. Lze vidět, že SAT NP. Jako certifikát můžeme vzít právě ohodnocení výrokových proměnných, verifikátor poté pouze spočítá pravdivost formule při tomto ohodnocení a podle výsledku se rozhodne (přijímá, právě když je formule pravdivá). Věta 5 (Cookova věta). SAT je NP-úplný. Důkaz. Už víme, že SAT patří do NP, stačí tedy ukázat, že je NP-težký. Tento důkaz je mimo rozsah tohoto textu, doporučuji ovšem čtenáři si jej alespoň přečíst (lze ho najít v každé učebnici zabývající se NP-úplností). Díky tvrzení o tranzitivitě Karpovy redukce můžeme existenci dalších NP-úplných problémů dokazovat následovně 1. Ukážeme, že problém patří do NP. 2. Najdeme Karpovu redukci z nějaké již známého NP-težkého problému na náš problém. 4

3SAT je speciální případ SAT problému, ve kterém požadujeme, aby každá klausule obsahovala právě 3 literály. Z následující věty plyne, že 3SAT je NP-úplný. Věta 6. SAT K 3SAT Důkaz. Necht ϕ = F 1 F 2 F k je formule v CNF (tj. instance SAT problému). Ukážeme, jak libovolnou klausuli F i převedeme na formuli ϕ i = C i 1 C i 2... takovou, že: (a) C i j jsou klausule s právě třemi literály; (b) ϕ i je pravdivá, právě když F i je pravdivá. Pak zjevně ϕ je pravdivá, právě když ϕ 1 ϕ 2 ϕ k je pravdivá. Označme klausuli, kterou budeme transformovat, pomocí F i. Pak jsou tři možnosti: 1. F i má právě tři literály. V tomto případě vezmeme ϕ i = F i 2. F i má méně než tři literály. Pak stačí jeden z literálů obsažených v F i zdvojit (nebo ztrojit), získáme tak klausuli se třemi literály a použijeme předchozí bod. 3. F i má více než 3 literály. Přepokládejme tedy, že Pak F i = (l 1 l 2 l n ) (1) ϕ i = (l 1 l 2 z 1 ) ( z 1 l 2 z 2 ) ( z 2 l 3 z 3 ) ( z n 2 l n 1 l n ), (2) kde z 1, z 2... z n 2 jsou výrokové proměnné, které se nevyskytují ve ϕ. V případech 1. a 2. zjevně platí, že F i je pravdivá, právě když ϕ i je pravdivá. Rozebereme případ 3. Pokud je F i pravdivá, pak exituje literál l j, který splní jednu klausuli ve formuli (2), zbylé klausule pak jde splnit pomocí vhodného ohodnocení proměnných z 1,..., z n 2 (čtenář snadno ověří jako cvičení). Pokud je naopak pravdivá (2), pak alespoň jeden literál l j musí být pravdivý, protože (2) nelze splnit pouze pomocí vhodného ohodnocení proměných z 1, z 2,... z n 2. To plyne z toho, že sousední klausule v (2) obsahují vždy proměnnou (klausule vlevo) a její negaci (klausule vpravo). Právě popsaný převod klausule na konjunkci klausulí lze jistě provést v polynomickém čase (závislém na počtu literálů v klausuli) a tedy transformaci ϕ na ϕ 1 ϕ 2 ϕ k lze provést v polynomickém čase. Definice 8. Necht G = (V, E) je neorientovaný graf. Vrcholové pokrytí grafu G je množina jeho vrcholů C V taková, že pro každou z hran {i, j} E platí, že {i, j} C. (Tedy každá z hran grafu má alepoň jeden svůj vrchol v pokrytí, říkáme potom, že tento vrchol danou hranu pokrývá.) Problém VERTEX-COVER je dá následovně: vstupem je dvojice (G, k), kde G je neorientovaný graf a k je přirozené číslo. Odpověd je ANO, pokud exituje vrcholové pokrytí grafu G s k nebo méně uzly. V opačném případě je odpověd NE. VERTEX-COVER jistě patří do NP, za certifikát může brát libovolné vrcholové pokrytí s nějvýše k uzly. Verifikátor pro daný graf a množinu vrcholů pouze zkontroluje, zda-li je množina vrcholů skutečně pokrytím a zda obsahuje nejvýše k prvků. To lze provést v polynomickém čase. Věta 7. 3SAT K VERTEX-COVER Důkaz. Necht ϕ = C 1 C n je formule v 3CNF (tj. je to instance 3SAT) obsahující proměnné x 1, x 2,..., x m. Sestavíme graf G a určíme číslo k. G sestavíme tak, že pro každou proměnnou sestavíme podgraf, pro každou klausuli sestavíme podgraf a pak tyto podgrafy vhodně spojíme. Každý uzel v grafu označíme některým literálem vyskytujícím se ve ϕ. Pro proměnnou x i vytvoříme graf (typu A): x 1 x 1 Pro klausuli (l 1 l 2 l 3 ) vytvoříme graf (typu B): 5

l 3 l 1 l 2 Každý vrchol z grafu typu A spojíme se všemi vrcholy z grafů typu B, které jsou popsány stejným literálem. Hodnotu k nastavíme rovnu m + 2n. Konstrukci grafu lze provést v polynomickém čase. Zbývá dokázat její správnost. Předpokládejme, že ϕ je splnitelná, tj. že existují ohodnocení proměnných takové, že je pravdivá. Na základě tohoto ohodnocení sestavíme množinu vrcholů C sestaveného grafu takovou, že bude pokrytím a bude obsahovat k uzlů. 1. Z grafů typu A vložíme do C vrcholy, které odpovídají pravdivým literálům. 2. V grafech typu B vždy alespoň jeden vrchol odpovídá pravdivému literálu, který jsme vybrali v kroku 1 (protože ϕ je pravdivá). Do pokrytí vložíme zbývající dva vrcholy. Množina C nyní obsahuje právě k prvků. Je to i pokrytí, protože 1. zajistí, že hrany v grafech typu A a hrany vedoucí z pravdivých literálů v grafech typu A do vrcholů v grafech typu B jsou pokryty; 2. pak zajistí, že hrany v grafech typu B a zbývající hrany mezi grafy typu A a grafy typu B jsou pokryty. Předpokládejme nyní, že v grafu G existuje vrcholové pokrytí C, které neobsahuje více než k vrcholů. Ze struktury grafu plyne, pokrytí musí obsahovat alespon jeden vrchol z každého grafu typu A (aby byla pokryta hrana v takovém grafu) a alespoň dva vrcholy z každého grafu typu B (aby byly pokryty všechny tři hrany v takovém grafu). Odtud vidíme, že C musí obsahovat právě k vrcholů. Sestavíme ohodnocení proměnných, které splní formuli ϕ. Z každého grafu typu A patří do pokrytí jeden uzel. Podíváme se literál tohoto uzlu a ohodnotíme jemu příslušnou proměnnou tak, aby literál byl splněn (je-li literál pozitivní, ohodnotíme proměnnou na pravdu, je-li negativní, ohodnotíme proměnnou na nepravdu). Zbývá ukázat, že každá z klausulí formule ϕ obsahuje alespoň jeden pravdivý literál. To plyne z následující úvahy: Z každého grafu typu B vedou do grafů typu A tři hrany. Dvě z těchto hran jsou pokryty vrcholy z grafu typu B, zbývající hrana musí být pokryta vrcholem z grafu typu A. Tento vrchol však odpovídá splněnému literálu a klausule, podle které jsme daný graf typu B zkonstruovali, tento literál obsahuje. 6