Polynomiální redukce

Polynom redukce je nástroj pro teoretické informatiky , konkrétně na teorii složitosti . Jedná se o zvláštní třídu redukcí, která je obzvláště důležitá, zejména pro problém P = NP .

Definice

V rámci formálních jazyků pro rozhodovací problémy říkáme, že jazyk je redukovatelný v polynomiálním čase na jazyk (označený ), pokud v polynomiálním čase existuje vypočítatelná funkce pro všechny , pokud a pouze pokud . Voláme funkci na funkci redukce a polynomiální algoritmus, který počítá se nazývá algoritmus redukce .

Vztah mezi rozhodovacím problémem a jeho přidruženým jazykem

Kódování

Buď problém s rozhodnutím . Případy tohoto problému jsou abstraktní objekty v tom smyslu, že jejich definice je čistě matematická. Aby bylo možné implementovat tento problém, musí být ale zastoupeny ve formě srozumitelné programu. Zde přichází pojem kódování . Definujeme funkci kódování rozhodovacího problému jako injektivní aplikaci, která se přidruží k sadě abstraktních instancí prvku . Když tedy programátor kóduje problém, proměnné představující instance problému jsou přeloženy ( překladačem v případě statických jazyků, tlumočníkem v případě dynamických jazyků) do binárního jazyka. Kódování je tedy způsob přechodu od abstraktního problému ke konkrétnímu problému. Ve skutečnosti, pokud řešením rozhodnutí problém abstraktní Například je -li řešení instance konkrétní problém je . Existuje však malý problém: je možné, že prvky typu neodpovídají žádné instanci problému (tj. Nemají předchůdce ). Pro usnadnění budeme předpokládat, že jakýkoli takový řetězec je obrázek 0.

Vztah mezi rozhodovacími problémy a algoritmy, které je řeší

Jazyk akceptován
  • Jazyk přijímaný algoritmem je sada řetězců přijímaných algoritmem, tj .
Jazyk rozhodl
  • Jazyk je rozhodnuto algoritmem pokud existuje řetězec bitů, které nepatří k odmítnut .
Třída a jazyk složitosti

Můžeme neformálně definovat třídu složitosti jako sadu jazyků, jejichž členství je určeno mírou složitosti algoritmu, který určuje, zda daný řetězec patří do jazyka . Třídu složitosti lze tedy definovat jako množinu jazyků, o nichž rozhoduje polynomiální časový algoritmus.

Užitečnost

Pojem redukce polynomiálního času se používá v rámci teorie složitosti algoritmů k umožnění klasifikace problémů. Skutečně umožňuje ukázat formálním způsobem a v polynomiálním čase, že problém je přinejmenším stejně obtížný jako jiný: pokud pak není obtížnější než , nebo řečeno teoretičtěji: a má stejnou třídu složitosti .

Příklady redukce

  • Kryté na dílčí součet
  • Klikněte na 3-SAT
  • SAT až 3-SAT
  • Dílčí součet na SAT
  • 3-SAT kliknout
  • 3-SAT na vrcholový kryt

Poznámky a odkazy

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">