Úvodní stránka | Tato stránka v originále

Booleovský satisfiability problém

Booleovský satisfiability problém (seděl) je problém rozhodnutí zvážil to v teorii složitosti. Příklad problému je definován booleovským výrazovým psaným používáním jen a, nebo, ne, proměnné, a parentheses. Otázka je: daný výraz, je tam nějaký převod Truea a Falešné hodnoty k proměnným, které budou dělat celý výraz pravdivý?

V matematice, vzorec logiky propositional je řekl, aby byl satisfiable jestliže pravda-hodnoty moci být přiřazen k jeho uvolnit proměnné jistým způsobem to vytvoří formuli pravdivý. Třída satisfiable propositional rovnic je NP-kompletní, jak je to jeho varianty 3-satisfiability. (jiné varianty, takový jak 2-satisfiability a Horn-satisfiability, moci být řešen účinnými algoritmy.)

Propositional satisfiability problém (seděl), který je dáván propositional rovnice má rozhodnout se zda nebo ne to je satisfiable, je centrální důležitosti v různých oblastech informatiky, včetně teoretické informatiky, algorithmics, umělé inteligence, designu hardwaru a ověření.

Tabulka s obsahem
1 složitost
2 omezení seděl
3 rozšíření seděl
4 algoritmy pro platit seděl
5 externích spojení

Složitost

Seděl je NP-kompletní. Ve skutečnosti, to bylo první známý NP- dokončit problém, jak dokázaný Stephen kuchařem v roce 1971. Problém zůstane NP- kompletní dokonce jestliže všechny výrazy jsou zapsány spojená normální forma s 3 proměnnými na klauzuli (3-CNF). Toto znamená výraz má tvar:

(x11 Nebo x12 Nebo x13) A
(x21 Nebo x22 Nebo x23) A
(x31 Nebo x32 Nebo x33) A...
kde každý x je proměnná, s nebo bez ne v předek toho a každá proměnná mohou vypadat jako rozmanité časy ve výrazu.

Omezení seděl

Seděl vypadá, že stane se snadnější jestliže rovnice jsou omezené na ty v disjunctive normální forma, kde každá klauzule je a proměnných (někteří s NOTs), a všechny klauzule jsou ORed spolu. Toto je protože takový rovnice je satisfiable iff je klauzule, která neobsahuje x a ne x, a toto může být kontrolováno v polynomial čase. Seděl také vypadá, že je snadnější jestliže množství literals v klauzuli je omezeno k 2, ve kterém případě problém je volal 2SAT. Také tento problém může být řešen v polynomial čase. Poznamenat, že toto se neukáže jako ten DNF-seděl a 2SAT nejsou NP- kompletní ale jediný to jestliže oni jsou pak Třídy složitosti P a NP být se rovnat.

3-satisfiability

To je zvláštní případ k- satisfiability (k- seděl) nebo jednoduše satisfiability (seděl), když každá klauzule obsahuje u nejvíce k = 3 literals.

například:

E = (x1 nebo ~ x2 nebo ~ x3) a (x1 nebo x2 nebo x4)
E má dvě klauzule (označil parentheses), čtyři literals (x1, x2, x3, x4), a k = 3 (tři literals na klauzuli).

Řešit tento příklad problému rozhodnutí my musíme stanovit zda tam je hodnota pravdy (pravdivý nebo nepravdivý) my můžeme zadat každému literals (x1 přes x4) takový že celý výraz je pravdivý. V tomto případě, tam je takový domácí cvičení (například, x1 = pravdivý, x2 = pravdivý, x3 = pravdivý, x4 = pravdivý), tak odpověď na tento příklad je ano. Jestliže tam byl žádný takový úkol, odpověď byla by ne.

Protože k-seděl (obecný případ) sesadí na 3-seděl, a 3-seděl je znán být NP-kompletní, to může být používáno dokázat, že jiné problémy jsou také NP-kompletní. An příklad problému kde tato metoda byla použitá je “klika”.

Rozšíření seděl

Problém satisifiability vypadá, že stane se více těžký jestliže my dovolíme quantifiers takový jak “pro všechny” a “tam existuje” to svázat booleovské proměnné. Příklad takový výraz byl by:

V tomto případě problém je volán QBF (počítal booleovskou rovnici) a to může být ukazováno být PSPACE-kompletní. To je široce myšlenka být hodně usilovněji než NP- kompletní, ačkoli to přesto nebylo dokázané.

Důkaz NP-úplnost

My dáme tady nástin důkazu NP-úplnost. Dokázat, že to sedělo je NP-kompletní my musíme ukázat to

  1. Seděl je v NP, a
  2. všichni jiné NP problémy mohou být zredukované na to v polynomial čase.

Nejprve, poznamenat, že to jde snadno ověřit ano odpovědět: prostě se zapojovat do daného souboru hodnot proměnné a vidět jestliže oni dělají výraz pravdivý. Proto problém je v NP.

Příští, rozpoznat libovolný problém X to je v NP. Samozřejmě, tam muset být algoritmus pro zkontrolování potvrzení pro ano odpovídá X v polynomial čase. Daný takový algoritmus to je možné sestrojit polynomial-algoritmus času to, daný velikost certifikátu, buduje booleovský obvod to je polynomially velké na certifikátovou velikost a se rozhodne zda jeho vstup je binární kódování platného certifikátu nebo ne. Tento obvod může pak být změněn dalším polynomial-algoritmus času do rovnocenné booleovské rovnice to je ještě polynomially velké na certifikátovou velikost. To pak si myslí, že tato rovnice je satisfiable iff je platný certifikát, který znamená, že my jsme redukovali originální problém k seděl.

Algoritmy pro platit seděl

Tam jsou dvě třídy high-performance algoritmy pro řešit příklady seděl v praxi: moderní varianty David-Putnam-Loveland algoritmus, takový jako zchaff a stochastic místní vyhledávací algoritmy, takový jako WalkSAT. Zvláště v designu hardwaru a ověření aplikace, satisfiability a jiné logické vlastnosti dané propositional rovnice jsou často rozhodnuti založený na reprezentaci rovnice jako binární rozhodnutí diagram (BDD).

Propositional satisfiability má různá zevšeobecňování, včetně satisfiability pro počítal booleovské rovnice, pro nejprve- a sekunda-objednávat logiku, omezovací uspokojivé problémy, 0-1 programování celého čísla a maximum satisfiability.

Mnoho jiné problémy rozhodnutí, takový jako graf problémy zbarvení, problémy plánování a sepisující problémy mohou být poněkud snadno zakódovaní do seděl.

Srovnat s: problém rozhodnutí

Externí odkazy