Vyčíslitelnost a složitost výpočtů

NP-úplné problémy

Shrnutí kapitoly

Redukce je základním nástrojem pro porovnání složitosti dvou problémů. S redukcí jsme se už setkali v souvislosti s vyčíslitelností problémů. Víme, že redukce konstruuje z případů jednoho problému ekvivalentní případy druhého problému. V této kapitole navíc požadujeme, aby tato konstrukce proběhla v polynomiálním čase. Redukce je základem pro definici třídy tzv. C-úplných problémů, kde C je složitostní třída. 

Nejdůležitější fakta k zapamatování (C je některá z tříd P, NP, EXPTIME, NEXPTIME, PSPACE):

  • A ≤ B intuitivně znamená, že problém B je nejméně tak těžký jako A
  • pokud A ≤ B, a problém B patří do třídy C, tak i problém A patří do třídy C
  • každý C-těžký problém je nejméně tak těžký jako kterýkoli problém ve třídě C
  • C-těžký problém ale sám do třídy C patřit nemusí (může patřit do větší třídy obsahující C)
  • pokud A ≤ B, a A je C-těžký, tak i B je C-těžký
  • pokud C-těžký problém patří do třídy C, tak je C-úplný
  • C-úplné problémy jsou ty nejtěžší ve třídě C, a jsou všechny vzájemně redukovatelné
  • když chceme ukázat o nějakém problému B ze třídy C, že je C-úplný, tak stačí vzít vhodný C-úplný problém A a sestrojit redukci A ≤ B

Největší praktický význam má třída NP-úplných problémů, kam patří velké množství v praxi řešených problémů (optimalizační, dopravní, síťové...). Nejznámějšími reprezentanty jsou problém SAT a HAM (známý též jako problém obchodního cestujícího). Příklady dalších NP-úplných problémů naleznete v tématu "Základní složitostní třídy".

Všechny NP-úplné problémy se v praxi považují za nezvládnutelné - na počítači jsme většinou schopni najít jen jejich přibližná řešení, přesná řešení jsou příliš výpočetně náročná.

Studijní materiály

Skripta Černá, kapitola 5. Důkazy vět a lemmat nejsou požadovány. Studenti ale musejí znát:

  • Veškeré definice, věty a lemmata vztahující se obecně k redukci a úplnosti (začátky kapitol 5.1 a 5.2), umět je vysvětlit a použít při řešení příkladů.
  • Definice a neformální popisy (umět vysvětlit) problémů SAT, HAM, CNF.
  • Definice a neformální popisy problémů k-KLIKA, k-VRCHOLOVÉ POKRYTÍ a k-NEZÁVISLÁ MNOŽINA a umět sestrojit všechny jejich vzájemné redukce (i ty, co nejsou ve skriptech).
  • Definice a neformální popisy problémů H-BATOH, SUBSET-SUM a PARTITION a umět sestrojit všechny jejich vzájemné redukce (i ty, co nejsou ve skriptech), s výjimkou redukcí H-BATOH ≤ SUBSET-SUM a H-BATOH ≤ PARTITION.


Skripta Wiedermann, kapitoly 5.2 – 5.6.