teoretická informatika
DESCRIPTION
Teoretická informatika. Garant předmětu: Josef Hynek Hodinová dotace: 2/2 Cíl předmětu: - PowerPoint PPT PresentationTRANSCRIPT
Teoretická informatika
Garant předmětu: Josef HynekHodinová 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:
1. Sipser, M., Introduction to the Theory of Computation Course Technology, 2nd Ed., Thomson, Boston, MA, 2006.
2. Kurz http://oliva.uhk.cz/ - RNDr. Andrea Ševčíková
3. Hopcroft, J.E., Motwani, R., Ullman, J.D.: Introduction to Automata Theory, Languages, and Computation (2nd Edition), Addison Wesley, 2000.
4. Cormen, T. H., Leiserson, C.E., Rivest, R.L., Stein, C.: Introduction to Algorithms, (2nd Edition), MIT Press 2001.
5. Garey, M.R.: Johnson, D.S.: Computers and Intractability : A Guide to the Theory of NP-Completeness (Series of Books in the Mathematical Sciences), W.H. Freeman 1979.
6. Kučera, L.: Kombinatorické algoritmy, SNTL Praha 1991.
7. Koubek, V.: Automaty a gramatiky. On-line výukové materiály MFF UK (http://ktiml.ms.mff.cuni.cz/vyuka/materialy.html )
8. 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 )
9. Majerech, V.: Složitost a NP-úplnost. On-line výukové materiály MFF UK (http://ktiml.ms.mff.cuni.cz/vyuka/materialy.html )
10. 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 šiferZatí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žitostiTeorie 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řídMož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 jazykyNoam 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)
ZdrojInterpretač
ní překladač
Vstupní data
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_faktur0.234.567 x 0.2345670.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