190 likes | 331 Views
Teoretická informatika. Garant předmětu: Josef Hynek Hodinová dotace: 2/2 Cíl předmětu:
E N D
Teoretická informatika • Garant předmětu: Josef Hynek • Hodinová dotace: 2/2 • Cíl předmětu: • Poskytnout studentům dostatečný přehled o teoretických základech informatiky. Předmět je rozdělen do tří částí, které postupně pokrývají oblast automatů a formálních gramatik, teorii vyčíslitelnosti a teorii složitosti.
Sylabus: • Konečné automaty, ekvivalence automatů, iterační lemma, dosažitelnost a ekvivalence stavů, redukce a normalizace konečných automatů, nedeterministické konečné automaty • Regulární výrazy, Kleenova věta, převod regulárního výrazu na automat, převod automatu na regulární výraz • Chomského hierarchie gramatik, bezkontextové gramatiky, derivační stromy, zásobníkové automaty, přijímání prázdným zásobníkem a koncovým stavem, iterační (pumping) lemma • Kontextové gramatiky, Turingovy stroje, různé typy Turingových strojů, definice algoritmu, univerzální Turingův stroj • Rozhodovací problémy, problém zastavení Turingova stroje, Postův problém přiřazení a jeho aplikace • Teorie složitosti, časová a prostorová složitost, analýza algoritmu a měření složitosti • Definice tříd P a NP, polynomiální převoditelnost problémů, pojem NP-úplnosti, příklady NP-úplných problémů, přibližná řešení těžkých problémů
Doporučená literatura: • Sipser, M., Introduction to theTheoryofComputationCourse Technology, 2nd Ed., Thomson, Boston, MA, 2006. • Kurz http://oliva.uhk.cz/ - RNDr. Andrea Ševčíková • Hopcroft, J.E., Motwani, R., Ullman, J.D.: Introduction to AutomataTheory, Languages, and Computation (2nd Edition), AddisonWesley, 2000. • Cormen, T. H., Leiserson, C.E., Rivest, R.L., Stein, C.: Introduction to Algorithms, (2nd Edition), MIT Press 2001. • Garey, M.R.: Johnson, D.S.: Computers and Intractability : A Guide to theTheoryof NP-Completeness (SeriesofBooks in theMathematicalSciences), W.H. Freeman 1979. • Kučera, L.: Kombinatorické algoritmy, SNTL Praha 1991. • Koubek, V.: Automaty a gramatiky. On-line výukové materiály MFF UK (http://ktiml.ms.mff.cuni.cz/vyuka/materialy.html ) • Majerech, V.: Úvod do složitosti a NP-úplnosti. On-line výukové materiály MFF UK (http://ktiml.ms.mff.cuni.cz/vyuka/materialy.html ) • Majerech, V.: Složitost a NP-úplnost. On-line výukové materiály MFF UK (http://ktiml.ms.mff.cuni.cz/vyuka/materialy.html ) • Kučera, A.: Vyčíslitelnost. On-line výukové materiály MFF UK (http://ktiml.ms.mff.cuni.cz/vyuka/materialy.html)
Způsob ukončení předmětu: • Zápočet • písemný test • (uprostřed semestru – termín bude včas oznámen) • Zkouška • písemná a ústní • Rozsah zkoušené látky • odpovídá obsahu přednášek
Předmět studia teoretické informatiky: • Jak počítač interpretuje či překládá program? • Jak rychle bude výpočet probíhat? • Jaké jsou možnosti počítačů? • Jaké jsou jejich limity? • Co může a co nemůže být „vypočteno“? • Proč jsou některé výpočty prakticky či vůbec nerealizovatelné?
Teoretický předmět = těžký a nudný? • Bez porozumění základním principům zůstává poznání jen na povrchu • Teorie rozvíjí způsob myšlení a dává obecný nadhled • Celá řada poznatků má zásadní význam pro praxi • Návrh „rychlých“ algoritmů pro určitý problém vs. návrh těžko rozluštitelných kódů a šifer • Zatímco konkrétní technické znalosti (např. určitý programovací jazyk) se rychle mění, teorie zůstává stejná (gramatiky a formální jazyky)
Oblasti pokryté v rámci tohoto předmětu: • Teorie automatů • Teorie složitosti • Teorie vyčíslitelnosti • Všechny tři teorie vznikaly postupně v minulém století spolu s rozvojem výpočetní techniky a jejich cílem bylo nalézt odpovědi na otázku rozsahu možností počítačů. • Počítač se za více než 60 let změnil k nepoznání, ale změnily se principiálně i jeho schopnosti řešit problémy?
Teorie automatů: • Matematické modely výpočetních strojů • Různé možnosti definice výpočtu a výpočetních strojů • Různé modely – různé možnosti? • Aplikace v oblasti • zpracování textu • interpretace a překladu programovacích jazyků • rozpoznávání vzorů (pattern matching)
Teorie složitosti: • Některé problémy jsou „jednoduché“ • třídění • Jiné jsou složité • problém obchodního cestujícího • faktorizace přirozeného čísla • Způsob klasifikace problémů do určitých tříd • Možnost demonstrovat, že určitý problém je „těžký“ • Využití • při návrhu algoritmů pro příslušný problém • v oblasti kryptografie
Co s těžkými problémy? • Je podstatné, že víme a umíme prokázat, že problém je „těžký“ • Chápeme-li důvod obtížnosti, lze někdy problém zjednodušit a řešit snadnější úlohu • Jindy postačí dostatečně dobré či přibližné řešení • V dalších případech můžeme použít stochastické metody • Hladový algoritmus, heuristické algoritmy, Monte Carlo • Neuronové sítě, fuzzy přístupy, genetické algoritmy • Rojová inteligence, algoritmy na bázi mravenčích kolonií
Teorie vyčíslitelnosti: • Zatímco teorie složitosti dělí problémy na • jednoduché • a obtížné • teorie vyčíslitelnosti dělí problémy • na algoritmicky řešitelné • a algoritmicky neřešitelné • Lze snadno dokázat, že existují úlohy algoritmicky neřešitelné • Dopady nejen zpětně do teorie, ale i velký praktický význam
Teorie automatů a formálních jazyků: • Začneme gramatikami a jazyky • Noam Chomski (* 1928) • (1956 – Cambridge , MA) • matematický model gramatiky • Teorie formálních jazyků je velmi propracovaná • Důležitý praktický význam • programovací musí být vhodně definovaný a specifikovaný • program napsaný ve vyšším programovacím jazyce je nutné před provedením přeložit do jazyka instrukcí konkrétního počítače – tuto funkci plní překladač
Teorie automatů a formálních jazyků: • Překladač je program, který jako vstupní data zpracovává text zapsaný v nějakém jazyce. • Rozlišujeme • Kompilační překladače (kompilátory) • Interpretační překladače (interprety)
Teorie automatů a formálních jazyků: • Kompilátor je program, který čte program ve vyšším programovacím jazyce (zdrojový kód) a produkuje cílový program (spustitelný kód) • Zdrojový jazyk (C++) • Cílový jazyk (jazyk instrukcí) • Implementační jazyk - (překladač = program) => jazyk, ve kterém je napsán překladač(C++) Zdrojový kód Cílový kód Kompilátor
Teorie automatů a formálních jazyků: • Interpret je program, který čte zdrojový program, analyzuje jej a zajišťuje provádění příslušných operací („interpretuje program“). • Jednodušší vývoj interpretu, jednodušší ladění programů, snadná portabilita – potřeba interpretu ke spuštění, pomalejší běh („interpretační režie“ - analýza při každém spuštění, nebývá používána optimalizace) Vstupní data Zdroj Interpretační překladač Výsledky
Proces překladu: • Lze rozdělit na čtyři části • Lexikální analýza • Syntaktická analýza • Zpracování sémantiky • Generování cílového kódu • Program musí být vytvořen podle jistých pravidel, která vyplývají z definice jazyka • Analýza postupně ověřuje platnost těchto pravidel • Rozdělení na části i jejich pořadí má svůj význam
Lexikální analýza: • Lexikální analýza kontroluje jednotlivé znaky programu a ze znaků vytváří vyšší jednotky (číslo, identifikátor, příkaz) • Každé slovo jazyka musí být vytvořeno v souladu s gramatikou (pravidly) daného jazyka • Kontroluje se přípustnost znaků i struktura slova • Příklad: počet faktur x pocet_faktur 0.234.567 x 0.234567 0.87+F06 x 0.87+E06
Další postup překladu: • Syntaktická analýza kontroluje správnost vyšších jednotek jazyka • Příklad: if (podmínka) then (příkaz) if (podmínka) then (příkaz) else (příkaz) repeat (posloupnost příkazů) until • Sémantická analýza kontroluje význam vět • Příklad: if Pole=2 then ….. (Pole je typu array) • Poté následuje generování cílového kódu
Realizace překladu: • Rozdělení analýzy na lexikální a syntaktickou má svoje důvody v teorii formálních jazyků • Lexikální analýzu lze realizovat jednoduššími a účinnějšími prostředky a na základě specifikace jazyka lze snadno sestrojit lexikální analyzátor • Syntaktická analýza vyžaduje složitější prostředky, ale i zde je možné využít teorii automatů a formálních jazyků ke konstrukci analyzátoru • Využitím formalismu gramatik a automatů lze konstruovat analyzátory automaticky a tím zkrátit čas potřebný k jejich tvorbě a současně i zvýšit spolehlivost překladače