10.02.2019 Views

opora

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

KAPITOLA 7. SLOŽITOST 160<br />

7.5.1 Polynomiální redukce<br />

Definice 7.5.1 Polynomiální redukce jazyka L 1 nad abecedou Σ 1 na jazyk L 2<br />

nad abecedou Σ 2 je funkce f : Σ ∗ 1 → Σ ∗ 2, pro kterou platí:<br />

1. ∀w ∈ Σ ∗ 1 : w ∈ L 1 ⇔ f(w) ∈ L 2<br />

2. f je Turingovsky vyčíslitelná v polynomiálním čase<br />

Existuje-li polynomiální redukce jazyka L 1 na L 2 , říkáme, že L 1 se redukuje<br />

na L 2 a píšeme L 1 ≤ m P L 2.<br />

Věta 7.5.1 Je-li L 1 ≤ m P L 2 a L 2 je ve třídě P , pak L 1 je ve třídě P .<br />

Důkaz. Nechť M f je Turingův stroj, který provádí redukci f jazyka L 1 na L 2 a<br />

nechť p(x) je jeho časová složitost. Pro libovolné w ∈ L 1 výpočet f(w) vyžaduje<br />

nanejvýš p(|w|) kroků a produkuje výstup maximální délky p(|w|) + |w|. Nechť<br />

M 2 přijímá jazyk L 2 v polynomiálním čase daném polynomem q(x). Uvažujme<br />

Turingův stroj, který vznikne kompozicí → M f M 2 . Tento stroj přijímá jazyk L 1<br />

tak, že pro každé w ∈ L 1 udělá stroj → M f M 2 maximálně p(|w|) + q(p(|w|) + |w|)<br />

kroků, což je polynomem ve |w| a tedy L 1 leží ve třídě P .<br />

✷<br />

Příklad 7.5.1 Funkce f : {x, y} ∗ → {x, y, z} ∗ definována jako f(v) = vzv je<br />

polynomiální redukcí jazyka L 1 = {w|w je palindrom nad {x, y}} na jazyk L 2 =<br />

{wzw R |w ∈ {x, y} ∗ }.<br />

Předchozí věta nám dává praktickou možnost jak ukázat, že určitý jazyk je ve<br />

třídě P. Navíc, přeformulujeme-li tuto větu takto: „Jestliže platí L 1 ≤ m P L 2 a L 1<br />

neleží v P , pak L 2 také neleží v P “, můžeme dokazovat, že určitý jazyk neleží v<br />

P .<br />

7.5.2 Problém splnitelnosti - SAT problém<br />

Nechť V = {v 1 , v 2 , . . . , v n } je konečná množina Booleovských proměnných (prvotních<br />

formulí výrokového počtu). Literálem nazveme každou proměnnou v i nebo<br />

její negaci v i . Klauzulí nazveme výrokovou formuli obsahující pouze literály spojené<br />

výrokovou spojkou ∨ (nebo).<br />

Příklady klauzulí: v 1 ∨ v 2 , v 2 ∨ v 3 , v 1 ∨ v 3 ∨ v 2 .<br />

SAT-problém lze formulovat takto: Je dána množina proměnných V a množina<br />

klauzulí nad V . Je tato množina klauzulí splnitelná?<br />

Každý konkrétní SAT-problém můžeme zakódovat jediným řetězcem takto:<br />

Nechť V = {v 1 , v 2 , . . . , v n }, každý literál v i zakódujeme řetězcem délky m, který<br />

obsahuje samé 0 s výjimkou i-té pozice, která obsahuje symbol p, jde-li o literál<br />

v i , nebo n, jde-li o literál v i . Klauzuli reprezentujeme seznamem zakódovaných<br />

literálů oddělených symbolem /. SAT-problém bude seznam klauzulí uzavřených<br />

v aritmetických závorkách.<br />

Příklad 7.5.2 SAT-problém obsahuje proměnné v 1 , v 2 , v 3 a klauzule v 1 ∨ v 2 , v 2 ∨<br />

v 3 , v 1 ∨ v 3 ∨ v 2 bude reprezentována řetězcem: (p00/0n0)(0p0/00p)(n00/00n/0p0)<br />

Označme L SAT jazyk obsahující řetězce tohoto typu, které reprezentují splnitelné<br />

množiny klauzulí. Řetězec (p00/0n0)(0p0/00p)(n00/00n/0p0) je prvkem L SAT<br />

(v 1 = F, v 2 = F, v 3 = T ), na rozdíl od řetězce (p00/0p0)(n00/0p0)(p00/0n0)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!