Algoritmy a datové struktury II
Přednáška z algoritmů a datových struktur II [NTIN061] se koná v ZS 2007/2008 v úterky od 14:00 v S5.
datum | co se přednášelo | zápis |
---|---|---|
2. 10. | Booleovské obvody coby jednoduchý model paralelního počítače – formální definice, časová (počet hladin) a prostorová (počet hradel) složitost výpočtu. Obvod pro paralelní sčítání dvou n-bitových čísel. | 20.1. |
9. 10. | Problém maximálního toku v síti. Definice sítí, toků a řezů. Minimaxová věta o tocích a řezech. Fordův-Fulkersonův algoritmus. | 8.2. |
16. 10. | Dinicův algoritmus na hledání maximálního toku a jeho analýza. Převod maximálního párování v bipartitním grafu na maximální (celočíselný) tok. | 20.1. |
23. 10. | Goldbergův algoritmus na hledání maximálního toku a jeho analýza. | 8.1. |
30. 10. | Animace průběhu Goldbergova algoritmu a dokončení jeho analýzy. Třídící sítě a bitonické třídění. | 20.1. |
6. 11. | Vyhledávání v textu: naivní algoritmy, algoritmus KMP (Knuth, Morris, Pratt) a jeho analýza. Přistup pomocí hashování à la Rabin-Karp. | 20.1. |
13. 11. | Vyhledávání v textu: algoritmus AC (Aho, Corasicková) pro hledání více řetězců najednou. Násobení a vyhodnocování polynomů, náznak použití metody Rozděl a panuj. | 20.1. |
20. 11. | Opakování operací s komplexními čísly z mateřské školky (slidy).
Diskrétní Fourierova transformace a její inverze. Algoritmus FFT a jeho aplikace.
(zapsali Marek Polák, Karel Jakubec a Gábor Ocsovszký) | 18.2. |
27. 11. | Geometrické algoritmy: Konvexní obal a Voroného diagramy (Fortunův algoritmus).
Obrázky z přednášky (nejdůležitější okamžiky v průběhu Fortunova algoritmu).
Můžete si vyzkoušet animaci
Fortunova algoritmu v Javě, případně totéž v Algovision.
(zapsali Michal Staša, Jan Návrat a Bohdan Maslowski) | 18.2. |
4. 12. | Rozhodovací problémy a převody mezi nimi: SAT, 3-SAT, 3,3-SAT, nezávislá množina a klika
v grafu, 3D párování.
(zapsali Martin Chytil a Vladimír Kudelas) | 21.1. |
11. 12. | NP-úplnost: definice, Cookova věta (SAT je NP-úplný) a náčrt jejího důkazu. Zoo NP-úplných problémů.
Převod obvodového SATu na obyčejný SAT. Převod 3,3-SATu na 3D párování (dokončení z minula).
(zapsali Radoslav Krivák, František Kačmárik a Daniel Remiš) | 21.1. |
18. 12. | Co dělat, když potkáme NP-úplný problém. Řešení speciálních případů: maximální
nezávislá množina ve stromu (hladově), problém batohu s malými celými čísly (dynamickým
programováním). Aproximační algoritmy: problém obchodního cestujícího s trojúhelníkovou
nerovností (pomocí minimální kostry), problém batohu (kvantování).
Pozor: aproximaci problému batohu jsem na přednášce řekl špatně, podívejte se, prosím, do zápisků, tam je opravena. (zapsali František Haško a Jozef Menda) | 15.1. |
8. 1. | Algoritmy okolo teorie čísel. Algebraické základy (grupy, multiplikativní
grupa modulo n, invertibilní prvky, Eulerova funkce, Malá Fermatova a Eulerova věta).
Řešení lineárních kongruencí pomocí Euklidova algoritmu. Pravděpodobnostní
testování prvočíselnosti: Fermatův a Rabinův-Millerův test.
(zapsali Ondrej Hofferek, Jakub Brecka a Lucia Banáková) Viz též můj textík o algoritmech s čísly. | 23.6. |
Zkoušky
Termíny jsou vypsány v SISu, zapisujte se, prosím, tam. Ke zkoušce je potřeba zápočet, znalost toho, co bylo odpředneseno, a schopnost tyto znalosti aplikovat; doporučena jest čistá mysl a dobrá nálada :)
Pokud budete potřebovat vyzkoušet během letního semestru, ozvěte se mi.
Nezkouším důkaz Cookovy věty a důkaz nejpodrobnější verze lemmatu o nenasycených převedeních v analýze Goldbergova algoritmu.
Také si můžete přečíst otázky z minulých zkoušek.
Cvičení
K přednášce existuje několik více méně ekvivalentních cvičení. Pokud chcete chodit s jinou skupinou, než do které oficiálně patříte (nebo pokud jste na kombinovaném studiu), domluvte se, prosím, s cvičícími – jediné omezení je místo v posluchárnách.
Podmínky k udělení zápočtu určuje cvičící, obvykle se uděluje za vypracování zápočtové práce – ta by měla obsahovat implementaci některého zajímavého a netriviálního algoritmu, ať už z přednášky nebo odjinud, a krátký popis toho, jak algoritmus funguje, proč funguje a jakou má časovou a paměťovou složitost. Každopádně se předem domluvte s cvičícím na konkrétním algoritmu.
Zde je pár úloh pro inspiraci.
Zápisky
Zápočet můžete mimo cvičení získat také za sepsání zápisu z jedné přednášky (každou přednášku max. 3 lidé, nejlépe společně). Zápis je třeba poslat do čtyř týdnů od přednášky a ideální bude, když jej napíšete v TeXu. Inspirovat se můžete stávajícími zápisky, v případě jakýchkoliv problémů rád pomohu. Na kreslení obrázků se může hodit Vrr.
Pokud chcete zápis psát, přihlašte se mi, prosím, na začátku přednášky. A také si přečtěte návod (viz níže).
Ke stažení:
- zápisky ze všech přednášek (jednotlivé stránky)
- totéž jako 2 stránky na jedné A4
- zdrojové texty všech přednášek v TeXu
- Návod, jak psát zápisky a čeho se při tom vyvarovat
Pozor: Ne všechny zápisky jsem už stihl detailně zkontrolovat, takže je možné, že se v nich tu a tam vyskytují drobné chyby. Pokud narazíte na něco podezřelého, pak si to buďto rozmyslete sami, nebo se mi ozvěte, ale rozhodně to, prosím, nepapouškujte u zkoušky.
Literatura
Knížku v češtině, která by pokrývala celou přednášku, bohužel dosud nikdo nenapsal (ale třeba se nějaká časem vyklube z vašich zápisků). Zatím mohu doporučit:
- Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms (2nd Edition), Mc Graw Hill 2001 (vpravdě monumentální dílo pokrývající většinu přednášky; kň)
- Dasgupta, Papadimitriou, Vazirani: Algorithms (velice pěkná knížka pokrývající část přednášky, navíc dostupná online)
- Jiří Demel: Grafy a jejich aplikace (grafové algoritmy; kň)
- Luděk Kučera: Kombinatorické algoritmy (grafové algoritmy; kň)
- Luděk Kučera, Jaroslav Nešetřil: Algebraické metody diskrétní matematiky (FFT a paralelní sčítání; kň)
- Vyhledávání v textu z Programátorské kuchařky KSP
- Martin Mareš: Krajinou grafových algoritmů (lahůdky pro pokročilé a zvídavé; v první kapitole teorie toků v sítích; kň)
- Lecture notes Davida Mounta o geometrických algoritmech.
(tituly označené "kň" jsou k dispozici v knihovně MFF)
Animovaný výklad algoritmů v Algovision kolegy Kučery.
Sbírky příkladů:
- Mareš, Töpfer: Korespondeční seminář z programování 1987-1998 (kň)
- Archiv KSP a MO-P na webu.
- Libicher, Töpfer: Od problému k algoritmu a programu (kň)
Ostatní:
- Referát o násobení polynomů pomocí FFT od Romana Cinkaise.
Viz též literatura k ADS 1.