T da p ptime
This presentation is the property of its rightful owner.
Sponsored Links
1 / 45

Třída P (PTIME) PowerPoint PPT Presentation


  • 61 Views
  • Uploaded on
  • Presentation posted in: General

Třída P (PTIME). DEF: P je třída všech jazyků, které jsou rozhodnutelné deterministickým Turingovým strojem v polynomiálním čase . Neboli: Třída P je velmi významná v teorii složitosti, protože:

Download Presentation

Třída P (PTIME)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


T da p ptime

Třída P (PTIME)

  • DEF:P je třída všech jazyků, které jsou rozhodnutelné deterministickým Turingovým strojem v polynomiálním čase. Neboli:

  • Třída P je velmi významná v teorii složitosti, protože:

    1. Je nezávislá na zvoleném výpočetním modelu (za podmínky, že model je polynomiálně ekvivalentní deterministickému Turingovu stroji)

    2. V podstatě odpovídá třídě úloh, které jsou realisticky řešitelné na počítači.

    Tedy: PTIME je robustní (ad 1) a má značný praktický význam (ad 2).


T da np nptime

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.


P klad1

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}.


P klad11

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.


P klad12

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.


P klad2

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í.


P klad21

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.


Verifikovatelnost e en t da np

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.


T da np

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.


T da np nptime1

Třída NP (NPTIME)

  • DEF:NP je třída všech jazyků, které jsou rozhodnutelné nedeterministickým Turingovým strojem v polynomiálním čase. Neboli:

  • Jistě platí

    PTIME  NPTIME

    ale nevíme, zda

    PTIME  NPTIME


Probl my z t dy np

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}


Probl my z t dy np1

Problémy z třídy NP

  • Daný graf obsahuje kliku o velikosti 5.


Probl my z t dy np2

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žinbyl 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.


Dopl kov probl my

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


Vztah p a np

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 ojednu 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


Np plnost

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í


Np plnost1

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é).


Np plnost2

NP-úplnost

  • DEF: Jazyk L je NP-úplný (NP-complete), pokud:

    1. L náleží do třídy NP

    2. Každé ANP je v polynomiálně omezeném čase převoditelné na L.

  • Věta: Jestliže L je NP-úplný a současně LP, 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.


Np plnost3

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)=(x1x2x3)(x1x3)(x1  x2x3)

  • Řešení: například x1=1, x2= 1, x3=0


Np plnost4

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 ANP 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


Np plnost5

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


Np plnost6

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 LNP, 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


Np pln probl my

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


Otev en ot zka

Otevřená otázka

Pravděpodobně platí:

Ale zatím nikdo nevyloučil ani možnost:

NP

P

NPC

P=NP=NPC


Probl my z np

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í


Heuristiky pro sat

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í.


Heuristiky pro sat1

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.


Heuristiky pro sat2

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.


P klad pln n kontejner

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ů.

3

1

2


P klad pln n kontejner1

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.


P klad pln n kontejner2

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

i=1,..,m, j=1,..,n.


Heuristiky pro pln n kontejner

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


Heuristiky pro pln n kontejner1

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)2OPT(I),

neboli nebude nikdy větší, než dvojnásobek optimálního počtu kontejnerů.


Heuristiky pro pln n kontejner2

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í


Heuristiky pro pln n kontejner3

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í


P klad probl m n dam

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.


P klad probl m n dam1

Příklad – problém N dam


P klad probl m n dam2

Příklad – problém N dam


P klad probl m obchodn ho cestuj c ho

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.


P klad probl m obchodn ho cestuj c ho1

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 : 2+3+17+5 = 27

Optimální řešení:

A‑C‑B‑D‑A : 4+3+7+5=19


P klad probl m obchodn ho cestuj c ho2

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í


Probl my z np1

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.


Probl my z np2

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ů.


Ifrovac algoritmus rsa

Šifrovací algoritmus RSA

  • RSA (R. Rivest, A. Shamir, L. Adlemann)

  • Vygenerujeme dvě dostatečně velká prvočísla p a q(každé má délku 1024 bitů) a spočteme n=pq.

  • Číslo n je parametrem šifrovacího systému (šifrovací modul) a zveřejňuje se spolu s veřejným klíčem.

  • Spočítá se Eulerova funkce

    (n)= (p-1)(q-1)

    udává počet přirozených čísel menších než n, která jsou nesoudělná s číslem n

    (protože n je součinem dvou prvočísel, je takových čísel právě (p-1)(q-1))


Ifrovac algoritmus rsa1

Šifrovací algoritmus RSA

  • Zvolíme privátní klíč e z množiny {1,..,n}nesoudělný s číslem (p-1)(q-1)

  • Kprivátnímu klíči e vypočteme Eulerovým algoritmem veřejný klíč d podle vztahu

    de mod (p-1)(q-1)= de mod (n)= 1

  • Tato rovnice má jediné řešení d

  • Zakódování zprávy z se provede dle vztahu ze mod n =s

  • Dekódování zprávy se provede dle vztahu sd mod n =z

  • Korektnost šifry je dána vztahem:

    z=sd mod n = zde mod n = zk(n)+1 mod n =1z mod n=z


  • Login