Základní informace o předmětu Otázka:

Podobné dokumenty
vyhledávací stromové struktury

Algoritmy I, složitost

vyhledávací stromové struktury

Algoritmizace prostorových úloh

Datové struktury 2: Rozptylovací tabulky

10. Složitost a výkon

Základy algoritmizace a programování

Různé algoritmy mají různou složitost

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

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

Technické informace. PA152,Implementace databázových systémů 4 / 25. Projekty. pary/pa152/ Pavel Rychlý

Časová složitost / Time complexity

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

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

ALGORITMY A DATOVÉ STRUKTURY

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III

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

Digitální učební materiál

Algoritmizace a programování

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

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

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

Časová a prostorová složitost algoritmů

Složitosti základních operací B + stromu

IB111 Úvod do programování skrze Python

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

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Select sort: krok 1: krok 2: krok 3: atd. celkem porovnání. výběr nejmenšího klíče z n prvků vyžaduje 1 porovnání

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Algoritmizace řazení Bubble Sort

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Časová složitost algoritmů

Digitální učební materiál

Vysvětlete funkci a popište parametry jednotlivých komponent počítače a periferních zařízení.

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

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

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Binární vyhledávací stromy pokročilé partie

Digitální učební materiál

Asymptotická složitost algoritmů

Binární soubory (datové, typované)

Základy algoritmizace, návrh algoritmu

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

bin arn ı vyhled av an ı a bst Karel Hor ak, Petr Ryˇsav y 23. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

Zadání druhého zápočtového projektu Základy algoritmizace, 2005

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

IAJCE Přednáška č. 9. int[] pole = new int[pocet] int max = pole[0]; int id; for(int i =1; i< pole.length; i++) { // nikoli 0 if (Pole[i] > max) {

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Prioritní fronta, halda

Maturitní téma: Programovací jazyk JAVA

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

IB111 Úvod do programování skrze Python

POKROČILÉ POUŽITÍ DATABÁZÍ

Rekurentní rovnice, strukturální indukce

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

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

3 Algoritmy řazení. prvku a 1 je rovněž seřazená.

Numerická stabilita algoritmů

Úvod do problematiky

IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada

Algoritmy a datové struktury

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

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce)

COMPLEXITY

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto:

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

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr

základní informace o kurzu základní pojmy literatura ukončení, požadavky, podmiňující předměty,

S databázemi se v běžném životě setkáváme velmi často. Uvádíme běžné použití databází velkého rozsahu:

Třídění a vyhledávání Searching and sorting

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

Rekurentní rovnice, strukturální indukce

Dynamické programování

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

3. úloha - problém batohu metodami branch & bound, dynamické programování, heuristika s testem

Tabulkový procesor. Základní rysy

A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.

Úvod do informatiky. Miroslav Kolařík

Stromy. Jan Hnilica Počítačové modelování 14

Rekurze a rychlé třídění

II. Úlohy na vložené cykly a podprogramy

Algoritmizace prostorových úloh

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

Datový typ prioritní fronta Semestrální práce z předmětu 36PT

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

Procesy a vlákna (Processes and Threads)

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

Přijímací zkouška - informatika

Algoritmizace prostorových úloh

1. Vyhledávání a tøídìní

MATURITNÍ ZKOUŠKA ve školním roce 2014/2015

Da D to t v o é v ty t py IB111: Datové typy

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

Střední průmyslová škola Zlín

5 Evidence manželských smluv

ČVUT FEL X36PAA - Problémy a algoritmy. 4. úloha - Experimentální hodnocení algoritmů pro řešení problému batohu

Pole a kolekce. v C#, Javě a C++

AVL stromy. pro každý uzel u stromu platí, že rozdíl mezi výškou jeho levého a pravého podstromu je nejvýše 1 stromy jsou samovyvažující

Transkript:

Základní informace o předmětu Otázka: Proč vůbec porovnávat algoritmy? Vlastnosti algoritmů přirozenost a stabilita algoritmu časová náročnost algoritmu asymetrická a asymptotická časová náročnost algoritmů řád algoritmu paměťová náročnost Literatura základní, doporučená 1

předmět KI/ADS zápočet / 2kb informace ki.ujep.cz termínovník, e nástěnka, personální složení literatura stag.ujep.cz Vstup do systému Prohlížení Předměty podmiňující předměty žádné (dříve KI/PGL1) navazující předměty: KI/PGL1, KI/PGL2, KI/DSY, KI/PDSY, a další e-mail: kvetuse.sykorova@ujep.cz požadavky k zápočtu: zápočtová práce specifikace dle dohody s vyučující 1x generátor náhodných celých čísel» Vstup: od, do, počet; Výstup: soubor txt 2x datová struktura» Zásobník, Fronta 1x třídící algoritmus složitosti 2» Bubblesort 2x algoritmus složitosti. log 2 nebo vyšší» Quicksort, Mergesort 1x vyhledávací algoritmus» Binary search + Brute force 1x speciální vyhledávací struktura» Hash table, Tree dle vlastního výběru 2

Co nás bude čekat? třídící algoritmy různé obtížnosti 2 : selectsort, bubblesort, log : quicksort, heapsort, : radixsort, bucketsort, vyhledávací algoritmy brute force, binary search, interpolation search speciální struktury pro rychlé vyhledávání index files: dense, sparse, multilevel hash table: close, open, perfect, speciální vyhledávací stromové struktury search tree, digi tree, binary tree, B tree, AVL tree, trie, definice: třídění proces (pře)uspořádání záznamů (objektů) tabulky podle určitého pořadí nejčastěji vzestupné uspořádání zrychluje následný proces vyhledávání vyhledávání proces nalezení / nenalezení informací o určitém konkrétním záznamu (objektu) z tabulky vyhledávací struktury specifické datové struktury určené pro rychlé vyhledávání nutná znalost vlastností klíčových hodnot 3

značení: n počet vstupních dat / řádků / záznamů key klíčová položka / sloupec / atribut určen pro rychlé vyhledání záznamu v příkladech: budeme uvádět pouze pohyby klíčových položek!!! přesto dochází i k přesunům celých záznamů!!! tyto přesuny časově náročnější časová náročnost dána délkou záznamu informace / data uchovávána v databázích uložena v tabulkách pouze pro uživatele řádky (záznamy), sloupce (atributy), hodnoty (pole) nutné rychlé vyhledávání řádově miliardy záznamů ( 10 ) doba čekání uživatele 20 příklady: databáze vozidel ČR, univerzitní a městské knihovny, evidence obyvatel ČR, bankovní účty, evidence nákupů obchodních řetězců, 4

nesetříděný soubor: vyhledávání = od prvního po poslední záznam: v průměru je potřeba /2 porovnání klíčů 1 počet porovnání n velikost souboru počet porovnání n = 10 1 až 10 n = 10 2 1 až 100 n = 10 3 1 až 1 000 n = 10 4 1 až 10 000 n = 10 5 1 až 100 000 n = 10 6 1 až 1 000 000 n = 10 9 1 až 1 000 000 000 setříděný soubor: vyhledávání = metoda půlení intervalu + setříděný soubor: 1 počet porovnání log 2 tj. 2 č á í velikost souboru počet porovnání n = 10 1 až 4 n = 10 2 1 až 7 n = 10 3 1 až 10 n = 10 4 1 až 14 n = 10 5 1 až 17 n = 10 6 1 až 20 n = 10 9 1 až 30 5

příklad Jak dlouho bude trvat vyhledat informace o daném záznamu? n = 1 000 000 záznamů předpoklad: 1 porovnání = 1milisec (dnes mnohonásobně rychlejší) data v paměti bez uspořádání algoritmy bez inteligence počet porovnání od 1 do 1 000 000 max 16,7 min data v paměti uspořádaná programově náročnější algoritmy! počet porovnání od 1 do log 2 1 000 000 19,9 max 20 milisec data v paměti uspořádaná ve speciální vyhledávací struktuře počet porovnání = 1, 2, 3, max 1,2,3, milisec programově a paměťově mnohem náročnější!!! databázový systém (DBS) systém uchovávající určité informace o různých reálných objektech nejpoužívanější je relační databázový systém (RDBS) údaje o jednotlivých typech objektů jsou uchovávány v tabulkách s určitou strukturou tabulky fyzicky realizovány pomocí speciálních vyhledávacích struktur B stromy, Hash Table, apod. indexové soubory seřazeny pro rychlé vyhledávání třídící a vyhledávací algoritmy 6

základní pojmy Tabulka souhrn určitých informací o jednom typu reálných objektů propojené tabulky vytvářejí základ RDBS Záznam všechny informace uchovávané v tabulce o jednom konkrétním objektu záznam tvoří jeden řádek tabulky Atribut určitý typ informace o všech objektech tabulky (položka) atribut tvoří jeden sloupek tabulky Pole určitá informace o jednom objektu pole tvoří průsečík jednoho řádku a jednoho sloupce atributy jméno příjmení datum Pavel Veselý 23.5.1979 záznamy Jana Tomáš Doudová Novotný 17.1.1992 2.11.1984 pole Emil Rychlý 15.7.1988 Jana Klára Jan Zárubová Dlouhá Novák 26.11.1981 9.8.1995 12.6.1993 7

klíč atribut (sloupec) tabulky určený pro setřídění záznamů podle jeho hodnot numerický klíč textový klíč unikátní klíč klíčový atribut tabulky každá hodnota se vyskytuje nejvýše jedenkrát duplicitní klíč klíčový atribut tabulky každá hodnota se může vyskytovat i vícekrát (u více různých záznamů) unikátní klíč duplicitní klíč 125 131 149 156 jana pavel dan pavel 167 174 183 jana adam pavel 8

jeden problém různé postupy řešení algoritmy různé způsoby naprogramování schopnosti programátora Je to nutné? výkon procesorů v PC desítky a stovky GFLOPS FLOPS (Floating Point Operations per Second) = počet operací za sec. důležitá vlastnost dobrého programátora schopnost porovnat různé postupy řešení vybrat z nich ten, který je pro daný problém nejvhodnější nespokojí se s prvním nápadem programátorský problém několik různých způsobů řešení pro jejich porovnání hledáme vhodná kritéria pro rozhodování který algoritmus je lepší a který je horší Je to ten, co nás napadne jako první / poslední? Je to ten s realizací nejjednodušší / nejsložitější? důležité: rychlost výpočtu, spotřeba operační paměti výpočetní složitost algoritmů vědecká disciplína s matematickými základy 9

obecné vlastnosti algoritmu analýza algoritmu (výběr s ohledem na přidělené prostředky) složitost (náročnost) algoritmu časová složitost rychlost výpočtu algoritmu paměťová (prostorová) složitost velikost potřebné operační paměti» nesmí být závislé na výbavě PC ani na schopnosti programátora tato hlediska často protichůdná rychlé a paměťově náročné X pomalé a paměťově nenáročné efektivita algoritmu doplňková vlastnost ke složitosti čím větší složitost, tím menší efektivita algoritmu obecné vlastnosti algoritmů způsob klasifikace počítačových algoritmů Přirozenost Stabilita Časová náročnost Paměťová náročnost Asymptotická složitost řád algoritmu 1.! Amortizovaná složitost 10

Přirozenost schopnost algoritmu rozpoznat již setříděnou posloupnost tj. schopnost algoritmu zkrátit dobu výpočtu s ohledem na případné částečné nebo úplné setřídění posloupnosti klíčů Stabilita schopnost algoritmu zachovat stejné pořadí záznamů s duplicitními hodnotami klíčů tj. schopnost algoritmu zachovat pořadí dvou různých záznamů se stejnou hodnotou klíče určuje se pro případ, že se ve vstupním poli mohou vyskytnout duplicitní hodnoty klíčů Rychlost algoritmu počet porovnání klíčových hodnot (i přesunů celých záznamů) potřebných pro výsledné uspořádání záznamů v tabulce závisí na vstupním počtu záznamů n časová náročnost algoritmu rychlost algoritmu počet porovnání klíčů nebo přesunů celých záznamů paměťová náročnost algoritmu velikost paměti potřebná pro bezproblémovou funkčnost algoritmu 11

Velikost dat (rozdělení): výkonnost závisí na počtu a velikosti záznamů vnitřní třídění (třídění polí) všechny záznamy se vejdou do operační paměti rychlost algoritmu určena počtem porovnání klíčových hodnot a počtem prohození celých záznamů vnější třídění (třídění souborů) všechny záznamy uloženy na vnějším paměťovém médiu mnohem pomalejší přístup na vnější médium rychlost algoritmu určena počtem přístupů na médium Asymptotická časová složitost: změna chování algoritmu v závislosti na změně počtu vstupních dat n nesmí být závislé ani na implementaci, ani na rychlosti počítače třída P» existuje algoritmus řešení s polynomiální časovou náročností třída NP» neexistuje algoritmus řešení s polynomiální časovou náročností řád algoritmu řád růstu funkce 1.! Amortizovaná časová složitost: průměrný čas potřebný pro vykonání sekvence v nejhorším případě 12

Jak porovnat dva různé algoritmy řešící stejnou úlohu? T ( n) 1 100 log2 n T ( n) 2 10 Rychlejší algoritmus je ten, jehož řád algoritmu vykazuje se zvětšujícím se počtem vstupních dat pomalejší rychlost růstu. n T(n) 1 n T(n) 2 300 8 80 400 16 160 500 32 320 600 64 640 700 128 1 280 800 256 2 560 Asymptotická časová složitost: Jak ji spočítat? určíme počet všech elementárních operací algoritmu operace porovnání dvou hodnot (if) operace aritmetické (+,, *, /, %, ) přesuny celých záznamů a instancí prvků složitost algoritmu = celkový počet porovnání, operací nebo přesunů celých záznamů výsledek bývá stejný nebo podobný 13

Řád algoritmu : Pro každou funkci : definujeme řád algoritmu ; funkce : 1.! seřazeno od nejnižšího po nejvyšší řád výpočet z : zanedbáme multiplikativní konstanty zanedbáme aditivní složitosti nižších řádů Např. pro 7 12 5 získáme kategorie : konstantní = 1 logaritmická = log lineární = lineárně logaritmická = log kvadratická = kubická = polynomiální = exponenciální = faktoriálová =! 14

vlastnosti : Základní: SEDGEWICK R. Algoritmy v C. SoftPress, Praha, 2003. WIRTH N. "Algorithms + Data Structures = Programs". Prentice Hall, 1975. WRÓBLEWSKI P. Algoritmy, datové struktury a programovací techniky. ComputerPress, Brno, 2004. KNUTH D.E.: The Art of Computer Programming. vol.3. Sorting and Searching. Addison Wesley, USA 2005 Rozšiřující: WIRTH N. "Algoritmy a štruktúry údajov". Alfa, Bratislava, 1989. RYCHLÍK J.: Programovací techniky. Kopp, České Budějovice 1994 HUDEC B.: Programovací techniky. FEL ČVUT, Praha 1999 KEOGH J., DAVIDSON K.: Datové struktury bez předchozích znalostí. ComputerPress, Brno 2006 15

16