Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
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 = wwi 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 | wL1 wL2} Totéž jako množinové sjednocení Obsahuje slova z prvního i druhého jazyka Průnik jazyků L1 L2 = {w | wL1 wL2} Totéž jako množinový průnik Obsahuje slova patřící do obou jazyků současně Zřetězení jazyků L1 L2 = {w | w = uv, uL1 vL2} 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, uL1 } Iterace jazyka L1* = {w | w = u*, uL1} 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 AaB nebo Aa 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 : QQ je přechodová funkce FQ 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 : Q2Q 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 KL, KL 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 : QQ(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 q0Q je počáteční stav Z0 je počáteční symbol v zásobníku FQ 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. qQ, 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 ABC nebo Aa Greibachové normální forma pravidla jsou pouze tvaru Aaα
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| wL} 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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.