Základy algoritmizace. Hašování

Rozměr: px
Začít zobrazení ze stránky:

Download "Základy algoritmizace. Hašování"

Transkript

1 Základy algoritmizace Hašování

2 Problematika hašování Hašování - nástroj na jednoduchý způsob "zakódování vstupních dat. Vstupní data jsou zpracována hašovací funkcí jsou jistým způsobem komprimována. Relativně malý výstup, který vystihuje podstatu zpracovaných dat.

3 Použití hašování Použití - hašovací tabulky (abstraktní datová struktura) - komunikační a bezpečnostní protokoly - zpětné rychlé vyhledávání z velkého množství uložených dat - signatury

4 Definice hashování Mějme nějakou množinu U, nazýváme jí univerzum. Prvky z toho univerza nazváme klíče. Hašovací funkce h(k):u (0,...,m), kde m N je rozsah klíčů U > m => některé dva prvky se nutně musí hašovat na stejnou hodnotu - kolize.

5 ADT - tabulka jeprázdná(t) - vrací boolean (pravda v případě, že tabulka T neobsahuje žádný prvek vlož(t, p) - výsledkem je tabulka T rozšířená o prvek p vyber(t, k) - výsledkem operace je tabulka T, u které v případě, že obsahovala prvek p s klíčem k je tento prvek zrušen, jinak zůstává nezměněna, jevtabulce(t, k) - vrací boolean (pravda v případě, že tabulka T obsahuje prvek p s klíčem k, jinak nepravda)

6 Princip hašování Pojmem hash-funkce h budeme rozumět aritmetickou transformaci vstupních dat k (klíčů) do tvaru h(k), kterému budeme říkat hash hodnota. Hlavním účelem hashovací funkce je transformace klíčů univerza U do pozic (slotů) hashovací tabulky. Zmenší se nároky na paměť - pro původních U klíčů stačí udržovat jen m hodnot.

7 Princip hašovacích tabulek Hashovací funkce h zobrazuje univerzum klíčů U na sloty hašovací tabulky T[0,..., m-1] h: U {0,1,,m-1} Říkáme, že prvek s klíčem k je hašován do slotu h(k) nebo také, že h(k) je hašovací hodnota klíče k. Většinou zobrazujeme pouze S U.

8 Hašování U - univerzum k x k x k x k 1 k 4 h(k 1 ) h(k 3 ) = h(k 4 ) kolize! S U k 3 k 2 h(k 2 ) k x S - počet hashovaných klíčů

9 Řešení kolizí snaha volit hašovací funkci tak, aby docházelo k minimálnímu počtu kolizí dále tedy předpokládejme hašovací funkci ve tvaru h(k)= k mod m, kde m je prvočíslo dva základní způsoby řešení kolizí - separátní řetězení - otevřená adresace

10 Volba hash funkce (metoda dělení) h(k) = k mod m nevhodné hodnoty m: mocniny 2, mocniny 10 vhodné hodnoty m : prvočísla vzdálená od mocnin 2 Příklad: m=701 h(k) = k mod 701

11 Separátní řetězení (Separate Chaining) Klíče, které hashují na stejný index, jsou uloženy v seznamu. Problém kolizí se převádí na práci se seznamem.

12 Separátní řetězení h(k) = k mod m kde m = 11 h() = mod 11 =

13 Separátní řetězení h(k) = k mod m Kde m = h(79) = 79 mod 11 =

14 Separátní řetězení h(k) = k mod m kde m = 11, h(69) = 69 mod 11 =

15 Separátní řetězení 0 h(k) = k mod m kde m = , 79, h(72) = 72 mod 11 = 6 kolize

16 Separátní řetězení 0 h(k) = k mod m kde m = 11, 79, 69, 72, 24, 14, 20, 33, 85, 52 h(24) = 2 h(14) = 3 h(20) = 9 h(33) = 0 h(85) = 8 h(52) =

17 Separátní řetězení 0 h(k) = k mod M kde M = 11, 79, 69, 72, 24, 14, 20, 33, 85, 52 h(24) = 2 h(14) = 3 h(20) = 9 h(33) = 0 h(85) = 8 h(52) =

18 Separátní řetězení void Insert(Item item) { Table[h(item.key)].InsertToList(item); } bool Search(Key k) { return Table[h(k)].SearchInList(k); } void Delete(Item item) { Table[h(item.key)].DeleteFromList(item); }

19 Separátní řetězení Nechť je dána hashovací tabulka T s m sloty, ve které je uloženo n prvků. Číslo, kde = n/m se nazývá faktor naplnění hašovací tabulky, udává zároveň i průměrnou délku seznamu ve slotu. Efektivita pro nejhorší případ: všech n klíčů se hashuje do jednoho slotu a vytváří tak seznam délky n. Složitost pro nejhorší případ je tedy O(n) plus čas nutný pro výpočet hašovací funkce. V průměrném případě pro vyhledání potřebujeme O(1).

20 Otevřená adresace Předpokládejme, že m>n, jinými slovy, tabulka je větší než potřebujeme. Klíče můžeme uložit tabulce na prázdná místa a vyřešit tak kolize. Pro tento případ se používají metody otevřené adresace. - lineární pokusy (Linear Probing) - dvojité hašování (Double Hashing)

21 Lineární pokusy Při vzniku kolize procházíme následující prvky tabulky a prvek umístíme do prvního volného místa. Dochází zde ovšem ke zhlukování prvků s klíči, které se hašují na stejný index. Rozšířená hašovací funkce h(k, i):uxn (0,...,m), kde i N je číslo pokusu

22 Lineární pokusy h(k) = k mod m h(k,i) = (h (k) + i) mod m kde m = 11 h() = mod 11 =

23 Lineární pokusy h(k) = k mod m h(k,i) = (h (k) + i) mod m kde m = h(79) = 79 mod 11 =

24 Lineární pokusy h(k) = k mod m h(k,i) = (h (k) + i) mod m kde m = 11, h(69) = 69 mod 11 =

25 Lineární pokusy h(k) = k mod m h(k,i) = (h (k) + i) mod m kde m = 11, 79, h(72) = 72 mod 11 = 6 zjistíme další slot kolize

26 Lineární pokusy h(k) = k mod m h(k,i) = (h (k) + i) mod m kde m = 11, 79, 69, h(24,0) = 24 mod 11 = 2 h(24,1) = = 3 h(24,2) = = 4 zjistíme další slot kolize

27 Lineární pokusy h(k) = k mod m h(k,i) = (h (k) + i) mod m kde m = 11, 79, 69, 72, 24, 14, 20, 33, 85, 52 h(14) = 3 h(20) = 9 h(33) = 0 h(85) = 8 h(52) =

28 Lineární pokusy void HashInsert(Item item) { int j, i = 0; do { j = h(item.key, i); if (T[j] == null) {// nalezen volný slot T[j] = item; return; } // if else i += 1; } while (i < m); error "overflow" } // určení dalšího pokusu

29 Lineární pokusy bool HashSearch(Key k) { int j, i = 0; do { j = h(k, i); // určení dalšího pokusu if (T[j] == k) return true; i += 1; } while ((T[j]!= null) && (i!= m)); return false; }

30 Lineární pokusy Nejhorší případ nastane, když hodnota hašovací funkce je stejná pro všechny prvky. Potom je složitost vyhledání prvku v tabulce O(n). Průměrně jde o algoritmus se složitostí O(1).

31 Dvojité hašování Dvojité hashování je patrně nejlepší metodou při otevřeném adresování, protože permutace slotů poskytované touto metodou mají nejblíže k náhodně voleným permutacím. Dvojité hashování používá hashovací funkci tvaru: h(k,i) = (h1(k) + ih2(k)) mod m kde h1 a h2 jsou pomocné hashovací funkce.

32 Dvojité hašování Na počátku je testován slot T[h1(k)]. Další pokusy jsou určeny posunem o pozic modulo m. h2(k) Je tak umožněn větší rozptyl pro výběr sekvencí pokusů, protože na klíči k závisí nejen počáteční pozice, ale i velikost kroku, o který se v tabulce posunujeme.

33 Dvojité hašování Implementace algoritmu bude obdobná jako implementace lineárních pokusů s tím, že na rozdíl od metody lineárních pokusů se v případě kolize neposuneme o jeden prvek, ale vypočítáme posun takto: inc = m-2- (k mod (m-2))

34 Dvojité hašování h(k) = k mod M kde M = 11 inc = M-2- (k mod (M-2)) inc = 9 - (k mod 9) h() = mod 11 =

35 Dvojité hašování h(k) = k mod M kde M = 11 inc = M-2- (k mod (M-2)) inc = 9 - (k mod 9) 79 h(79) = 79 mod 11 =

36 Dvojité hašování h(k) = k mod M kde M = 11 inc = M-2- (k mod (M-2)) inc = 9 - (k mod 9), h(69) = 69 mod 11 =

37 Dvojité hašování h(k) = k mod M kde M = 11 inc = M-2- (k mod (M-2)) inc = 9 - (k mod 9), 79, h(72) = 72 mod 11 = 6 kolize zjistíme hodnotu inc pro obsazení dalšího slotu inc = 9 - (72 mod 9) = 9-0 =

38 Dvojité hašování h(k) = k mod M kde M = 11 inc = M-2- (k mod (M-2)) inc = 9 - (k mod 9), 79, 69, h(24) = 24 mod 11 = 2 kolize zjistíme hodnotu inc pro obsazení dalšího slotu inc = 9 - (24 mod 9) = 9-6 =

39 Dvojité hašování h(k) = k mod M kde M = 11 inc = M-2- (k mod (M-2)) inc = 9 - (k mod 9), 79, 69, 72, 24, 14, 20, 33, 85, 52 h(14) = 3 h(20) = 9 h(33) = 0 h(85) = 8 h(52) = 4 inc(14) = 9-5 = 4 inc(52) = 9-7 =

40 Dvojité hašování h(k) = k mod M kde M = 11 inc = M-2- (k mod (M-2)) inc = 9 - (k mod 9), 79, 69, 72, 24, 14, 20, 33, 85, 52 h(14) = 3 h(20) = 9 h(33) = 0 h(85) = 8 h(52) = 4 inc(14) = 9-5 = 4 inc(52) = 9-7 =

41 Nejvyšší počty pokusů při neúspěšném vyhledavání jako funkce faktoru naplnění α

42 Nejvyšší počty pokusů při neúspěšném vyhledavání jako funkce faktoru naplnění α

Úvod. Úvod do programování. Úvod. Hashovací tabulky

Úvod. Úvod do programování. Úvod. Hashovací tabulky do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava do programování, 2004/2005 Mnohé aplikace nepotřebují ke svému provozu celou škálu operací podporovaných

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

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

Hašování. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13. Hašování doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. února 2019 Jiří Dvorský (VŠB TUO) Hašování 375 / 397 Osnova přednášky

Více

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018 Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018 doc. Mgr. Jiří Dvorský, Ph.D. 24. dubna 2018 Verze zadání 24. dubna 2018 První verze 1 1 Hašovací tabulka V tomto zadání

Více

Návrh designu: Radek Mařík

Návrh designu: Radek Mařík Návrh designu: Radek Mařík 1. Hashovací (=rozptylovací) funkce a) převádí adresu daného prvku na jemu příslušný klíč b) vrací pro každý klíč jedinečnou hodnotu c) pro daný klíč vypočte adresu d) vrací

Více

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

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 21. září 2018 Jiří Dvorský (VŠB TUO) Vyhledávání 242 / 433 Osnova přednášky

Více

ALS1 Přednáška 1. Pravěpodobnost, náhodná proměnná, očekávaná hodnota náhodné proměnné, harmonická čísla

ALS1 Přednáška 1. Pravěpodobnost, náhodná proměnná, očekávaná hodnota náhodné proměnné, harmonická čísla ALS Přednáška Pravěpodobnost, náhodná proměnná, očekávaná hodnota náhodné proměnné, harmonická čísla Prostor elementárních jevů S je množina, jejíž prvky se nazývají elementární jev. Jev je podmnožina

Více

Hašování (Vyhledávání metodou transformace klíče)

Hašování (Vyhledávání metodou transformace klíče) Hašování (Vyhledávání metodou transformace klíče) Velmi účinnou vyhledávací metodou je hašování. Pro její anglický název hashing se poměrně obtížně hledá vhodný překlad do českého jazyka, proto zůstaneme

Více

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

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12. Vyhledávání doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Vyhledávání 201 / 344 Osnova přednášky

Více

Vyhledávací algoritmy

Vyhledávací algoritmy Vyhledávací algoritmy Sekvenční hledání, binární hledání, indexace klíče, BST, hashing. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš

Více

Vyhledávání, zejména rozptylování

Vyhledávání, zejména rozptylování Datové struktury a algoritmy Část 11 Vyhledávání, zejména rozptylování Petr Felkel 16.5.2016 Topics Vyhledávání Rozptylování (hashing) Rozptylovací funkce Řešení kolizí Zřetězené rozptylování Otevřené

Více

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

Michal Krátký. Úvod do programování. Cíl kurzu. Podmínky získání zápočtu III/III Michal Krátký Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 tel.: +420 596 993 239 místnost: A1004 mail: michal.kratky@vsb.cz

Více

Tabulka. Často jde nejenom o dynamickou množinu, ale i statickou množinu. Matematické tabulky statická množina

Tabulka. Často jde nejenom o dynamickou množinu, ale i statickou množinu. Matematické tabulky statická množina Tabulka Často jde nejenom o dynamickou množinu, ale i statickou množinu Matematické tabulky statická množina x cos x 0,0 1,000 0,1 0,995 0,2 0,980 0,3 0,955 0,4 0,921 0,5 0,878 0,6 0,825 0,7 0,765 0,8

Více

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky

2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky 25 Pole Datová struktura kolekce elementů (hodnot či proměnných), identifikovaných jedním nebo více indexy, ze kterých

Více

POZOR klíč NENÍ index (adresa), ale podle klíče se hodnoty ukládají na indexy (adresy).

POZOR klíč NENÍ index (adresa), ale podle klíče se hodnoty ukládají na indexy (adresy). Hashovací tabulka = Hash table Hashovací tabulka (hash table, rozptýlená tabulka, hešovací tabulka) je datová struktura, která slouží k ukládání dvojic klíč-hodnota. kombinuje výhody vyhledávání pomocí

Více

Lineární datové struktury

Lineární datové struktury Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Lineární datové

Více

HASHING GENERAL Hashovací (=rozptylovací) funkce

HASHING GENERAL Hashovací (=rozptylovací) funkce Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný

Více

Abstraktní datové typy

Abstraktní datové typy Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,

Více

Rozptylovací tabulky

Rozptylovací tabulky Rozptylovací tabulky Hash tables Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 31 Rozptylovací tabulka Hash table Rozptylovací tabulka = implementace množiny / asociativního pole

Více

Tabulka. Datová struktura, která umožňuje vkládat a později vybírat informace podle identifikačního klíče. Mohou být:

Tabulka. Datová struktura, která umožňuje vkládat a později vybírat informace podle identifikačního klíče. Mohou být: ADT Tabulka Datová struktura, která umožňuje vkládat a později vybírat informace podle identifikačního klíče. Mohou být: pevně definované (LUT Look Up Table) s proměnným počtem položek Konvence: Tabulka

Více

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

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou

Více

5 Rekurze a zásobník. Rekurzivní volání metody

5 Rekurze a zásobník. Rekurzivní volání metody 5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení

Více

Algoritmy II. Otázky k průběžnému testu znalostí

Algoritmy II. Otázky k průběžnému testu znalostí Algoritmy II Otázky k průběžnému testu znalostí Revize ze dne 19. února 2018 2 Lineární datové struktury 1 1. Vysvětlete co znamená, že zásobník představuje paměť typu LIFO. 2. Co je to vrchol zásobníku?

Více

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39 Základy algoritmizace Michal Krátký 1, Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Základy algoritmizace, 2006/2007 Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Vyhledávání, vkládání, odstraňování Vyhledání hodnoty v nesetříděném poli Vyhledání hodnoty v setříděném poli Odstranění hodnoty z pole Vkládání hodnoty do pole Verze pro akademický

Více

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

TÉMATICKÝ OKRUH TZD, DIS a TIS

TÉMATICKÝ OKRUH TZD, DIS a TIS TÉMATICKÝ OKRUH TZD, DIS a TIS Číslo otázky : 13. Otázka : Základní datové struktury (pole, zásobník, binární strom atd.), datové struktury vhodné pro fyzickou implementaci relačních dat v SŘBD (hašovací

Více

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11 333LP - lgoritmy a programování - Zkouška z předmětu 333LP Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8]

Více

Kolekce, cyklus foreach

Kolekce, cyklus foreach Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro

Více

Základní datové struktury

Základní datové struktury Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013

Více

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11 Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8] count=0 for i in range(1,len(data)):

Více

Programování v C++, 2. cvičení

Programování v C++, 2. cvičení Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Složitost algoritmů. Třídění Přednáška 8 16. listopadu 2009 Který algoritmus je "lepší"? Různé algoritmy, které řeší stejnou úlohu zbytek = p % i; zbytek = p - p/i*i;

Více

1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů: Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.

Více

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4 Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first

Více

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7 Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí

Více

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy Volné stromy Úvod do programování Souvislý, acyklický, neorientovaný graf nazýváme volným stromem (free tree). Často vynecháváme adjektivum volný, a říkáme jen, že daný graf je strom. Michal Krátký 1,Jiří

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

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

Algoritmizace Hashing II. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Hashing II Jiří Vyskočil, Marko Genyg-Berezovskyj 010 Srůstající hashování (coalesced hashing) Znám předem počet prvků (odhad) Z důvodů efektivity nechci ukazatele (mezi prvky). Na jednu pozici tabulky

Více

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

HASHING GENERAL Hashovací (=rozptylovací) funkce

HASHING GENERAL Hashovací (=rozptylovací) funkce Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný

Více

Základy algoritmizace. Pattern matching

Základy algoritmizace. Pattern matching Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají

Více

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

NEJKRATŠÍ CESTY I. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze NEJKRATŠÍ CESTY I Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 7 Evropský sociální fond Praha & EU: Investujeme do vaší

Více

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

DobSort. Úvod do programování. DobSort Implementace 1/3. DobSort Implementace 2/3. DobSort - Příklad. DobSort Implementace 3/3 DobSort Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 V roce 1980 navrhl Dobosiewicz variantu (tzv. DobSort),

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Stromy, haldy, prioritní fronty

Stromy, haldy, prioritní fronty Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík

Více

Úvod do programování - Java. Cvičení č.4

Úvod do programování - Java. Cvičení č.4 Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení

Více

Dynamické datové struktury IV.

Dynamické datové struktury IV. Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra

Více

Definice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy

Definice uživatelského typu. Uživatelem definované typy. Součinové datové typy. Součtové datové typy. FLP - Uživatelem definované typy Uživatelem definované typy Ing. Lumír Návrat katedra informatiky, A 1018 59 732 3252 Definice uživatelského typu data Color = Red Green Blue Color typový konstruktor Red / Green / Blue datové konstruktory

Více

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Jak v Javě primitivní datové typy a jejich reprezentace BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické Obsah Celočíselný datový typ Reálný datový typ Logický datový typ, typ Boolean

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu

Více

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL Středoškolská technika 2017 Setkání a prezentace prací středoškolských studentů na ČVUT PROGRAM NA GENEROVÁNÍ PRVOČÍSEL Vojtěch Pchálek Střední škola technická Kouřílkova 8, Přerov ANOTACE Bratr, který

Více

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12. Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),

Více

PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2

PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2 PI JE JEDNODUCHÝ IMPERATIVNÍ PROGRAMOVACÍ JAZYK OBSAHUJE PODPORU ANOTACÍ NEOBSAHUJE NĚKTERÉ TYPICKÉ KONSTRUKTY PROGRAMOVACÍCH JAZYKŮ JAKO JSOU REFERENCE, UKAZATELE, GLOBÁLNÍ PROMĚNNÉ PODOBÁ SE JAZYKU C

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Topics. Vyhledávání, zejména rozptylování. Slovník - Dictionary. Vyhledávání. Rozptylování - Hashing. Rozptylování - Hashing

Topics. Vyhledávání, zejména rozptylování. Slovník - Dictionary. Vyhledávání. Rozptylování - Hashing. Rozptylování - Hashing 8..007 Datové struktury a algoritmy Vyhlednávání Topics ást Vyhledávání, zejména rozptylování Petr Felkel Rozptylování (hashing) Rozptylovací funkce ešení kolizí Z et zené rozptylování Otev ené rozptylování

Více

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1. Prvocisla: Kratky ukazkovy priklad na demonstraci baliku WEB. Nasledujici program slouzi pouze jako ukazka nekterych moznosti a sluzeb,

Více

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

Základní datové struktury III: Stromy, haldy Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní

Více

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

Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double

Více

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií 1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední

Více

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

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel

Více

ADT/ADS = abstraktní datové typy / struktury

ADT/ADS = abstraktní datové typy / struktury DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní

Více

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

Třídění a vyhledávání Searching and sorting Třídění a vyhledávání Searching and sorting Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 33 Vyhledávání Třídění Třídící algoritmy 2 / 33 Vyhledávání Searching Mějme posloupnost (pole)

Více

ABSTRAKTNÍ DATOVÉ TYPY (ADT)

ABSTRAKTNÍ DATOVÉ TYPY (ADT) ABSTRAKTNÍ DATOVÉ TYPY (ADT) hierarchie abstrakcí: nejvyšší úroveň ZOO DruhZvirat celá čísla, řetězce nejnižší úroveň bity Abstrahujeme od - reprezentace (implementace) dat - realizace (implementace) operací

Více

Generování pseudonáhodných. Ing. Michal Dorda, Ph.D.

Generování pseudonáhodných. Ing. Michal Dorda, Ph.D. Generování pseudonáhodných čísel při simulaci Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky V simulačních modelech se velice často vyskytují náhodné proměnné. Proto se budeme zabývat otázkou, jak při simulaci

Více

Abstraktní datové typy FRONTA

Abstraktní datové typy FRONTA Abstraktní datové typy FRONTA Fronta je lineární datová struktura tzn., že ke každému prvku s výjimkou posledního náleží jeden následník a ke každému prvku s výjimkou prvního náleží jeden předchůdce. Do

Více

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

Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce) 13. Metody vyhledávání. Adresní vyhledávání (přímý přístup, zřetězené a otevřené rozptylování, rozptylovací funkce). Asociativní vyhledávání (sekvenční, binárním půlením, interpolační, binární vyhledávací

Více

5. přednáška - Rozklad problému na podproblémy

5. přednáška - Rozklad problému na podproblémy 5. přednáška - Rozklad problému na podproblémy Obsah přednášky: Rozklad problému na podproblémy. Rekurze. Algoritmizace (Y36ALG), Šumperk - 5. přednáška 1 Rozklad problému na podproblémy Postupný návrh

Více

Dynamické datové struktury III.

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

Více

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

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 Stromy úvod 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 Neorientovaný strom Orientovaný strom Kořenový orientovaný

Více

Jazyk C# a platforma.net

Jazyk C# a platforma.net Jazyk C# a platforma.net Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Syntaxe jazyka C# - 1. část BI-DNP Evropský sociální fond

Více

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost

Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost Amortizovaná složitost. Prioritní fronty, haldy binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost 1. Asymptotické odhady Asymptotická složitost je deklarována na základě

Více

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy

Více

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Vektory Definice 011 Vektorem aritmetického prostorur n budeme rozumět uspořádanou n-tici reálných čísel x 1, x 2,, x n Definice 012 Definice sčítání

Více

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2 Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných

Více

Testování prvočíselnosti

Testování prvočíselnosti Dokumentace zápočtového programu z Programování II (NPRG031) Testování prvočíselnosti David Pěgřímek http://davpe.net Úvodem V různých oborech (například v kryptografii) je potřeba zjistit, zda je číslo

Více

Rekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1

Rekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1 Rekurze a zásobník Jak se vypočítá rekurzivní program? volání metody vyšší adresy ret1 main(){... fa(); //push ret1... PC ret2 void fa(){... fb(); //push ret2... return //pop void fb(){... return //pop

Více

Lineární datové struktury

Lineární datové struktury Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 5. března 2019 Jiří Dvorský (VŠB TUO) Lineární datové

Více

Aplikace. vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin

Aplikace. vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin Aplikace Aplikace se liší tím, k jakému účelu jsou tvořeny. To má vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin s podobnou

Více

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

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Dynamické programování Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Rozděl a panuj (divide-and-conquer) Rozděl (Divide): Rozděl problém na několik podproblémů tak, aby tyto podproblémy odpovídaly původnímu

Více

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................

Více

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK)

ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) ALGORITMIZACE 2010/03 STROMY, BINÁRNÍ STROMY VZTAH STROMŮ A REKURZE ZÁSOBNÍK IMPLEMENTUJE REKURZI PROHLEDÁVÁNÍ S NÁVRATEM (BACKTRACK) Strom / tree uzel, vrchol / node, vertex hrana / edge vnitřní uzel

Více

Abstraktní datové typy II.

Abstraktní datové typy II. Datové struktury a algoritmy Abstraktní datové typy II. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2012 Datové struktury a algoritmy,

Více

Vzdálenost uzlů v neorientovaném grafu

Vzdálenost uzlů v neorientovaném grafu Vzdálenosti a grafy Vzdálenost uzlů v neorientovaném grafu Je dán neorientovaný neohodnocený graf G = (V,E,I) vzdálenost uzlů u a v v neorientovaném souvislém grafu G je délka nejkratší cesty spojující

Více

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr Strukturované typy a ukazatele Úvod do programování 1 Tomáš Kühr Motivace Se základními datovými typy si sice vystačíme Někdy to ale může být nepříjemně nepřehledné Příklady: long double soucet(const long

Více

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

IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada IB015 Neimperativní programování Časová složitost, Typové třídy, Moduly Jiří Barnat Libor Škarvada Sekce IB015 Neimperativní programování 07 str. 2/37 Časová složitost Časová složitost algoritmu IB015

Více

68. ročník Matematické olympiády 2018/2019

68. ročník Matematické olympiády 2018/2019 68. ročník Matematické olympiády 2018/2019 Řešení úloh krajského kola kategorie P P-II-1 Tulipány Budeme řešit o něco obecnější úlohu: dovolíme si předepsat, zda má na n-té pozici být tulipán, a pokud

Více

Konstruktory a destruktory

Konstruktory a destruktory Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,

Více

5 Přehled operátorů, příkazy, přetypování

5 Přehled operátorů, příkazy, přetypování 5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování

Více

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

NPRG030 Programování I, 2018/19 1 / :03:07 NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07 Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování

Více

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární

Více

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

V případě jazyka Java bychom abstraktní datový typ Time reprezentující čas mohli definovat pomocí třídy takto: 20. Programovací techniky: Abstraktní datový typ, jeho specifikace a implementace. Datový typ zásobník, fronta, tabulka, strom, seznam. Základní algoritmy řazení a vyhledávání. Složitost algoritmů. Abstraktní

Více

Časová složitost algoritmů

Časová složitost algoritmů Časová složitost algoritmů Důležitou vlastností algoritmu je časová náročnost výpočtů provedené podle daného algoritmu Ta se nezískává měřením doby výpočtu pro různá data, ale analýzou algoritmu, jejímž

Více

Poslední nenulová číslice faktoriálu

Poslední nenulová číslice faktoriálu Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip

Více

TGH07 - Chytré stromové datové struktury

TGH07 - Chytré stromové datové struktury TGH07 - Chytré stromové datové struktury Jan Březina Technical University of Liberec 1. dubna 2014 Prioritní fronta Datová struktura s operacemi: Odeber Minum (AccessMin, DeleteMin) - vrat prvek s minimálním

Více

Rozklad problému na podproblémy

Rozklad problému na podproblémy Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy zadaný problém rozložíme na podproblémy pro řešení podproblémů zavedeme abstraktní příkazy s pomocí abstraktních

Více

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right) Indukcí dokažte následující výrok: pokud lef t a right jsou parametry funkce f a platí left right, pak volání f(array, left, right) vrátí minimální hodnotu z hodnot všech prvků v poli array na indexech

Více