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

Teoretická informatika

  • Upload
    keefe

  • View
    63

  • Download
    4

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Teoretická informatika

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.

Page 2: Teoretická informatika

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ů

Page 3: Teoretická informatika

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 )

Page 4: Teoretická informatika

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

Page 5: Teoretická informatika

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

Page 6: Teoretická informatika

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)

Page 7: Teoretická informatika

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?

Page 8: Teoretická informatika

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)

Page 9: Teoretická informatika

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

Page 10: Teoretická informatika

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í

Page 11: Teoretická informatika

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

Page 12: Teoretická informatika

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č

Page 13: Teoretická informatika

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)

Page 14: Teoretická informatika

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

Page 15: Teoretická informatika

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

Page 16: Teoretická informatika

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

Page 17: Teoretická informatika

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

Page 18: Teoretická informatika

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

Page 19: Teoretická informatika

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