Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
Třída P (PTIME)
2
Třída NP (NPTIME) U mnoha – a bohužel i velmi praktických – problémů ale neznáme algoritmus, který by pracoval v polynomiálně omezeném čase. Jde například o problém barvení grafu, hledání okružní cesty, úlohy celočíselného programování, celou řadu dalších optimalizačních, rozvrhovacích a plánovacích úloh, … I přes velké úsilí nebylo dosaženo žádného pozitivního výsledku. Je dokonce možné (a většina odborníků je dnes toho názoru), že žádný takový algoritmus ani neexistuje.
3
Příklad1 Příklad1: Existuje v zadaném orientovaném grafu G Hamiltonova cesta (prochází každým vrcholem právě jednou) spojující dva zadané vrcholy? HPATH={G,s,t| G je orient. graf s Hamilt. cestou mezi vrcholy s a t}.
4
Příklad1 Řešení můžeme hledat prozkoumáním všech možností (nebo naopak dokázat, že Hamiltonova cesta neexistuje), ale příslušný algoritmus má exponenciální složitost. Neznáme žádný algoritmus řešící tento problém v polynomiálně omezeném čase.
5
Příklad1 Pokud nám ale někdo řešení poskytne (ať už jej získal jakkoliv – uhodnutím, použitím heuristiky, nebo použitím algoritmu prohledávajícího všechny možnosti), můžeme se snadno přesvědčit, že řešení existuje a je správné. Ověření správnosti řešení (verifikovatelnost) je proveditelné v polynomiálně omezeném čase.
6
Příklad2 Příklad2: Rozmístěte n dam na šachovnici o rozměru nxn tak, aby se vzájemně neohrožovaly. Na standardní šachovnici o rozměru 8x8 existuje celkem 96 různých řešení.
7
Příklad2 Řešení můžeme hledat prozkoumáním všech možností (backtracking), ale příslušný algoritmus má exponenciální složitost. Neznáme žádný úplný algoritmus řešící tento problém v polynomiálně omezeném čase. Pokud nám ale někdo řešení poskytne, můžeme se snadno přesvědčit, jestli je správné. Ověření správnosti řešení (verifikovatelnost) je proveditelné v polynomiálně omezeném čase.
8
Verifikovatelnost řešení – třída NP
DEF: Třída NP (NPTIME) je třída jazyků, pro které existuje verifikační algoritmus pracující v polynomiálně omezeném čase. Název NP (resp. NPTIME) je odvozen od jiné definice stejné třídy problémů, která je ale založena na nedeterministických Turingových strojích. Věta: Jazyk patří do třídy NP (NPTIME) právě tehdy, když je rozhodnutelný v polynomiálně omezeném čase nějakým nedeterministickým Turingovým strojem.
9
Třída NP Důkaz: => Jestliže existuje verifikační algoritmus pracující v polynomiálně omezeném čase nk, potom lze nedeterministicky zkoušet všechny řetězce s délkou nejvýše nk a na základě výpočtu odpovídajícím způsobem rozhodnout. <= Jestliže je L rozhodnutelný v polynomiálně omezeném čase nějakým NTS, potom existuje posloupnost „rozhodnutí“ o délce nejvýše nk, kterou můžeme použít pro odpovídající verifikační algoritmus pracující v polynomiálně omezeném čase.
10
Třída NP (NPTIME)
11
Problémy z třídy NP Příklad1: Existence k-kliky v neorientovaném grafu G (klika o velikosti k je úplný graf s k vrcholy) je problém patřící do třídy NP. CLIQUE={G,k| G je neorientovaný graf obsahující kliku o velikosti k}
12
Problémy z třídy NP Daný graf obsahuje kliku o velikosti 5.
13
Problémy z třídy NP Příklad2: Je možné množinu x1,x2,…, xn-1, xn, rozdělit na dvě podmnožiny tak, aby součet obou podmnožin byl stejný (spravedlivé rozdělení kořisti). Jde o speciální případ tzv. problému součtu podmnožiny SUBSET-SUM={S,k| S={x1,x2,…,xn} a {y1,y2,…,ym}S a yi=k } Stačí položit k=½xi Pokud nám někdo ukáže řešení, jistě jej umíme verifikovat v polynomiálně omezeném čase.
14
Doplňkové problémy Doplňkové problémy k problémům CLIQUE a SUBSET-SUM nepatří do třídy NP, protože je těžší ověřit, že něco neexistuje než ověřit, že příslušná vlastnost platí nebo existuje. Pro problémy tohoto typu definujeme třídu coNP (coNPTIME – doplňkové,komplementární k NP) Nevíme ale jistě, zda NP coNP
15
Vztah P a NP Zatímco problémy z třídy P jsou „rychle“ rozhodnutelné, problémy z NP jsou pouze „rychle“ verifikovatelné. Nevíme zda P=NP nebo P NP a jedná se o jednu z největších nevyřešených otázek teoretické informatiky (odměna 1 mil. USD za vyřešení) ??? nebo NP P=NP P
16
NP-úplnost Důležitý výsledek přinesl Stephen Cook v roce 1970, který zjistil, že obtížnost některých problémů z třídy NP je stejná v tom smyslu, že nalezení „rychlého“ algoritmu pro řešení kterékoliv z těchto úloh, by znamenalo nalezení „rychlého“ algoritmu pro všechny úlohy z této specifické třídy. Myšlenka: Pokud bychom uměli „rychle“transformovat jednu úlohu na úlohu jinou, kterou lze „rychle“ vyřešit, bylo by možné „rychle“ vyřešit i úlohu první. Původní úloha Úloha nová Řešení
17
NP-úplnost DEF: Mějme problém P1: ** a problém P2: **. Polynomiálním převodem (redukcí) P1 na P2 rozumíme algoritmus realizující zobrazení R: ** takové, že pro všechny vstupy w* platí P1(w)=P2(R(w)). Jinými slovy – pokud umíme efektivně řešit problém P2, potom problém P1 můžeme efektivně vyřešit tím,že jej („rychle“) převedeme na P2. I naopak – pokud lze nějaký známý těžký problém převést v polynomiálně omezeném čase na náš problém, je zřejmé, že jsme získali dostatečné alibi (k řešení problému jsme se sice nijak nepřiblížili, ale víme, že to bude těžké).
18
NP-úplnost DEF: Jazyk L je NP-úplný (NP-complete), pokud:
1. L náleží do třídy NP 2. Každé ANP je v polynomiálně omezeném čase převoditelné na L. Věta: Jestliže L je NP-úplný a současně LP, potom P=NP. Důkaz: zřetelně přímo z výše uvedené definice Důsledek: Řešení kteréhokoliv problému z třídy NP-úplných problémů v polynomiálně omezeném čase, by znamenalo nalezení „rychlého“ algoritmu pro řešení všech.
19
NP-úplnost Problém splnitelnosti logických formulí (SAT=satisfiability problem): je dána logická formule F(x1,.., xn) složená z logických proměnných x1,.., xn a logických operátorů AND, OR a NOT. Cílem je rozhodnout, zda je možné najít takové pravdivostní hodnoty logických proměnných x1,.., xn, pro které je formule F(x1,.., xn) splněna (pravdivá). Příklad: F(x1,x2,x3)=(x1x2x3)(x1x3)(x1 x2x3) Řešení: například x1=1, x2= 1, x3=0
20
NP-úplnost Věta (Cook): Problém splnitelnosti logických formulí (SAT=satisfiability problem) je NP-úplný. Důkaz: 1. dokázat, že SAT je NP je snadné 2. obtížnější je dokázat redukovatelnost libovolného ANP v polynomiálně omezeném čase na SAT. Je nutné k libovolnému slovu w konstruovat logickou formuli tak, že je splnitelná, když w je přijato a naopak. ANO w SAT Převodník NE
21
NP-úplnost Důkaz NP-úplnosti problému splnitelnosti logických formulí byl průlomem v teorii složitosti: 1. Pokud bychom uměli „rychle“ řešit SAT, máme rychlý algoritmus pro všechny problémy z NP Libovolná úloha z NP SAT Řešení Polynomiální („rychlý“) převod na SAT ??? „rychlý“ ??? algoritmus pro řešení SAT Složením vznikne polynomiální („rychlý“) algoritmus pro libovolnou úlohu z NP
22
Další NP-úplný problém
NP-úplnost Důkaz NP-úplnosti problému splnitelnosti logických formulí byl průlomem v teorii složitosti: 2. Pokud polynomiálně převedeme SAT na jiný problém z NP, je tento problém automaticky také NP-úplný (je-li každý problém z NP polynomiálně redukovatelný na SAT a SAT je polynomiálně redukovatelný na LNP, potom nutně L je také NP-úplný) Důsledkem toho bylo dokázáno, že mnoho dalších problémů je NP-úplných Libovolná úloha z NP SAT Další NP-úplný problém
23
NP-úplné problémy Příklady NP-úplných problémů:
Existence k-kliky v neorientovaném grafu G Problém součtu podmnožiny, problém spravedlivého rozdělení kořisti Problém obchodního cestujícího Problém barevného čísla grafu, nejdelší cesta v grafu Problém batohu Celočíselné programování Různé rozvrhovací, plánovací a další optimalizační úlohy
24
Otevřená otázka Pravděpodobně platí: Ale zatím nikdo nevyloučil ani možnost: NP P NPC P=NP=NPC
25
Problémy z NP Praktický důsledek:
Protože neznáme dostatečně rychlé algoritmy pro řešení problémů z NP a řešení těchto problémů metodou úplného prohledávání všech možností je v praxi již pro relativně malý rozměr úlohy nezvládnutelné, musíme hledat řešení částečná či přibližná Musíme se spokojit s určitou heuristikou, která nám v rozumném čase umožní nalézt přijatelné řešení
26
Heuristiky pro SAT Problém splnitelnosti logických formulí:
Docela dobrých výsledků lze dosáhnout použitím algoritmu založeném na lokálním prohledávání. Algoritmus označovaný jako GSAT začíná s náhodně vygenerovaným pravdivostním ohodnocení proměnných. Potom provádí lokální prohledávání tím způsobem, že postupně mění pravdivostní ohodnocení každé z proměnných a přitom si vede záznamy o tom, kolik klauzulí zůstalo po každé z těchto změn nesplněných. Po vyzkoušení změny pravdivostní hodnoty u každé z n proměnných je původní řešení nahrazeno řešením novým, které má z právě vygenerovaných řešení nejmenší počet nesplněných klauzulí.
27
Heuristiky pro SAT Problém splnitelnosti logických formulí:
Tento iterativní proces se opakuje tak dlouho, dokud není nalezeno takové pravdivostní ohodnocení proměnných x1,.., xn, pro které je formule F(x1,.., xn) splněna, nebo dokud se nedosáhne maximálně povoleného a předem určeného počtu iterací. Jestliže se během daného počtu iterací řešení problému nepodaří nalézt, vygeneruje se náhodně nové počáteční řešení a celý algoritmus se znovu opakuje. Kvůli konečnosti algoritmu je samozřejmě i tento počet nových startů omezen vhodnou konstantou.
28
Heuristiky pro SAT Problém splnitelnosti logických formulí:
GSAT byl později mnohokrát upravován a vylepšován, přičemž dle experimentálních srovnání zřejmě nejlepších výsledků dosáhl J. Frank. Jím navržený algoritmus, který je v literatuře označován jako WGSAT, zdokonaluje původní GSAT tak, že každé klauzuli je přiřazena jistá váha, která se zvětšuje, pokud daná klauzule zůstává nesplněná. Často nesplněné klauzule tak postupně získávají větší váhu než klauzule, které jsou splnitelné snadněji, a každé řešení, které splňuje problematičtější klauzule, je díky jejich váze preferováno.
29
Příklad – plnění kontejnerů
Problém určení minimálního počtu kontejnerů : (bin packing problem) Úkolem je transportovat na určené místo množinu předmětů, které mají různou velikost, přičemž tyto předměty budou přepravovány v kontejnerech známé velikosti. Řešení problému vyžaduje umístit všechny předměty do kontejnerů tak, abychom k této přepravě použili co nejmenší počet kontejnerů. 1 2 3
30
Příklad – plnění kontejnerů
Předpokládejme existenci maximálně m kontejnerů se stejnou kapacitou C > 0 a nechť y[i] pro i=1,..,m jsou binární proměnné, které nabývají hodnoty y[i] = 0, pokud je i-tý kontejner použit pro přepravu zboží, a y[i] = 1 v ostatních případech. Současně předpokládejme množinu n objektů spolu s jejich velikostí vyjádřenou parametrem W[j] > 0 pro j=1,..,n. Dále zavedeme binární proměnné x[i,j] pro i=1,..,m a j=1,..,n takové, že x[i,j] = 1, právě když j-tý objekt je uložen v i-tém kontejneru a x[i,j] = 0 ve všech ostatních případech.
31
Příklad – plnění kontejnerů
Cílem je nalézt nejmenší počet kontejnerů pro přepravu uvažovaného zboží, to jest maximalizovat funkci v rámci soustavy omezujících podmínek i=1,..,m j=1,..,n i=1,..,m, j=1,..,n.
32
Heuristiky pro plnění kontejnerů
Zřejmě nejjednodušší heuristika je založena na myšlence, že první předmět se vloží do prvního kontejneru a potom se vkládají postupně předměty s číslem 2 až n takovým způsobem, že kdykoliv se i-tý předmět nemůže vejít do právě plněného kontejneru, jeho plnění je uzavřeno, vezme se kontejner nový, do kterého se vloží i‑tý předmět a pokračuje se dále s předměty číslo i+1 až n. 1 2 3
33
Heuristiky pro plnění kontejnerů
Právě popsaná heuristika bývá v anglické literatuře označována jako next-fit (NF). Je-li I je libovolná instance problému určení minimálního počtu kontejnerů a nechť OPT(I) je počet kontejnerů použitý v optimálním řešení instance I, potom lze dokázat, že počet kontejnerů, který bude použit v řešení získaném pomocí heuristiky NF je shora omezen na základě nerovnosti NF(I)2OPT(I), neboli nebude nikdy větší, než dvojnásobek optimálního počtu kontejnerů.
34
Heuristiky pro plnění kontejnerů
Heuristika next-fit (NF) může snadno vést k nehospodárnému využití kontejnerů:
35
Heuristiky pro plnění kontejnerů
Lepších výsledků lze dosáhnout použitím heuristiky first-fit (FF), kdy narozdíl od výše uvedeného postupu se jednotlivé kontejnery neuzavírají dokud nejsou umístěny všechny předměty. Při vkládání i-tého předmětu se proto postupně algoritmus pokouší umístit tento předmět do kteréhokoliv z již použitých kontejnerů a teprve pokud se ukáže, že to není možné, vezme se nový kontejner a uvažovaný předmět se do něho vloží. Lze dokázat, že počet kontejnerů, který bude použit v řešení získaném pomocí heuristiky FF je shora omezen nerovností
36
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit (FF):
37
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit (FF):
38
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit (FF):
39
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit (FF):
40
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit (FF):
41
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit (FF):
42
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit (FF):
43
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit (FF): - v tomto příkladu vede k použití tří kontejnerů (a poslední dva nejsou dobře využité)
44
Heuristiky pro plnění kontejnerů
Příkladem velice úspěšné heuristiky je takzvaný first-fit descending (FFD) algoritmus, který je postaven na myšlence, že větší předměty je obtížné umístit do již částečně obsazených kontejnerů, a proto je rozumné se jimi zabývat co nejdříve. K tomu stačí uspořádat předměty sestupně dle jejich velikosti tak, že platí W[1] W[2] .... W[n]. Použije-li se k umístění takto uspořádaných předmětů výše popsaná heuristika first‑fit (FF), potom vznikne algoritmus, u kterého je možné garantovat, že počet kontejnerů, který bude použit v řešení získaném pomocí tohoto algoritmu, je shora omezen nerovností
45
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit descending (FFD):
46
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit descending (FFD):
47
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit descending (FFD):
48
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit descending (FFD):
49
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit descending (FFD):
50
Heuristiky pro plnění kontejnerů
Příklad použití heuristiky first-fit descending (FFD): - menší objekty vyplňují mezery v kontejnerech, čímž dochází k jejich lepšímu využití
51
Příklad – problém N dam Velmi úspěšné (i pro N v řádu milionů) jsou například různé stochastické algoritmy, které v náhodně vygenerovaném řešení provádějí výměny dam tak, aby příslušná výměna snížila počet konfliktů na šachovnici. Pokud není možné žádnou další výměnou odstranit zbývající konflikty, začne se znovu od začátku s náhodně vygenerovaným řešením. Účinná heuristika pro snížení počtu konfliktů v náhodně vygenerovaném řešení je založena na „odkládání“ řádků s dámami, které způsobují konflikt.
52
Příklad – problém N dam
53
Příklad – problém N dam
54
Příklad – problém obchodního cestujícího
Hladový algoritmus (greedy algorithm)– je založen na myšlence nalezení nejbližšího souseda k právě navštívenému městu. Algoritmus začne s náhodně vybraným městem x, najde k tomuto městu x nejbližší dosud nenavštívené město y a odtud pokračuje stejným způsobem dále do té doby, dokud nenastane situace, že množina nenavštívených měst je prázdná. Protože v tuto chvíli byla nutně navštívena všechna města právě jedenkrát, bylo nalezeno přípustné řešení této úlohy.
55
Příklad – problém obchodního cestujícího
Takto získané řešení se však může velmi podstatně lišit od řešení optimálního, protože celkem snadno nalezneme příklady, kdy za zdánlivě levné úseky cesty zvolené na začátku práce hladového algoritmu je zaplacena až příliš vysoká cena v jeho dalším průběhu. Začneme ve městě A. Hladový algoritmus: A‑B‑C‑D‑A : = 27 Optimální řešení: A‑C‑B‑D‑A : =19
56
Příklad – problém obchodního cestujícího
Další přístupy k řešení problému obchodního cestujícího: Lin-Kernighanův algoritmus - princip je založený na tzv. k-opt výměnách Příklad 2-opt výměny Genetické algoritmy Algoritmy na bázi mravenčích kolonií
57
Problémy z NP Praktický důsledek existence úloh patřících do třídy NP může být i pozitivní: Příklad: Problém, zda zadané přirozené číslo je složené patří do třídy NP. Složené číslo je součinem dvou přirozených čísel větších než jedna. COMPOSITES={x| x=pq, kde p,q N a současně p,q>1} Verifikační algoritmus: stačí znát jednoho z dělitelů daného čísla.
58
Problémy z NP POZOR: Přestože byl nalezen algoritmus, který pro dané přirozené číslo rozhodne, zda je prvočíslem v polynomiálně omezeném čase, tento algoritmus v případě složeného čísla neumí najít jeho dělitele (tento algoritmus neumí dané číslo faktorizovat). Pro problém faktorizace není znám algoritmus pracující v polynomiálně omezeném čase. Algoritmus s exponenciální složitostí je pro „dostatečně“ velké číslo prakticky nepoužitelný. Na tomto faktu je založena většina moderních šifrovacích algoritmů.
59
Časté omyly NP-úplné problémy jsou obtížně řešitelné, protože prostor potenciálních řešení je obrovský Ne: existuje mnoho potenciálních řešení pro problém minimální kostry grafu, a přesto ji umíme najít v polynomiálně omezeném čase Řešení NP-úplných problémů vyžaduje exponenciální čas Ne: to by znamenalo P NP, ale to zatím nebylo dokázáno Všechny instance NP-úplných problémů jsou obtížně řešitelné Ne: některé instance NP-úplných problémů umíme řešit v polynomiálním čase
60
Hierarchie jazyků Všechny jazyky Rekurzivně spočetné jazyky
doplněk ATM ETM .. Rekurzivně spočetné jazyky HALT ATM .. Rekurzivní jazyky ekviv. reg. výrazů Třída NP SAT .. Třída P Bezkontextové jazyky Regulární jazyky
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.