Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Vyčíslitelnost a složitost Tomáš Foltýnek Úvod do předmětu Opakování.

Podobné prezentace


Prezentace na téma: "Vyčíslitelnost a složitost Tomáš Foltýnek Úvod do předmětu Opakování."— Transkript prezentace:

1 Vyčíslitelnost a složitost Tomáš Foltýnek Úvod do předmětu Opakování

2 Vyčíslitelnost a složitost Předmět Vyčíslitelnost a složitost Cíl předmětu: Objasnit základní přístupy a metody klasifikace problémů z hlediska možnosti jejich algoritmického řešení a provést základní klasifikaci, poukázat na teoretické a praktické meze využití počítačů a důsledky, které tato omezení mají pro rozvoj informačních technologií Výuka předmětu: –2h přednáška / týden –2h cvičení / 2 týdny Ukončení předmětu: Zápočet ze cvičení + písemná zkouška strana 2

3 Vyčíslitelnost a složitost 3 Osnova výuky Opakování nejen z TPJ –Matematická indukce –Jazyky, gramatiky, Chomského hierarchie, regulární jazyky, konečné automaty, bezkontextové jazyky, zásobníkové automaty Turingovy stroje –Definice, vlastnosti, konstrukce. Varianty TS, výpočty funkcí –Kódování TS, univerzální TS, Churchova teze Jazyky a problémy –Redukce, diagonalizace –Rekursivní a rekursivně spočetné jazyky. Rozhodnutelnost problémů Další výpočetní modely –RAM stroj Složitost –Definice, druhy složitosti –Složitostní třídy. NP-úplné problémy –Složitost paralelních výpočtů

4 Vyčíslitelnost a složitost Studijní literatura Vaníček a kol: Teoretické základy informatiky –ISBN Černá, Křetínský, Kučera: Formální jazyky a automaty I –http://is.muni.cz/elportal/estud/fi/js06/ib005/Formalni_jazyky_a_a utomaty_I.pdf Černá, I: Úvod do teórie zložitosti –http://skripta.gootik.net/download.php?id=73&filename=sk_slozit ost_brno_slovensky.ps Pavliska, V.: Vyčíslitelnost a složitost 1 –http://www1.osu.cz/home/habibal/kurzy/vysl1.pdf Desátomat –https://akela.mendelu.cz/~xdusiko1/desatomat/?lang=desatomat Postupně vznikající e-learningová opora k předmětu strana 4

5 Vyčíslitelnost a složitost Proč se učíme VAS Získáme nadhled nad pojmy “algoritmus”, “problém” a “algoritmicky řešitelný” Zjistíme, že existují problémy, jejichž řešení nelze naprogramovat Ukážeme si, jak poznat, který algoritmus je pro řešení daného problému “lepší” (=rychlejší) Ukážeme si, proč některé problémy nedokážeme řešit “v rozumném čase” Získáme znalosti odlišující inženýra od bakaláře strana 5

6 Vyčíslitelnost a složitost 6 Abeceda Abecedou rozumíme libovolnou konečnou neprázdnou množinu (často označovanou  ), jejíž prvky nazýváme znaky Příklady abeced –  = {0, 1} – binární abeceda –  = {a, b,... z} – abeceda malých písmen Slovo (řetězec) nad abecedou  je libovolná konečná posloupnost znaků této abecedy –Délku slova (počet znaků) w značíme |w| –Prázdné slovo značíme , |  | = 0 Mocniny abecedy:  k značí množinu všech slov délky nad abecedou  –  0 = {  } –  1 =  Množinu všech slov nad abecedou  značíme  * Množinu všech neprázdných slov nad abecedou  značíme  +

7 Vyčíslitelnost a složitost Jazyk Na množině všech slov zavádíme asociativní operaci  (zřetězení) –  je neutrálním prvkem (w  =  w = w) Na základě zřetězení definujeme i-tou mocninu slova w takto: –w 0 =  –w i+1 = w  w i Jazyk je libovolná podmnožina  * –tedy libovolná množina slov nad abecedou  –např. jazyk všech binárních čísel, jejichž hodnota je prvočíslo: L p = {10, 11, 101, 111, 1011,...}, jazyk všech českých slov, prázdný jazyk , jazyk obsahující pouze prázdné slovo {  } Jazyky lze zapisovat jako množinu řetězců dané vlastnosti –{w | P(w)} –např. {w | w je syntakticky korektní program v jazyce C} –např. {0 i 1 j | 0 < i < j} strana 7

8 Vyčíslitelnost a složitost Problém V teorii formálních jazyků a automatů je problém definován jako otázka, zda daný řetězec je prvkem určitého jazyka Je tedy dána abeceda Σ a jazyk L nad touto abecedou. Problém L je problém rozhodnout, zda daný řetězec w patří do jazyka L Např. problém rozhodnout, zda dané číslo je prvočíslo odpovídá jazyku L p. strana 8

9 Vyčíslitelnost a složitost Operace nad jazyky Nechť L 1, L 2 jsou jazyky nad abecedou . Sjednocení jazyků L 1  L 2 = {w | w  L 1  w  L 2 } –Totéž jako množinové sjednocení –Obsahuje slova z prvního i druhého jazyka Průnik jazyků L 1  L 2 = {w | w  L 1  w  L 2 } –Totéž jako množinový průnik –Obsahuje slova patřící do obou jazyků současně Zřetězení jazyků L 1  L 2 = {w | w = u  v, u  L 1  v  L 2 } –Obsahuje slova tvořící zřetězení slov z prvního jazyka se slovy z druhého jazyka –Analogicky jako u slov definujeme i-tou mocninu jazyka Mocnina jazyka L 1 i = {w | w = u i, u  L 1 } Iterace jazyka L 1 * = {w | w = u*, u  L 1 } Doplněk jazyka L 1 : co-L 1 =  * – L 1 strana 9

10 Vyčíslitelnost a složitost 10 Gramatika Gramatika G je čtveřice (N, , P, S), kde –N je konečná neprázdná množina neterminálních symbolů –  je konečná množina terminálních symbolů disjunktní s množinou N –P  (N  )*N(N  )*  (N  )* je konečná množina přepisovacích pravidel přepisovací pravidla obvykle zapisujeme ve tvaru , kde  musí obsahovat alespoň jeden neterminál. –S  N je počáteční symbol (též kořen gramatiky) Na množině (N  )* definujeme relaci odvození  G a její reflexivní a tranzitivní uzávěr  G * Pak definujeme jazyk generovaný gramatikou G jako množinu všech slov odvoditelných z počátečního symbolu –Tedy L(G) = {w| w   *, S  G * w}

11 Vyčíslitelnost a složitost 11 Chomského hierarchie gramatik a jazyků Typ 0: Na tvar pravidel nejsou kladeny žádné omezující požadavky –Frázové gramatiky Typ 1: Pro každé pravidlo  platí, že |  |≤|  | –s eventuelní výjimkou pravidla S , pokud se S nevyskytuje na pravé straně žádného pravidla –Kontextové gramatiky Typ 2: Každé pravidlo je tvaru A , kde |  | ≥ 1 –s eventuelní výjimkou pravidla S , pokud se S nevyskytuje na pravé straně žádného pravidla –Bezkontextové gramatiky Typ 3: Každé pravidlo je tvaru A  aB nebo A  a –s eventuelní výjimkou pravidla S , pokud se S nevyskytuje na pravé straně žádného pravidla –Regulární gramatiky

12 Vyčíslitelnost a složitost 12 Konečné automaty Konečný automat je pětice M = (Q, , , q 0, F), kde –Q je neprázdná množina vnitřních stavů –  je konečná množina vstupních symbolů nazývaná též abeceda –  : Q  Q je přechodová funkce –F  Q je neprázdná množina koncových stavů Jazyk akceptovaný KA M je množina všech slov, pod kterými automat přejde do některého z koncových stavů –L(M) = {w|  ^(q 0,w)  F}  ^ je rozšířená přechodová funkce definovaná induktivně vzhledem k délce slova Konečný automat lze zapsat také –přechodovým diagramem –přechodovou tabulkou

13 Vyčíslitelnost a složitost Nedeterministický konečný automat Má schopnost být ve více stavech naráz Má schopnost „uhodnout“ správnou cestu Formálně je rozdíl v definici přechodové funkce –  : Q  2 Q tj. výsledkem je množina stavů NKA M akceptuje slovo w právě tehdy, když je možné pod ním přejít do některého z koncových stavů Ke každému NKA M existuje DKA M‘ takový, že L(M) = L(M‘) –stavy M‘ odpovídají k-ticím stavů M (max. 2 |Q| ) strana 13

14 Vyčíslitelnost a složitost Automat s  -kroky Může měnit svůj stav, aniž by četl vstup Formální rozdíl je v definici přechodové funkce –  : Q  {ε}  Q Převod NFA s ε-kroky na DFA –identifikace ε-uzávěru každého stavu –stavy DFA jsou ε-uzávěry množin stavů NFA strana 14

15 Vyčíslitelnost a složitost 15 Regulární jazyky Třída regulárních jazyků nad abecedou , označovaná jako R(  ) je definována induktivně: – , {  }, {a} pro každé a  je regulární jazyk nad  –Jsou-li K, L regulární jazyky nad , pak i K  L, K  L a K* jsou regulární jazyky nad  –Nic jiného není regulární jazyk nad  Regulární výrazy –způsob, jak snadno popsat regulární jazyk –u zřetězení vynecháváme , místo  píšeme +, prioritu vyznačujeme závorkami –např. (\++- +  )(0+1+…+9)(0+1+…+9)*(  +\.(0+1+…+9)(0+1+…+ 9)*)

16 Vyčíslitelnost a složitost Kleeneho věta Libovolný jazyk je regulární právě tehdy, když je rozpoznatelný konečným automatem Převod DKA na RE –identifikujeme všechny cesty z počátečního stavu do koncových –na nich zřetězíme vstupní symboly –je-li více možností, použijeme „+“ –u smyček použijeme „*“ –řetězce odpovídající cestám spojíme pomocí „+“ Převod RE na  -NFA –konstrukce automatu na základě struktury výrazu –zřetězení – skládáme stavy za sebe –+ - více větví –* - smyčka strana 16

17 Vyčíslitelnost a složitost Aplikace regulárních jazyků UNIX grep Lexikální analýza Fulltextové vyhledávání strana 17

18 Vyčíslitelnost a složitost Pumping lemma pro regulární jazyky Důkaz, že daný jazyk NENÍ regulární Nechť L je regulární jazyk. Pak existuje konstanta n (závislá na L) taková, že –každý řetězec w, |w| ≥ n lze rozdělit na tři části w = xyz takové, že y ≠ ε |xy| ≤ n pro všechny k ≥ 0 platí, že xy k z  L –tedy každé dostatečně dlouhé slovo obsahuje neprázdný podřetězec, který lze iterovat při zachování příslušnosti do jazyka Důkaz: Pro jazyk L existuje DFA o n stavech. Slovo délky > n musí způsobit, že automat projde některým stavem dvakrát – tedy dojde k iteraci. strana 18

19 Vyčíslitelnost a složitost Aplikace pumping lemmatu Pro všechna n existuje řetězec w (|w|≥n), kdy pro každé rozdělení w = xyz (|xy|≤n, y≠ε), existuje konstanta k taková, že xy k z  L  jazyk není regulární Např. jazyk {w| # w (1) = # w (0)} není regulární –pro každé n existuje slovo 0 n 1 n, které nelze za stanovených podmínek „pumpovat“ strana 19

20 Vyčíslitelnost a složitost Uzávěrové vlastnosti regulárních jazyků Třída regulárních jazyků je uzavřená vzhledem k operacím –sjednocení –průnik –doplněk –rozdíl –reverzi Tj. jsou-li L 1 a L 2 regulární jazyky, pak i jazyk vzniklý aplikací jedné z těchto operací je regulární strana 20

21 Vyčíslitelnost a složitost Rozšíření konečných automatů Mealyho automat –v každém kroku může (a nemusí) produkovat výstup –v definici navíc výstupní abeceda O –přechodová funkce  : Q  Q  (O  {  }) Moorův automat –podobný Mealyho automatu –výstupní symbol závisí pouze na stavu, ne na vstupním symbolu strana 21

22 Vyčíslitelnost a složitost 22 Bezkontextové jazyky Nechť G = (N, , P, S) je CFG. Pak pro každé slovo z L(G) existuje derivační strom v gramatice G takový, že: –S je kořen derivačního stromu –Každý uzel má návěští, které je symbolem z N  {  } –Návěští následníků každého uzlu odpovídají symbolům z použitého přepisovacího pravidla –Zřetězením návěští listů dostaneme odvozené slovo

23 Vyčíslitelnost a složitost Derivace a větnéformy Při odvozování může být více možností, který neterminál přepsat –levá derivace – vzniká levá větná forma –pravá derivace – vzniká pravá větná forma Obě (všechny) derivace jsou ekvivalentní –díky asociativitě zřetězení strana 23

24 Vyčíslitelnost a složitost Aplikace bezkontextových jazyků Vyhodnocování výrazů Parsování XML Překladače strana 24

25 Vyčíslitelnost a složitost 25 Zásobníkové automaty Nedeterministický zásobníkový automat (PDA) je sedmice M = (Q, , , , q 0, Z 0, F), kde –Q je konečná množina vnitřních stavů –  je konečná množina vstupních symbolů –  je konečná množina zásobníkových symbolů –  : Q  (  )   P fin (Q  * ) je přechodová funkce –q 0  Q je počáteční stav –Z 0  je počáteční symbol v zásobníku –F  Q je množina koncových stavů

26 Vyčíslitelnost a složitost Konfigurace a krok výpočtu zásobníkového automatu Konfigurace PDA M je libovolný prvek (q, w,  )  Q  * –q je momentální stav –w je dosud nepřečtená část vstupního slova –  je obsah zásobníku Počáteční konfigurace PDA M je (q 0, w, Z 0 ) Krok výpočtu je relace na množině všech konfigurací označovaná symbolem  M a definovaná (p, aw, Z  )  M (q, w,  )   (q,  )  (p,a,Z) pro a  {  } Reflexivní a tranzitivní uzávěr relace  M značíme symbolem  M * strana 26

27 Vyčíslitelnost a složitost 27 Jazyky rozpoznávané zásobníkovými automaty Jazyk rozpoznávaný konečným stavem PDA M L(M) = {w| (q 0, w, Z 0 )  M (q f, ,  ) } Jazyk rozpoznávaný prázdným zásobníkem PAD M L(M) = {w| (q 0, w, Z 0 )  M (q, ,  ) } Oba způsoby akceptování jsou ekvivalentní

28 Vyčíslitelnost a složitost Ekvivalence CFG a PDA Ke každé CFG G lze sestrojit PDA M takový, že L(G) = L(M) –PDA simuluje nejlevější derivaci PDA má jediný stav, levá větná forma xAα –x je přečtená část vstupu, Aα je na zásobníku –PDA nedeterministicky vybere pravidlo pro expanzi A, terminální prefix srovná se vstupem –PDA akceptuje prázdným zásobníkem Ke každému PDA M existuje CFG G taková, že L(M) = L(G) –konstrukce přepisovacích pravidel G na základě přechodové funkce M strana 28

29 Vyčíslitelnost a složitost Deterministické zásobníkové automaty Má vždy jen jednu možnost, jak pokračovat –|δ(q,a,X)| = 1 pro lib. q  Q, a  Σ  {ε}, X  Γ –(  a  Σ)(δ(q,a,X) ≠  )  δ(q,ε,X) =  DPDA akceptují třídu jazyků mezi regulárními a bezkontextovými –RL  L(DPDA)  CFL strana 29

30 Vyčíslitelnost a složitost Nromální formy CFG Chomského normální forma –pravidla jsou pouze tvaru A  BC nebo A  a Greibachové normální forma –pravidla jsou pouze tvaru A  aα strana 30

31 Vyčíslitelnost a složitost Uzávěrové vlastnosti CFL Třída bezkontextových jazyků je uzavřená vzhledem k –sjednocení –iteraci a pozitivní iteraci –homomorfismu (substituci) –obrácení tj L je CFL  L R = {w R | w  L} je také CFL –průniku s regulárním jazykem průnik dvou CFL nemusí být CFL Nerozhodnutelné problémy (viz později) –Je daná CFG víceznačná? –Je průnik dvou CFL (ne)prázný? –Jsou si dva CFL rovny? –Je co-L =  ? Tedy je CFL L = Σ * ? strana 31

32 Vyčíslitelnost a složitost 32 Syntaktická analýza Nedeterministická syntaktická analýza shora dolů –simulace odvozovacích pravidel –LL(k) analyzátory odstraňují nedeterminismus čtením k znaků dopředu Nedeterministická syntaktická analýza zdola nahoru –budování pravé větné formy jako zřetězení obsahu zásobníku a dosud nepřečteného vstupu –LR(k) analyzátory


Stáhnout ppt "Vyčíslitelnost a složitost Tomáš Foltýnek Úvod do předmětu Opakování."

Podobné prezentace


Reklamy Google