1 / 19

Teoretická informatika

Teoretická informatika. Garant předmětu: Josef Hynek Hodinová dotace: 2/2 Cíl předmětu:

keefe
Download Presentation

Teoretická informatika

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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ů

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

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

  5. 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é?

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

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

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

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

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

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

  12. 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č

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

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

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

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

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

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

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

More Related