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

Slides:



Advertisements
Podobné prezentace
DOTAZOVACÍ JAZYKY slajdy přednášce DBI006
Advertisements

Deduktivní soustava výrokové logiky
GRAMATIKY Bori · Brkos 2011.
J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
Rozhodnutelnost.
Dynamické systémy.
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
CIT Sekvenční obvody Díl VI.
Red-Black Stromy Binární Vyhledávací Stromy, u kterých je časová složitost operací v nejhorším případě rovná O(log n)
Aplikace teorie grafů Základní pojmy teorie grafů
ALGO – Algoritmizace 1. cvičení
PROGRAM PRO VÝUKU T ČLÁNKU
Algebra.
Teorie čísel Nekonečno
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Varianty Turingova stroje Výpočet funkcí pomocí TS
Lexikální a syntaktická analýza Jakub Yaghob
ADT Strom.
Úvod do Teorie množin.
Základní číselné množiny
Získávání informací Získání informací o reálném systému
Důkazové metody.
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Teorie ICT.
Příklady použití zásobníkového automatu
Church-Turingova teze Univerzální Turingův stroj Diagonalizace
Fakulta životního prostředí Katedra informatiky a geoinformatiky
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Formální jazyky a gramatiky
Abeceda a formální jazyk
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Sémantická analýza Jakub Yaghob
Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S)
Syntaxí řízený překlad
Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
Složitost.
Matice.
Predikátová logika.
Predikátová logika.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Pre-algebra Antonín Jančařík.
Algebra II..
Výroková logika.
AUTOMATY Bori · Brkos Formální jazyk {a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb} nad abecedou {a, b}
Vztah bezkontextových jazyků a ZA
Regulární výrazy Regulární výrazy představují další možnost popisu regulárních jazyků (právě od nich dostaly své jméno). Definice: Množina všech regulárních.
Formální modely výpočtu Tomáš Vaníček Katedra inženýrské informatiky Stavební fakulta ČVUT Thákurova 7, Praha 6 Dejvice, b407
P-těžké, np-těžké a np-úplné problémy
Pre-algebra Antonín Jančařík.
Kompresní algoritmus LZW Dokumentografické informační systémy.
Rozpoznávání v řetězcích
Turingův stroj.
Množiny.
Automaty a gramatiky.
Mlhavost Fuzzy logika, fuzzy množiny, fuzzy čísla
Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce
Teorie množin.
Konečné automaty a vyhledávání
Formální definice Konečná množina vnitřních stavů Q Konečná vstupní abeceda A Počáteční stav q 0 Množina přijímacích stavů K.
© Institut biostatistiky a analýz INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ ANALÝZA A KLASIFIKACE DAT prof. Ing. Jiří Holčík, CSc.
MNOŽINY RNDr. Jiří Kocourek. Množina: skupina (souhrn, soubor) nějakých objektů.
Úvod do databázových systémů
ALGEBRAICKÉ STRUKTURY
Definiční obor a obor hodnot
Překladače 5. Syntaktická analýza
MATEMATIKA Obsah přednášky. Opakování, motivační příklady Funkce.
MNOŽINY RNDr. Jiří Kocourek.
Definiční obory. Množiny řešení. Intervaly.
Transkript prezentace:

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

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

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ů

Studijní literatura Vaníček a kol: Teoretické základy informatiky ISBN 978-80-903962-4-1 Černá, Křetínský, Kučera: Formální jazyky a automaty I http://is.muni.cz/elportal/estud/fi/js06/ib005/Formalni_jazyky_a_automaty_I.pdf Černá, I: Úvod do teórie zložitosti http://skripta.gootik.net/download.php?id=73&filename=sk_slozitost_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

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

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

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}

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.

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

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}

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

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

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

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

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

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

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

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.

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“

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í

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

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

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í

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

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ů

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*

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í

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

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

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α

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 = Σ*?

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