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

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

Úvod do předmětu Opakování

Podobné prezentace


Prezentace na téma: "Úvod do předmětu Opakování"— Transkript prezentace:

1 Úvod do předmětu Opakování

2 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

3 Osnova výuky Další výpočetní modely Složitost 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 Studijní literatura Vaníček a kol: Teoretické základy informatiky
ISBN Černá, Křetínský, Kučera: Formální jazyky a automaty I Černá, I: Úvod do teórie zložitosti Pavliska, V.: Vyčíslitelnost a složitost 1 Desátomat Postupně vznikající e-learningová opora k předmětu

5 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

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 Jazyk Jazyky lze zapisovat jako množinu řetězců dané vlastnosti
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: w0 =  wi+1 = wwi 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: Lp = {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ř. {0i1j | 0 < i < j}

8 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 Lp.

9 Operace nad jazyky Nechť L1, L2 jsou jazyky nad abecedou .
Sjednocení jazyků L1  L2 = {w | wL1  wL2} Totéž jako množinové sjednocení Obsahuje slova z prvního i druhého jazyka Průnik jazyků L1  L2 = {w | wL1  wL2} Totéž jako množinový průnik Obsahuje slova patřící do obou jazyků současně Zřetězení jazyků L1  L2 = {w | w = uv, uL1  vL2} 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 L1i = {w | w = ui, uL1 } Iterace jazyka L1* = {w | w = u*, uL1} Doplněk jazyka L1: co-L1 = * – L1

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 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 Bezkontextové gramatiky Typ 3: Každé pravidlo je tvaru AaB nebo Aa Regulární gramatiky

12 Konečné automaty Konečný automat je pětice M = (Q, , , q0, 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| ^(q0,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 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2Q 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|)

14 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

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

17 Aplikace regulárních jazyků
UNIX grep Lexikální analýza Fulltextové vyhledávání

18 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 xykz  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.

19 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 xykz  L  jazyk není regulární Např. jazyk {w| #w(1) = #w(0)} není regulární pro každé n existuje slovo 0n1n, které nelze za stanovených podmínek „pumpovat“

20 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 L1 a L2 regulární jazyky, pak i jazyk vzniklý aplikací jedné z těchto operací je regulární

21 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

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

24 Aplikace bezkontextových jazyků
Vyhodnocování výrazů Parsování XML Překladače

25 Zásobníkové automaty Nedeterministický zásobníkový automat (PDA) je sedmice M = (Q, , , , q0, Z0, 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()  Pfin(Q*) je přechodová funkce q0Q je počáteční stav Z0 je počáteční symbol v zásobníku FQ je množina koncových stavů

26 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 (q0, w, Z0) 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*

27 Jazyky rozpoznávané zásobníkovými automaty
Jazyk rozpoznávaný konečným stavem PDA M L(M) = {w| (q0, w, Z0) M (qf, , ) } Jazyk rozpoznávaný prázdným zásobníkem PAD M L(M) = {w| (q0, w, Z0) M(q, , ) } Oba způsoby akceptování jsou ekvivalentní

28 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

29 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

30 Chomského normální forma
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α

31 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  LR = {wR| 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 = Σ*?

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 "Úvod do předmětu Opakování"

Podobné prezentace


Reklamy Google