ALGORITMY A DATOVÉ STRUKTURY

Podobné dokumenty
Algoritmy a datové struktury

PROJEKTOVÁNÍ A KOMUNIKACE

Výpočetní složitost algoritmů

PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky.

MATEMATIKA A 3 Metodický list č. 1

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Třídy složitosti P a NP, NP-úplnost

NP-ÚPLNÉ PROBLÉMY. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Digitální učební materiál

Zdůvodněte, proč funkce n lg(n) roste alespoň stejně rychle nebo rychleji než než funkce lg(n!). Symbolem lg značíme logaritmus o základu 2.

Složitost. Teoretická informatika Tomáš Foltýnek

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

Hledáme efektivní řešení úloh na grafu

Stromy, haldy, prioritní fronty

NPRG030 Programování I, 2018/19 1 / :03:07

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

Úvod do informatiky. Miroslav Kolařík

Prohledávání do šířky = algoritmus vlny

Složitost 1.1 Opera ní a pam ová složitost 1.2 Opera ní složitost v pr rném, nejhorším a nejlepším p ípad 1.3 Asymptotická složitost

Matematika II. dvouletý volitelný předmět

Vzdálenost uzlů v neorientovaném grafu

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

Kapitola 11. Vzdálenost v grafech Matice sousednosti a počty sledů

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2016

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

bfs, dfs, fronta, zásobník, prioritní fronta, halda

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Stromy. Strom: souvislý graf bez kružnic využití: počítačová grafika seznam objektů efektivní vyhledávání výpočetní stromy rozhodovací stromy

Dynamické programování

Složitost algoritmů. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

Třída PTIME a třída NPTIME. NP-úplnost.

Úvod do teorie grafů

5 Orientované grafy, Toky v sítích

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Základní datové struktury III: Stromy, haldy

Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41

Složitost Filip Hlásek

ALGORITMIZACE A PROGRAMOVÁNÍ

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3

10. Složitost a výkon

Přijímací zkouška - matematika

Základy algoritmizace, návrh algoritmu

ZÍSKÁVÁNÍ ZNALOSTÍ Z DATABÁZÍ

Modely teorie grafů, min.kostra, max.tok, CPM, MPM, PERT

Požadavky k opravným zkouškám z matematiky školní rok

Výroková a predikátová logika - III

TGH05 - Problém za milion dolarů.

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

MATEMATIKA A Metodický list č. 1

bfs, dfs, fronta, zásobník, prioritní fronta, halda

Základy algoritmizace a programování

13. Třídící algoritmy a násobení matic

Algoritmizace prostorových úloh

Matice sousednosti NG

Grafové algoritmy. Programovací techniky

SOFTWAROVÉ INŽENÝRSTVÍ 1

Grafové algoritmy. Programovací techniky

TGH05 - aplikace DFS, průchod do šířky

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

MATEMATIKA B 2. Metodický list č. 1. Význam první derivace pro průběh funkce

Dynamické programování

TGH05 - aplikace DFS, průchod do šířky

1. Vlastnosti diskretních a číslicových metod zpracování signálů... 15

IB111 Úvod do programování skrze Python

5.6.3 Rekursivní indexace složitostních tříd Uniformní diagonalizace Konstrukce rekursivních indexací a aplikace uniformní diagonalizace

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

Numerická stabilita algoritmů

Usuzování za neurčitosti

Složitost her. Herní algoritmy. Otakar Trunda

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

Algoritmizace prostorových úloh

MATEMATIKA B. Lineární algebra I. Cíl: Základním cílem tohoto tématického celku je objasnit některé pojmy lineární algebry a

3. Prohledávání grafů

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Jan Březina. 7. března 2017

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2016

Mimo samotné správnosti výsledku vypočteného zapsaným algoritmem je ještě jedno

MATEMATIKA B 2. Metodický list č. 1. Název tématického celku: Význam první a druhé derivace pro průběh funkce

Grafy. RNDr. Petra Surynková, Ph.D. Univerzita Karlova v Praze Matematicko-fyzikální fakulta.

Tato tematika je zpracována v Záznamy přednášek: str

Časová složitost / Time complexity

ZÍSKÁVÁNÍ ZNALOSTÍ Z DATABÁZÍ

Základní pojmy teorie grafů [Graph theory]

Výroková a predikátová logika - II

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Prioritní fronta, halda

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Algoritmy I, složitost

Anotace. pointery (pars prima). Martin Pergel,

NMIN101 Programování 1 2/2 Z --- NMIN102 Programování /2 Z, Zk

Anotace. Informace o praktiku z programování!!! Direktivy překladače Soubory (textové) Quicksort Metoda rozděl a panuj

Kostry. 9. týden. Grafy. Marie Demlová (úpravy Matěj Dostál) 16. dubna 2019

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od jara 2017

Dynamické programování

Databáze, sítě a techniky programování X33DSP

NP-úplnost. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 23. května / 32

Transkript:

Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 1 Časová složitost algoritmů Základním cílem tohoto tematického celku je vysvětlení potřebných pojmů a definic nutných k popisu časové složitosti algoritmů. Příslušné pojmy jsou vysvětleny na několika příkladech. Tématický celek je rozdělen do těchto dílčích témat: 1. měření velikosti vstupních dat, definice elementárních kroků algoritmu 2. definice časové složitosti, asymptotická notace 3. třídy algoritmů s různou časovou složitostí a jejich porovnání 1. dílčí téma: měření velikosti vstupních dat, definice elementárních kroků algoritmu K prvnímu dílčímu tématu si přečtěte příslušné kapitoly v: 1. Znát pojmy velikost vstupních dat (a různé metody jejího měření) elementární krok algoritmu (v závislosti na použitém výpočetním modelu) 2. Pochopit jak měřit velikost zápisu čísla (zopakovat látku z matematiky o logaritmech) 2. dílčí téma: definice časové složitosti, asymptotická notace K druhému dílčímu tématu si přečtěte příslušné kapitoly v: 1. Znát pojmy časová složitost algoritmu asymptotická notace pro popis funkcí 2. Umět vysvětlit 1

jak časová složitost algoritmu souvisí s velikostí vstupních dat daného algoritmu a počtem elementárních kroků, které daný algoritmus vykoná jak zapisovat složitost pomocí asymptotické notace 3. dílčí téma: třídy algoritmů s různou časovou složitostí a jejich porovnání K třetímu dílčímu tématu si přečtěte příslušné kapitoly v: 1. Znát pojmy lineární algoritmus, kvadratický algoritmus, polynomiální algoritmus exponenciální algoritmus 2. Pochopit zásadní rozdíl v praktické použitelnosti polynomiálních a exponenciálních algoritmů Způsob zakončení: Zápočet, zkouška 2

Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 2 Třídící algoritmy Základním cílem tohoto tematického celku je vysvětlení několika různých metod (algoritmů) na setřídění nesetříděné posloupnosti hodnot (čísel). Zároveň tyto algoritmy slouží jako vhodné příklady pro procvičení látky z první lekce (analýza časové složitosti algoritmů). Tématický celek je rozdělen do těchto dílčích témat: 4. naivní kvadratické algoritmy 5. heapsort 6. dolní odhad časové složitosti třídění pomocí porovnávání dvojic hodnot 1. dílčí téma: naivní kvadratické algoritmy K prvnímu dílčímu tématu si přečtěte příslušné kapitoly v: 3. Znát pojmy insertion-sort bubble-sort 4. Pochopit jak zmíněné dva algoritmy pracují proč je jejich časová složitost kvadratická 2. dílčí téma: heapsort K druhému dílčímu tématu si přečtěte příslušné kapitoly v: 3. Znát pojmy binární halda heapsort 4. Umět vysvětlit 3

jak zmíněný algoritmus pracuje jaká je jeho časová složitost 3. dílčí téma: dolní odhad časové složitosti třídění pomocí porovnávání dvojic hodnot K třetímu dílčímu tématu si přečtěte příslušné kapitoly v: 3. Znát pojmy rozhodovací strom časová složitost v nejhorším případě 4. Pochopit důkaz dolního odhadu složitosti třídění pomocí odhadu výšky příslušného rozhodovacího stromu Způsob zakončení: Zápočet, Zkouška 4

Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 3 Reprezentace grafů a jednoduché grafové algoritmy Základním cílem tohoto tematického celku je seznámení s konceptem neorientovaného a orientovaného grafu. Dalším cílem je ukázat jakými způsoby lze grafy reprezentovat pomocí standardních datových struktur a navrhnout algoritmus, řešící jednoduchou úlohu na grafech. Tématický celek je rozdělen do těchto dílčích témat: 7. neorientovaný graf, orientovaný graf a jejich reprezentace 8. naivní kvadratický algoritmus na nalezení topologického očíslování 1. dílčí téma: neorientovaný graf, orientovaný graf a jejich reprezentace K prvnímu dílčímu tématu si přečtěte příslušné kapitoly v: 5. Znát pojmy neorientovaný graf orientovaný graf matice sousednosti, seznamy sousedů 6. Umět pro graf zadaný obrázkem vytvořit jeho reprezentaci maticí sousednosti a naopak pro graf zadaný obrázkem vytvořit jeho reprezentaci pomocí seznamů sousedů a naopak 2. dílčí téma: naivní kvadratický algoritmus na nalezení topologického očíslování K druhému dílčímu tématu si přečtěte příslušné kapitoly v: 5. Znát pojmy acyklický graf topologické očíslování 6. Umět vysvětlit 5

jak zkonstruovat topologické očíslování acyklického grafu v kvadratickém čase Způsob zakončení: Zápočet, Zkouška 6

Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 4 Pokročilé grafové algoritmy Základním cílem tohoto tematického celku je navázání na látku předchozí lekce a návrh několika relativně sofistikovaných algoritmů řešících různé úlohy na grafech. Tématický celek je rozdělen do těchto dílčích témat: 9. prohledávání orientovaného grafu do hloubky 10. test acykličnosti grafu, topologické očíslování v lineárním čase 11. detekce silně souvislých komponent orientovaného grafu 1. dílčí téma: prohledávání orientovaného grafu do hloubky K prvnímu dílčímu tématu si přečtěte příslušné kapitoly v: 7. Znát pojmy čas objevení a čas opuštění vrcholu stromová hrana, zpětná hrana, dopředná hrana, příčná hrana 8. Porozumět jak pracuje algoritmus prohledávání do hloubky na orientovaném grafu jakou roli hrají jednotlivé typy hran 2. dílčí téma: test acykličnosti grafu, topologické očíslování v lineárním čase K druhému dílčímu tématu si přečtěte příslušné kapitoly v: 7. Znát pojmy acyklický graf topologické očíslování 8. Umět vysvětlit jak otestovat přítomnost cyklu v orientovaném grafu v lineárním čase 7

jak zkonstruovat topologické očíslování acyklického grafu v lineárním čase 3. dílčí téma: detekce silně souvislých komponent orientovaného grafu K třetímu dílčímu tématu si přečtěte příslušné kapitoly v: 1. Znát pojmy silně souvislá komponenta orientovaného grafu acyklická kondenzace orientovaného grafu 2. Umět vysvětlit jak pracuje třífázový lineární algoritmus na detekci silně souvislých komponent Způsob zakončení: Zápočet, Zkouška 8

Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 5 Algoritmy typu rozděl a panuj Základním cílem tohoto tematického celku je ukázání několika klasických algoritmů typu rozděl a panuj a vysvětlení metody pro analýzu jejich časové složitosti. Součástí zmíněné metody je i návod na řešení rekurentních rovnic jistého speciálního typu. Tématický celek je rozdělen do těchto dílčích témat: 12. obecný popis metody rozděl a panuj pro návrh algoritmů, mergesort 13. analýza složitosti rekurzivních algoritmů, master theorem 14. Strassenův algoritmus na násobení matic, hledání mediánu v lineárním čase 1. dílčí téma: obecný popis metody rozděl a panuj pro návrh algoritmů, mergesort K prvnímu dílčímu tématu si přečtěte příslušné kapitoly v: 9. Znát pojmy rekurzivní algoritmus mergesort 10.Porozumět jak pracuje obecný algoritmus typu rozděl a panuj jak sestavit rekurzivní rovnici vyjadřující jeho časovou složitost 2. dílčí téma: analýza složitosti rekurzivních algoritmů, master theorem K druhému dílčímu tématu si přečtěte příslušné kapitoly v: 9. Znát pojem rekurentní rovnice 9

10. Umět používat master theorem, tj. kuchařku pro řešení rekurentních rovnic speciálního typu 3. dílčí téma: Strassenův algoritmus na násobení matic, hledání mediánu v lineárním čase K třetímu dílčímu tématu si přečtěte příslušné kapitoly v: 3. Znát pojmy násobení matic medián posloupnosti 4. Umět vysvětlit jak pracuje Strassenův rekurzivní algoritmus pro násobení čtvercových matic a jaká je jeho časová složitost jak pracuje rekurzivní algoritmus pro hledání mediánu posloupnosti a proč je jeho časová složitost lineární Způsob zakončení: Zápočet, Zkouška 10

Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 6 Deterministické a nedeterministické algoritmy Základním cílem tohoto tematického celku je seznámení s konceptem nedeterministického algoritmu a zavedení příslušných formálních tříd časové složitosti. Tématický celek je rozdělen do těchto dílčích témat: 15. rozhodovací problémy, řešitelnost v polynomiálním čase 16. determinismus a nedeterminismus, třídy P a NP 17. polynomiální převoditelnost mezi problémy 1. dílčí téma: rozhodovací problémy, řešitelnost v polynomiálním čase K prvnímu dílčímu tématu si přečtěte příslušné kapitoly v: 11.Znát pojmy rozhodovací problém, optimalizační úloha řešitelnost v polynomiálním čase 12.Porozumět vztahem mezi rozhodovacími problémy a optimalizačními úlohami rozdílu mezi řešitelností v polynomiálním a v exponenciálním čase 2. dílčí téma: determinismus a nedeterminismus, třídy P a NP K druhému dílčímu tématu si přečtěte příslušné kapitoly v: 11. Znát pojmy deterministický výpočet, nedeterministický výpočet třída P, třída NP 11

12. Porozumět zásadnímu rozdílu mezi deterministickými výpočty a třídou P na straně jedné a nedeterministickými výpočty a třídou NP na straně druhé 3. dílčí téma: polynomiální převoditelnost mezi problémy K třetímu dílčímu tématu si přečtěte příslušné kapitoly v: 5. Znát pojem polynomiální transformace mezi rozhodovacími problémy 6. Umět vysvětlit jak lze algoritmicky řešit jeden rozhodovací problém pomocí jiného, na nějž je daný problém polynomiálně převoditelný Způsob zakončení: Zápočet, Zkouška 12

Název tématického celku: Cíl: ALGORITMY A DATOVÉ STRUKTURY Metodický list č. 7 Obtížně řešitelné problémy Základním cílem tohoto tematického celku je ukázání několika klasických problémů, které nelze řešit efektivně žádným algoritmem, zavedení pojmů NP-úplnost a NP-těžkost a vysvětlení důkazové techniky pro zařazování problémů do těchto efektivně neřešitelných tříd. Tématický celek je rozdělen do těchto dílčích témat: 18. příklady efektivně neřešitelných problémů ze třídy NP 19. třídy NP-úplných problémů a NP-těžkých úloh 20. důkazová technika pro ověřování NP-úplnosti problémů 1. dílčí téma: příklady efektivně neřešitelných problémů ze třídy NP K prvnímu dílčímu tématu si přečtěte příslušné kapitoly v: 13.Znát příklady efektivně neřešitelných rozhodovacích problémů efektivně neřešitelných optimalizačních úloh 2. dílčí téma: třídy NP-úplných problémů a NP-těžkých úloh K druhému dílčímu tématu si přečtěte příslušné kapitoly v: 13. Znát pojmy NP-úplnost NP-těžkost 14. Porozumět významu existence NP-úplných problémů a NP-těžkých optimalizačních úloh 13

3. dílčí téma: důkazová technika pro ověřování NP-úplnosti problémů K třetímu dílčímu tématu si přečtěte příslušné kapitoly v: 7. Umět vysvětlit jak použít polynomiální transformaci k důkazu NP-úplnosti zkonstruovat příslušnou polynomiální transformaci pro jednoduché případy Způsob zakončení: Zápočet, Zkouška 14