I1 Teoretická informatika

1. Teoretická informatika I1

Garantující pracoviště: Katedra teoretické informatiky a matematické logiky
Oborový garant: prof. RNDr. Roman Barták, Ph.D.

Povinné předměty

kód Předmět Kredity ZS LS
NTIN062 Složitost I   5 2/1 Z+Zk
NTIN064 Vyčíslitelnost   3 2/0 Zk
NTIN066 Datové struktury I   5 2/1 Z+Zk
NMAI064 Matematické struktury   6 2/2 Z+Zk
NSZZ023 Diplomová práce I   6 0/4 Z
NSZZ024 Diplomová práce II   9 0/6 Z
NSZZ025 Diplomová práce III   15 0/10 Z

Povinně volitelné předměty

Je požadováno splnění povinně volitelných předmětů z následujícího seznamu v rozsahu alespoň 60 kreditů:

kód Předmět Kredity ZS LS
NTIN063 Složitost   5 2/1 Z+Zk
NTIN065 Vyčíslitelnost II   3 2/0 Zk
NTIN067 Datové struktury II   3 2/0 Zk
NAIL076 Logické programování I   3 2/0 Zk
NAIL077 Logické programování II   3 2/0 Zk
NAIL069 Umělá inteligence I   5 2/1 Z+Zk
NAIL070 Umělá inteligence II   3 2/0 Zk
NMAI060 Pravděpodobnostní metody   3 2/0 Zk
NMAI061 Metody matematické statistiky   5 2/1 Z+Zk
NTIN073 Rekurze   3 2/0 Zk
NTIN074 Rekurze II   5 2/1 Z+Zk
NDMI010 Grafové algoritmy   3 2/0 Zk
NTIN017 Paralelní algoritmy   3 2/0 Zk
NDMI007 Kombinatorické algoritmy   6 2/2 Z+Zk
NTIN087 Textové algoritmy   3 2/0 Zk
NAIL078 Lambda-kalkulus a funkcionální programování I   5 2/1 Z+Zk
NAIL079 Lambda-kalkulus a funkcionální programování II   5 2/1 Z+Zk
NAIL021 Booleovské funkce a jejich aplikace   3 2/0 Zk
NAIL031 Reprezentace booleovských funkcí   3 2/0 Zk
NAIL002 Neuronové sítě   9 4/2 Z+Zk
NDBI023 Dobývání znalostí   9 4/2 Z+Zk
NAIL013 Aplikace teorie neuronových sítí   3 2/0 Zk
NAIL060 Implementace neuronových sítí I   6 2/2 Z+Zk
NAIL015 Implementace neuronových sítí II   6 2/2 Z+Zk
NTIN018 Pravděpodobnostní analýza algoritmů   3 2/0 Zk
NAIL071 Plánování a rozvrhování   3 2/0 Zk
NAIL029 Strojové učení   3 2/0 Zk
NAIL022 Metody logického programování   3 2/0 Zk
NOPT042 Programování s omezujícími podmínkami   6 2/2 Z+Zk
NDMI025 Pravděpodobnostní algoritmy   6 2/2 Z+Zk
NTIN081 Strukturální složitost   3 2/0 Zk
NTIN082 Výpočetní složitost   3 2/0 Zk
NTIN084 Bioinformatické algoritmy   6 2/2 Z+Zk
NTIN085 Vybrané kapitoly z výpočetní složitosti I   5 2/1 Z+Zk
NTIN086 Vybrané kapitoly z výpočetní složitosti II   5 2/1 Z+Zk
NAIL025 Evoluční algoritmy I   6 2/2 Z+Zk
NAIL086 Evoluční algoritmy II   6 2/2 Z+Zk
NAIL065 Evoluční robotika   5 2/1 Z+Zk
NAIL068 Umělé bytosti   6 2/2 Z+Zk
NAIL087 Informatika a kognitivní vědy I   6 3/1 Z+Zk
NAIL094 Rozhodovací procedury a verifikace   6 2/2 Z+Zk
NAIL028 Úvod do robotiky   6 2/2 Z+Zk
NPGR001 Autonomní robotika   5 2/2 Z+Zk
NSWE001 Vestavěné systémy a systémy reálného času   6 2/2 Z+Zk
NAIL101 Pravděpodobnostní robotika   6 2/2 Z+Zk

Zaměření: Algoritmy a složitost

Zkušební okruhy

1. Rekurze a strukturální složitost
2. Obecná teorie algoritmů
3. Konkrétní algoritmy

Zkušební požadavky

1. Rekurze a strukturální složitost
Aritmetická hierarchie tříd množin, třídy nekonečných větví rekurzivních stromů. Věta o nízké bázi. Diagonálně nerekurzivní funkce, význam a aplikace. Základy aritmetického forcingu, 1-generické množiny. Algoritmická náhodnost, 1-náhodné množiny – základní vlastnosti. Existence těžkých problémů (Shannonova věta), pravděpodobnostní třídy složitosti a jejich vlastnosti, neuniformní třídy složitosti a jejich vlastnosti, polynomiální hierarchie, vztahy tříd složitosti definovaných pomocí různých prostředků, separace různých tříd složitosti, vlastnosti řídkých množin, základy kryptografie.


Doporučené předměty: NTIN073 Rekurze I, NTIN074 Rekurze II, NTIN081 Strukturální složitost I, NTIN082 Výpočetní složitost 
Rozšiřující předměty: NTIN085 Vybrané kapitoly z výpočetní složitosti I, NTIN086 Vybrané kapitoly z výpočetní složitosti II 

2. Obecná teorie algoritmů
Pravděpodobnostní a randomizované algoritmy: jejich popis a parametry kvantifikující jejich vlastnosti, třídy složitosti pravděpodobnostních algoritmů (BPP, RP, ZPP a příklady problémů v těchto třídách), pravděpodobnostní binární vyhledávací stromy.

Paralelní algoritmy: modely paralelních počítačů, počítače první a druhé třídy a paralelní teze, techniky paralelních algoritmů. Dolní odhady, P-úplnost, NC- a AC-třídy.

Deterministické algoritmy: různé typy složitosti (složitost v nejhorším případě, složitost v průměrném případě, amortizovaná složitost). Distribuce vstupních dat, statistické metody odhady doby výpočtu na základě experimentů, interpretace výsledků statistických metod.


Doporučené předměty: NTIN063 Složitost II, NTIN017 Paralelní algoritmy, NTIN018 Pravděpodobnostní analýza algoritmů, NTIN081 Strukturální složitost I, NMAI060 Pravděpodobnostní metody, NMAI061 Metody matematické statistiky 
Rozšiřující předměty: NDMI025 Pravděpodobnostní algoritmy 

3. Konkrétní algoritmy
Třídící algoritmy: algoritmy založené na porovnávání prvků (Shellsort, Mergesort, Heapsort, Quicksort) a jejich složitost, algoritmy založené na adresovacích metodách (Bucketsort, Hybridsort). Hledání mediánu a k-tého prvku. Třídící sítě, paralelní Mergesort, externí třídící algoritmy.

Algebraické algoritmy: algoritmy založené na algoritmech pro násobení matic, rychlá diskrétní Fourierova transformace. LUP-dekompozice matic. Testy prvočíselnosti.

Grafové algoritmy: testy planarity, maximální tok v síti a jeho aplikace (párování, k-souvislost), transitivní uzávěr, metoda Eulerových cyklů, paralelní algoritmy pro souvislost a dvousouvislost grafu, hledání minimální kostry a hledání nejkratší cesty v grafech.

Algoritmy testování splnitelnosti Booleovských formulí.


Doporučené předměty: NTIN067 Datové struktury II, NDMI010 Grafové algoritmy, NTIN017 Paralelní algoritmy, NAIL021 Booleovské funkce a jejich aplikace, NDMI025 Pravděpodobnostní algoritmy 
Rozšiřující předměty: NDMI007 Kombinatorické algoritmy, NTIN081 Strukturální složitost I, NTIN084 Bioinformatické algoritmy, NTIN085 Vybrané kapitoly z výpočetní složitosti I, NTIN086 Vybrané kapitoly z výpočetní složitosti II, NAIL025 Evoluční algoritmy I, NAIL086 Evoluční algoritmy II, NTIN087 Textové algoritmy, NAIL094 Rozhodovací procedury a verifikace

Zaměření: Neprocedurální programování a umělá inteligence

Zkušební okruhy

1. Logika a výpočtová složitost
2. Umělá inteligence
3. Neprocedurální programování
4. Neuronové sítě
5. Adaptivní agenti a evoluční algoritmy
6. Robotika

Zkušební požadavky

1. Logika a výpočtová složitost
Formální systémy, logika 1. řádu, jazyk, axiomy, odvozovací pravidla. Výroková logika, sémantika výrokové logiky, tautologie a splnitelnost, dokazatelnost, věta o dedukci, věta o kompaktnosti a věty o úplnosti. Konjunktivně-disjunktivní a disjunktivně-konjunktivní tvary formulí.

Predikátová logika, realizace jazyka, splňování a pravdivost formulí. Teorie 1. řádu, dokazatelnost, věta o dedukci, věta o konstantách, prenexní tvary formulí. Věta o korektnosti. Věta o úplnosti, Henkinovy teorie, úplné teorie. Rozšíření teorie, konservativní rozšíření, rozšíření teorie o definice funkcí a predikátů.

Míry výpočtové složitosti, třídy složitosti (P, NP, PSPACE, NPSPACE, LOGSPACE), NP-těžké a NP-úplné úlohy. Složitost algoritmů v umělé inteligenci, prohledávání, rezoluční odvozování.


Doporučené předměty: NAIL062 Výroková a predikátová logika, NTIN062 Složitost I 

2. Umělá inteligence
Reprezentace znalostí: stavový prostor, produkční systémy, reprezentace v predikátové logice. Prohledávací algoritmy; stromové, grafové a lokální prohledávání, heuristiky, algoritmus A* a jeho varianty. Hry; minimax a alfa-beta algoritmy. Splňování omezujících podmínek. Strojové dokazování vět, model checking (DPLL), dopředné a zpětné řetězení, rezoluční metoda a unifikace. Automatické plánování; plánovací doména a problém, plánovací operátory. Zpracování neurčité informace; Bayesovské sítě, podmíněná nezávislost, výpočet v Bayesovské síti, rozhodovací grafy, Markovské modely, Kalmanův filtr. Strojové učení; prohledávání prostoru verzí, rozhodovací stromy, Bayesovské učení, maximálně věrohodná hypotéza, EM algoritmus, zpětnovazební učení.


Doporučené předměty: NAIL069 Umělá inteligence I, NAIL070 Umělá inteligence II 
Rozšiřující předměty: NAIL004 Seminář z umělé inteligence I, NAIL052 Seminář z umělé inteligence II, NAIL021 Booleovské funkce a jejich aplikace, NAIL031 Reprezentace booleovských funkcí, NAIL029 Strojové učení, NOPT042 Programování s omezujícími podmínkami, NAIL071 Plánování a rozvrhování, NAIL068 Umělé bytosti, NAIL094 Rozhodovací procedury a verifikace 

3. Neprocedurální programování
Odlišnost procedurálního a neprocedurálního způsobu programování. Principy funkcionálního a logického programování. Lambda kalkulus, syntax, volné a vázané proměnné a principy redukce. Churchova a Rosserova vlastnost a konsistence kalkulu. Věty o pevném bodu. Normální tvar objektů. Typovaný lambda kalkul. Curryho a Churchovy systémy typování. Základní charakteristiky funkcionálních jazyků.

Hornova logika, Hornovy klausule. Substituce, unifikace a jejich vlastnosti. SLD-resoluce a logické programy. Korektnost a úplnost SLD-resoluce. Negace definovaná neúspěchem, obecné logické programy. Čistý Prolog jako podmnožina Prologu. Postačující podmínky ukončení výpočtu. Unifikace bez kontroly výskytu proměnných. Implementace Prologu. Programování s omezujícími podmínkami: inferenční a prohledávací algoritmy splňování podmínek.


Doporučené předměty: NAIL078 Lambda-kalkulus a funkcionální programování I, NAIL076 Logické programování I, NOPT042 Programování s omezujícími podmínkami 
Rozšiřující předměty: NAIL079 Lambda-kalkulus a funkcionální programování II, NAIL077 Logické programování II, NAIL022 Metody logického programování, NAIL006 Seminář z logického programování I, NAIL009 Seminář z logického programování II 

4. Neuronové sítě
Neurofyziologické minimum: struktura neuronu, typy synapsí, hlavní části mozku. Modely pro učení s učitelem: perceptron, algoritmus zpětného šíření, strategie pro urychlení učení, interní reprezentace znalostí, generalizace, regularizační techniky. Asociativní paměti; Hebbovské učení, BAM, Hopfieldův model, energetická funkce a hledání suboptimálních řešení. Stochastické modely; simulované žíhání, Boltzmannův stroj. Umělé neuronové sítě založené na principu učení bez učitele; Ojův algoritmus učení, laterální inhibice, Kohonenovy mapy a jejich varianty pro učení s učitelem, sítě typu ART. Modulární, hierarchické a hybridní modely neuronových sítí; adaptivní směsi lokálních expertů, vícevrstvé Kohonenovy mapy, RBF-sítě, kaskádová korelace. Genetické algoritmy, věta o schématech. Aplikace umělých neuronových sítí a evolučních technik (analýza dat, bioinformatika, zpracování obrazové informace, robotika a další).


Doporučené předměty: NAIL002 Neuronové sítě, NAIL013 Aplikace teorie neuronových sítí 
Rozšiřující předměty: NTIN084 Bioinformatické algoritmy, NAIL060 Implementace neuronových sítí I, NAIL015 Implementace neuronových sítí II, NAIL065 Evoluční robotika, NDBI023 Dobývání znalostí 

5. Adaptivní agenti a evoluční algoritmy
Architektura autonomního agenta; percepce, mechanismus výběru akcí, paměť; psychologické inspirace. Metody pro řízení agentů; řídící architektury podle Wooldridge, symbolické a konekcionistické reaktivní plánování, hybridní přístupy (Belief Desire Intention, Soar), srovnání s plánovacími technikami. Problém hledání cesty; navigační pravidla, reprezentace terénu. Komunikace a znalosti v multiagentních systémech, ontologie, problém omezené racionality, Kripkeho sémantika možných světů. Etologické motivace, modely populační dynamiky. Metody pro učení agentů; zpětnovazební učení, základní formy učení zvířat.

Umělá evoluce; genetické algoritmy, genetické a evoluční programování. Základní přístupy a pojmy: populace, fitness, rekombinace, genetické operátory; dynamická vs. statická selekce, mechanismus rulety, turnaje, elitismus. Reprezentační schémata, hypotéza o stavebních blocích. Pravděpodobnostní modely jednoduchého genetického algoritmu. Koevoluce, otevřená evoluce. Aplikace evolučních algoritmů (výběr akcí, evoluce expertních systému, konečných automatů, adaptace evolučních pravidel, neuroevoluce, řešení kombinatorických úloh).


Doporučené předměty: NAIL068 Umělé bytosti, NAIL025 Evoluční algoritmy I, NAIL086 Evoluční algoritmy II, NAIL087 Informatika a kognitivní vědy I 
Rozšiřující předměty: NAIL071 Plánování a rozvrhování, NAIL054 Adaptivní agenti, NAIL086 Evoluční algoritmy II, NAIL082 Seminář z umělých bytostí, ALGV00003 Úvod do teoretické sémantiky (předmět je vyučován na Filosofické fakultě UK), NAIL065 Evoluční robotika, NAIL002 Neuronové sítě, NAIL088 Informatika a kognitivní vědy II, NAIL106 Multiagentní systémy

6. Robotika
Řídící systém robota: základní modely, řízení, kinematika, autonomní systémy, mobilní systémy. Lokalizace: absolutní a relativní, lokální a globální, lokalizace v dynamickém prostředí, pravděpodobnostní lokalizace. Mapování, simultánní lokalizace a mapování. Plánování aktivit: plánování ve stavovém prostoru a v prostoru plánu, práce s časem a zdroji. Kognitivní robotika: modely, senzorika, zpracování dat, rozpoznávání. Multi-robotické systémy: základní modely, synchronizace a kooperace, plánování. Softwarová realizace: návrh systému, modelování, simulace, programování pro specifické běhové prostředí.


Doporučené předměty: NAIL028 Úvod do mobilní robotiky, NPGR001 Počítačové vidění a inteligentní robotika, NAIL071 Plánování a rozvrhování, NSWE001 Vestavěné systémy a systémy reálného času
Rozšiřující předměty: NAIL029 Strojové učení, NAIL065 Evoluční robotika, NAIL068 Umělé bytosti, NAIL025 Evoluční algoritmy I, NAIL101 Pravděpodobnostní robotika, NAIL070 Umělá inteligence II