PředmětyPředměty(verze: 964)
Předmět, akademický rok 2024/2025
   Přihlásit přes CAS
Algoritmy a datové struktury 1 - NTIN060
Anglický název: Algorithms and Data Structures 1
Zajišťuje: Katedra teoretické informatiky a matematické logiky (32-KTIML)
Fakulta: Matematicko-fyzikální fakulta
Platnost: od 2021
Semestr: letní
E-Kredity: 5
Rozsah, examinace: letní s.:2/2, Z+Zk [HT]
Počet míst: neomezen
Minimální obsazenost: neomezen
4EU+: ne
Virtuální mobilita / počet míst pro virtuální mobilitu: ne
Stav předmětu: vyučován
Jazyk výuky: čeština, angličtina
Způsob výuky: prezenční
Garant: prof. RNDr. Ondřej Čepek, Ph.D.
Mgr. Martin Mareš, Ph.D.
doc. Mgr. Jan Hubička, Ph.D.
Vyučující: Sudatta Bhattacharya, M.Sc.
Mgr. Tomáš Domes
Mgr. Jelena Glišić
RNDr. Jan Hric
Bc. Vojtěch Káně
Mgr. Kate Konczycki
Mgr. Martin Koutecký, Ph.D.
RNDr. Petr Kučera, Ph.D.
Mgr. Vladan Majerech, Dr.
Mgr. Martin Mareš, Ph.D.
Mgr. Kristýna Pantůčková
RNDr. Jiří Švancara, Ph.D.
Třída: Informatika Bc.
Kategorizace předmětu: Informatika > Teoretická informatika
Je korekvizitou pro: NPFL145
Anotace -
Úvodní přednáška o základních typech algoritmů a datových strukturách potřebných pro jejich implementaci. Navazuje na výklad v přednášce NPRG062 Algoritmizace v předchozím semestru.
Poslední úprava: Töpfer Pavel, doc. RNDr., CSc. (01.02.2018)
Cíl předmětu

Naučit základní datové struktury, algoritmy a metody teoretické informatiky

Poslední úprava: T_KTI (23.05.2008)
Podmínky zakončení předmětu -

Je třeba získat zápočet a složit zkoušku (v libovolném pořadí).

Pro zápočet je třeba získat 100 bodů z alespoň 150 možných udělovaných průběžně za řešení domácích úloh, písemné testy a další aktivity. Z průběžné povahy kontroly neplyne nárok na vypisování opravných termínů testů ani zadání náhradních domácích úloh.

V důvodných případech (dlouhodobá nemoc, pobyt v zahraničí, apod.) může cvičící stanovit individuální podmínky na udělení zápočtu.

Zkouška může být písemná, ústní nebo kombinovaná. Zkouška může mít kontaktní nebo distanční formu. Formu zkoušky určuje vyučující.

Poslední úprava: Mareš Martin, Mgr., Ph.D. (06.02.2023)
Literatura
  • Cormen, Leiserson, Rivest, Stein : Introduction to algorithms (2nd Edition), Mc Graw Hill 2001
  • M.Mareš, T.Valla : Průvodce labyrintem algoritmů, CZ.NIC z.s.p.o. Praha 2017, 978-80-88168-19-5, http://pruvodce.ucw.cz/
  • Videozáznamy přednášek
Poslední úprava: Hric Jan, RNDr. (03.10.2017)
Požadavky ke zkoušce -

Je třeba rozumět teorii z přednášky a být schopen ji aplikovat na řešení algoritmických úloh.

Poslední úprava: Mareš Martin, Mgr., Ph.D. (02.03.2018)
Sylabus -

Volitelná témata v hranatých závorkách, zbytek je povinný.

1. Prostředky pro popis složitosti algoritmů a operací nad datovými strukturami

  • měření velikosti dat, počet kroků algoritmu jako funkce velikosti dat
  • výpočetní model RAM
  • asymptotická notace

2. Stromové datové struktury

  • binární vyhledávací stromy
  • AVL stromy
  • (a,b)-stromy
  • [červeno-černé stromy]

3. Hešování

  • popis jednoduchých strategií řešení kolizí
  • analýza průměrné časové složitosti vyhledávání
  • univerzální hešování

4. Třídění

  • analýza průměrného případu pro Quicksort, randomizovaný Quicksort
  • dolní odhad složitosti porovnávacích třídících algoritmů (rozhodovací stromy)

5. Základní grafové algoritmy

  • prohledávání do hloubky na neorientovaném grafu, detekce mostů a artikulací
  • prohledávání do hloubky na orientovaném grafu, tranzitivní uzávěr, topologické číslování
  • [detekce komponent silné souvislosti v lineárním čase]

6. Extremální cesty v grafech

  • extremální cesty v acyklickém orientovaném grafu, metoda kritické cesty
  • Dijkstrův algoritmus (zopakování binární haldy, srovnání implementace polem a binární haldou)
  • Bellmanův-Fordův algoritmus (hledání záporných cyklů)
  • [Floydův-Warshallův algoritmus]

7. Minimální kostra grafu

  • Jarníkův a Borůvkův algoritmus
  • [Kruskalův algoritmus a datová struktura pro Union-Find]

8. Metoda rozděl a panuj

  • obecné schéma algoritmů typu rozděl a panuj, souvislost jejich složitosti s rekurentními rovnicemi
  • substituční metoda řešení rekurentních rovnic a „master theorem (kuchařka)“
  • jednoduché aplikace: binární vyhledávání, Merge sort, násobení čísel (Karatsuba-Ofman)
  • složitější aplikace: Strassenovo násobení matic, [hledání mediánu v lin. čase v nejhorším případě]

9. Dynamické programování

  • obecný princip dynamického programování
  • editační vzdálenost řetězců
  • [optimální vyhledávací stromy]

Poslední úprava: Hric Jan, RNDr. (13.05.2022)
 
Univerzita Karlova | Informační systém UK