GeeksforGeeks

byli Jsme psát o efektivní algoritmy pro řešit složité problémy, jako nejkratší cesta, Euler graf, minimum spanning tree, etc. To všechno byly příběhy o úspěchu návrhářů algoritmů. V tomto příspěvku jsou diskutovány neúspěšné příběhy informatiky.

mohou být všechny výpočetní problémy vyřešeny počítačem? Existují výpočetní problémy, které nelze vyřešit algoritmy ani s neomezeným časem. Například Turing zastavení problém (vzhledem k tomu, program a vstup, zda se program nakonec zastaví při spuštění s tímto vstupem, nebo poběží navždy). Alan Turing dokázal, že obecný algoritmus pro řešení problému zastavení pro všechny možné páry vstupů programu nemůže existovat. Klíčovou součástí důkazu je, že Turingův stroj byl použit jako matematická definice počítače a programu(problém zastavení zdroje).
stav NP kompletní problémy je další selhání příběh, NP kompletní problémy jsou problémy, jejichž stav není znám. Žádný polynomiální algoritmus nebyl dosud objeven pro žádný NP úplný problém, ani nikdo dosud nebyl schopen prokázat, že pro žádný z nich neexistuje polynomiální algoritmus. Zajímavé je, že pokud některý z NP úplných problémů lze vyřešit v polynomiálním čase, pak všechny z nich mohou být vyřešeny.

Co jsou problémy NP, P, NP-complete a NP-Hard?
P je množina problémů, které lze řešit deterministickým Turingovým strojem v polynomiálním čase.

NP je množina rozhodovacích problémů, které lze řešit nedeterministickým Turingovým strojem v polynomiálním čase. P je podmnožina NP (jakýkoli problém, který lze vyřešit deterministickým strojem v polynomiálním čase, lze vyřešit také nedeterministickým strojem v polynomiálním čase).
Neformálně, NP je umístěný rozhodnutí problémy, které lze vyřešit v polynomiálním čase prostřednictvím „Štěstí Algoritmus“, magické algoritmus, který vždy dělá správné hádat mezi danou sadu možností (Zdroj Odkaz 1).

NP-úplné problémy jsou nejtěžší problémy v sadě NP. Rozhodovací problém L je NP-úplný, pokud:
1) L je v NP (jakékoli dané řešení pro NP-kompletní problémy lze rychle ověřit, ale neexistuje účinné známé řešení).
2) Každý problém v NP je redukovatelný na L v polynomiálním čase (redukce je definována níže).

problém je NP-tvrdý, pokud následuje vlastnost 2 uvedená výše, nemusí následovat Vlastnost 1. Proto je NP-Complete set také podmnožinou NP-Hard set.

rozhodnutí vs optimalizační problémy
NP-úplnost platí pro oblast rozhodovacích problémů. Bylo to nastaveno tímto způsobem, protože je snazší porovnat obtížnost problémů s rozhodováním než problémy s optimalizací. Ve skutečnosti, i když, být schopen řešit rozhodovací problém v polynomiálním čase bude často nám umožňují řešit odpovídající optimalizační problém v polynomiálním čase (pomocí polynomiální počet volání na rozhodovací problém). Takže diskuse o obtížnosti problémů s rozhodováním je často skutečně ekvivalentní diskusi o obtížnosti problémů s optimalizací. (Zdroj Č. 2).
zvažte například problém s krytem vrcholu (vzhledem k grafu zjistěte minimální velikost sady vrcholů, která pokrývá všechny hrany). Je to problém optimalizace. Odpovídající rozhodovací problém je, vzhledem k neřízenému grafu G a k, existuje vrcholový kryt velikosti k?

Co je redukce?
Nechť L1 a L2 jsou dva rozhodovací problémy. Předpokládejme, že algoritmus A2 řeší L2. To znamená, že pokud y je vstup pro L2, pak algoritmus A2 odpoví ano nebo ne v závislosti na tom, zda y patří do L2 nebo ne.
cílem je najít transformaci z L1 na L2 tak, aby algoritmus A2 mohl být součástí algoritmu A1 pro řešení L1.
redukce učení je obecně velmi důležitá. Například, pokud máme funkce knihovny k vyřešení určitého problému a pokud můžeme snížit nový problém na jeden z vyřešených problémů, ušetříme spoustu času. Vezměme si za příklad problém, kdy máme najít minimální produktu cesty v daném grafu, kde produkt cesta je násobení ohodnocení hran na cestě. Pokud máme kód pro Dijkstra algoritmus najít nejkratší cestu, můžeme vzít log všech hmotností a použít Dijkstra algoritmus najít minimální cestu produktu, spíše než psát nový kód pro tento nový problém.

Jak dokázat, že daný problém je NP kompletní?
z definice NP-complete se zdá nemožné dokázat, že problém L je NP-Complete. Podle definice, vyžaduje to, abychom ukázali, že každý problém v NP je polynomiální čas redukovatelný na L. naštěstí, existuje alternativní způsob, jak to dokázat. Cílem je vzít známý NP-úplný problém a snížit jej na L. Pokud polynomiální redukce je možné, můžeme dokázat, že L je NP-Úplné, tranzitivita snížení (je-Li NP-Úplný problém, je redukovatelné na L v polynomiálním čase, pak všechny problémy jsou redukovatelné na L v polynomiálním čase).

jaký byl první problém prokázán jako NP-kompletní?
musí existovat nějaký první NP-úplný problém prokázaný definicí NP-úplných problémů. SAT (splnitelnost Booleovských problém) je prvním NP-Úplný problém, dokazuje Vařit (Viz CLRS kniha pro důkaz).

vždy je užitečné vědět o NP-úplnosti i pro inženýry. Předpokládejme, že budete požádáni o napsání efektivního algoritmu k vyřešení mimořádně důležitého problému pro vaši společnost. Po hodně přemýšlení, můžete přijít pouze exponenciální časový přístup, který je nepraktický. Pokud nevíte o NP-úplnosti, můžete jen říci, že jsem nemohl přijít s efektivním algoritmem. Pokud víte o NP-úplnosti a dokážete, že problém jako NP-kompletní, můžete hrdě říci, že polynomiální Časové řešení pravděpodobně neexistuje. Pokud je možné polynomiální Časové řešení, pak toto řešení řeší velký problém informatiky, o který se mnoho vědců snaží roky.

brzy budeme diskutovat o více NP-úplných problémech a jejich důkazu pro NP-úplnost.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *