Jednoduché datové struktury a stromy

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

Download "Jednoduché datové struktury a stromy"

Transkript

1 155OB poznámky Jednoduché datové struktury a stromy / 69

2 Obsah 1 Jednoduché datové struktury a stromy Jednoduché datové struktury Binární stromy AVL stromy Quadtrees a Octrees B-stromy R-stromy Jednoduché datové struktury a stromy / 69

3 O notace Asymptotická složitost (konstantní, lineární, kvadratická, logaritmická,... ) pokud existuje x 0 takové, že f (x) = O(g(x)) pro x f (x) M g(x) pro x > x 0 říklady O(1) indexování prvku v poli O(log 2 N) vyhledání prvku v seřazeném poli metodou půlení intervalu O(N) vyhledání prvku v neseřazeném poli lineárním (sekvenčním) vyhledáváním O(N log N) seřazení pole reálných čísel podle velikosti (např. algoritmem Mergesort) O(N 2 ) diskrétní Fourierova transformace (DFT) O(2 N ) přesné řešení problému obchodního cestujícího (či jiného N-úplného problému hrubou silou) Jednoduché datové struktury a stromy / 69

4 Třída Object Jednoduché datové struktury a stromy omocná třída Object používaná v následujících ukázkách class Object { public : Object ( ) { t o t a l ++; i n i t ( ) ; } e x p l i c i t Object ( unsigned i n t k ) : key_ ( k ) { t o t a l ++; } Object ( const Object& obj ) { copy ++; key_ = obj. key_ ; } unsigned i n t key ( ) const { return key_ ; } bool operator < ( const Object& obj ) const { l t ++; return key_ < obj. key_ ; } bool operator == ( const Object& obj ) const { eq++; return key_ == obj. key_ ; } bool operator > ( const Object& obj ) const { gt ++; return key_ > obj. key_ ; } bool operator <= ( const Object& obj ) const { le ++; return key_ <= obj. key_ ; } bool operator >= ( const Object& obj ) const { ge++; return key_ >= obj. key_ ; } s t a t i c void sequential_keys ( ) { rand_key = 0; } private : void i n i t ( ) ; unsigned i n t key_ ;... atd... Jednoduché datové struktury a stromy / 69

5 Třída Object - pokračování Náhodně generované klíče třídy Object void Object : : i n i t ( ) { i f (! rand_key ) { key_ = ++max_key ; return ; } ; static std : : set <unsigned int > used_keys ; i f ( max_key <= 0) max_key = 17; for ( ; ; ) { const unsigned i n t k = 1 + i n t ( max_key ( rand ( ) / ( RAND_MAX ) ) ) ; i f ( used_keys. f i n d ( k ) == used_keys. end ( ) ) { used_keys. i n s e r t ( k ) ; i f ( k > max_key ) max_key = k ; key_ = k ; return ; } } } max_key += 100; Jednoduché datové struktury a stromy / 69

6 demo-1 Jednoduché datové struktury a stromy Vytvoření statického pole o sto prvcích typu Object #include <iostream > #include <algorithm > #include <vector > #include " o b j e k t. h " i n t main ( ) { std : : cout << " Object demo 1\ n " ; } const i n t M = 100; Object p [M] ; Výstup Object demo 1 o b j e c t s 100 copy c t o r 0 operator < 0 operator == 0 operator > 0 operator <= 0 operator >= 0 Jednoduché datové struktury a stromy / 69

7 demo-2 Jednoduché datové struktury a stromy Vytvoření statického pole o sto prvcích typu Object a setřídění #include <iostream > #include <algorithm > #include " o b j e k t. h " i n t main ( ) { std : : cout << " Object demo 2\ n " ; } const i n t M = 100; Object p [M] ; std : : s o r t ( p, p+m) ; Výstup Object demo 2 o b j e c t s 100 copy c t o r 188 operator < 782 operator == 0 operator > 0 operator <= 0 operator >= 0 Jednoduché datové struktury a stromy / 69

8 Obsah Jednoduché datové struktury a stromy Jednoduché datové struktury 1 Jednoduché datové struktury a stromy Jednoduché datové struktury Binární stromy AVL stromy Quadtrees a Octrees B-stromy R-stromy Jednoduché datové struktury a stromy / 69

9 Hashovací tabulka Jednoduché datové struktury a stromy Jednoduché datové struktury Keys Hash Table Objects 0 John Smith Lisa Smith Sam Doe David Göthberg Lisa Smith John Smith Sam Doe Jednoduché datové struktury a stromy / 69

10 Jednoduché datové struktury demo-hash-1 - hašovací funkce Uložní milionu zaznamů a jejich vyhledání Hash demo ========= V hashovaci tabulce ulozeno objektu V e l i k o s t hashovaci t a b u l k y ( load f a c t o r 1. 4 ) ocet pokusu je , t j. v prumeru 2.0 na jednu operaci hledani Maximalni pocet pokusu pro jedno hledani 98 Na prvni pokus nalezeno objektu t j. 69.2% řehešování při zaplnění tabulky (demo-hash-2) Hash demo ========= rehash ==> rehash ==> rehash ==> V hashovaci tabulce ulozeno objektu V e l i k o s t hashovaci t a b u l k y ( load f a c t o r 2. 4 ) ocet pokusu je , t j. v prumeru 1.2 na jednu operaci hledani Maximalni pocet pokusu pro jedno hledani 23 Na prvni pokus nalezeno objektu t j. 85.8% Jednoduché datové struktury a stromy / 69

11 Jednoduché datové struktury earsonova hašovací funkce pro řetězce Funkce mapuje daný řetězec s délky N na osm znaků h j (unsigned char) h = T [ ( s [ 0 ] + j ) % ] ; f o r ( unsigned i =1; i <N; i ++) h = T [ h ^ s [ i ] ] ; / / XOR kde T je náhodná tabulka hodnot 0 až 255. Funkce je velmi citlivá na změny vstupního řetězce. Takto vygerovaných 8 bajtů definuje 16 hexadecimálních číslic, resp. 64-bitové celé číslo bez znaménka. říklad (demo-pearson): little-endian big-endian A --> FB43FAA1006B61F1 f1616b00a1fa43fb Aaaaaa --> 55C85C57BDB3C85 853cdbbe575cc Aaaaab --> F0B11A ab1f šnek --> 21F6FD0F1BF f31b0ffdf Jednoduché datové struktury a stromy / 69

12 Spojové seznamy Jednoduché datové struktury a stromy Jednoduché datové struktury Jednoduchý spojový seznam 0 Cyklický spojový seznam Obousměrný spojový seznam 0 0 Jednoduché datové struktury a stromy / 69

13 říklad - spojový seznam (1/5) Jednoduché datové struktury rázdný spojový seznam s nulovým ukazatelem na prázdný seznam uzlů. 0 Jednoduché datové struktury a stromy / 69

14 říklad - spojový seznam (2/5) Jednoduché datové struktury rázdný spojový seznam s nulovým ukazatelem na prázdný seznam uzlů. 0 Vytvoříme nový uzel a zařadíme jej do seznamu. 0 Jednoduché datové struktury a stromy / 69

15 říklad - spojový seznam (3/5) Jednoduché datové struktury rázdný spojový seznam s nulovým ukazatelem na prázdný seznam uzlů. 0 Vytvoříme nový uzel a zařadíme jej do seznamu. 0 Na začátek seznamu přidáme další uzel. 0 Jednoduché datové struktury a stromy / 69

16 říklad - spojový seznam (4/5) Jednoduché datové struktury rázdný spojový seznam s nulovým ukazatelem na prázdný seznam uzlů. 0 Vytvoříme nový uzel a zařadíme jej do seznamu. 0 Na začátek seznamu přidáme další uzel. 0 okračujeme přidáním třetího uzlu. 0 Jednoduché datové struktury a stromy / 69

17 Jednoduché datové struktury říklad - spojový seznam (5/5) rázdný spojový seznam s nulovým ukazatelem na prázdný seznam uzlů. 0 Vytvoříme nový uzel a zařadíme jej do seznamu. 0 Na začátek seznamu přidáme další uzel. 0 okračujeme přidáním třetího uzlu. 0 ro přidáním uzlu do spojového seznamu stačí nastavit dva ukazatele. 0 Jednoduché datové struktury a stromy / 69

18 demo-spojsez Jednoduché datové struktury a stromy Jednoduché datové struktury Vyhledání N=1000 záznamů v jednoduchém spojovém seznamu Jednoduchy spojovy seznam o b j e c t s 1000 copy c t o r 0 operator < 0 operator == operator > 0 operator <= 0 operator >= 0 N (N + 1)/2 = Jednoduché datové struktury a stromy / 69

19 Jednoduché datové struktury Kořenový strom a reprezentace spojovým seznamem A A 0 B C D B C D 0 0 F G 0 F 0 0 G 0 0 Kořenový strom na obrázku vlevo a jeho implementace spojovými seznamy, kde každý uzel obsahuje ukazatel na seznam potomků a ukazatel na seznam sourozenců, tj. uzlů se společným rodičem. Jednoduché datové struktury a stromy / 69

20 Obsah Jednoduché datové struktury a stromy Binární stromy 1 Jednoduché datové struktury a stromy Jednoduché datové struktury Binární stromy AVL stromy Quadtrees a Octrees B-stromy R-stromy Jednoduché datové struktury a stromy / 69

21 Binární stromy Jednoduché datové struktury a stromy Binární stromy Binární vyhledávací strom je datová struktura pro kterou platí každý uzel má maximálně dva potomky, kterým obvykle říkáme levý resp. pravý potomek levý potomek má klíč menší než je klíč jeho rodiče, pravý potomek má klíč větší (platí pro všechny klíče levého, resp. pravého, podstromu) výška stromu je délka nejdelší cesty od kořene k listu ve vyváženém stromu se hloubka všech listů liší maximálně o 1 (délka nejkratší a nejdelší cesty od kořene se liší maximálně o 1) Dokonale vyvážený binární strom výšky 5 (počet uzlů je 2 6 1). Jednoduché datové struktury a stromy / 69

22 Binární stromy Jednoduché datové struktury a stromy Binární stromy ro vložení nového vrcholu je binární strom prohledáván od kořene a pokud není daný vrchol nalezen, je nový vrchol vložen na místo kde prázdný ukazatel ukončuje prohledávání. Zrušení listu nebo vrcholu s jedním potomkem je triviální, stačí upravit příslušné ukazatele. Zrušení vrcholu se dvěma potomky v binárním stromu prevedeme tak, že rušený vrchol nahradíme vrcholem s nejmenším ohodnocením z pravého podstromu (nebo vrcholem s maximálním ohodnocením v levém podstromu). Jednoduché datové struktury a stromy / 69

23 Binární stromy rázdný binární strom - vložen vrchol 9 do kořene 9 y x Jednoduché datové struktury a stromy / 69

24 Binární stromy Binární strom - vložení vrcholu 5 9 y 5 x Jednoduché datové struktury a stromy / 69

25 Binární stromy Binární strom - vložení vrcholu 10 9 y 5 10 x Jednoduché datové struktury a stromy / 69

26 Binární stromy Binární strom - vložení vrcholu 11 9 y x Jednoduché datové struktury a stromy / 69

27 Binární stromy Binární strom - vložení vrcholu 7 9 y x Jednoduché datové struktury a stromy / 69

28 Binární stromy Binární strom - vložení vrcholu 2 9 y x Jednoduché datové struktury a stromy / 69

29 Binární stromy Binární strom - vložení vrcholu 8 9 y x 8 Jednoduché datové struktury a stromy / 69

30 Binární stromy Binární strom - vložení vrcholu 6 9 y x 6 8 Jednoduché datové struktury a stromy / 69

31 Binární stromy Binární strom - vložení vrcholu 1 9 y x Jednoduché datové struktury a stromy / 69

32 Binární stromy Binární strom - vložení vrcholu 3 9 y x Jednoduché datové struktury a stromy / 69

33 Binární stromy Binární strom - zrušení vrcholu 5 9 y x Jednoduché datové struktury a stromy / 69

34 Binární stromy Binární strom - po zrušení vrcholu 5 9 y x Jednoduché datové struktury a stromy / 69

35 Binární stromy Binární strom - zrušení vrcholu 6 9 y x Jednoduché datové struktury a stromy / 69

36 Binární stromy Binární strom - po zrušení vrcholu 6 9 y x 1 3 Jednoduché datové struktury a stromy / 69

37 Binární stromy Binární strom - zrušení vrcholu 11 9 y x 1 3 Jednoduché datové struktury a stromy / 69

38 Binární stromy Binární strom - po zrušení vrcholu 11 9 y x 1 3 Jednoduché datové struktury a stromy / 69

39 Binární stromy říklad - vytvoření a prohledání binárního stromu Vytvoření stromu je stejné pro náhodné i setříděné klíče B i n a r n i strom / demo b i n t r e e o b j e c t s 1000 copy c t o r 0 operator < operator == operator > 0 operator <= 0 operator >= 0 Vytvoření a prohledání stromu pro náhodné a setříděné klíče (zdegeneruje v sekvenční prohledávání) Binarni strom / nahodne k l i c e Binarni strom / setridene k l i c e o b j e c t s 1000 o b j e c t s 1000 copy c t o r 0 copy c t o r 0 operator < operator < operator == operator == operator > 0 operator > 0 operator <= 0 operator <= 0 operator >= 0 operator >= 0 Jednoduché datové struktury a stromy / 69

40 Obsah Jednoduché datové struktury a stromy AVL stromy 1 Jednoduché datové struktury a stromy Jednoduché datové struktury Binární stromy AVL stromy Quadtrees a Octrees B-stromy R-stromy Jednoduché datové struktury a stromy / 69

41 AVL stromy Jednoduché datové struktury a stromy AVL stromy G.M. Adelson-Velsky a.m. Landis AVL strom je binární samovyvažovací vyhledávací strom, který pracuje v logaritmickém čase. Jde o první datovou strukturu s takovýmito vlastnostmi. V AVL stromu se pro každý uzel liší výška podstromů jeho potomků maximálne o 1; jde tedy o strom výškově vyrovnaný. V článku An algorithm for the organization of information (roceedings of the USSR Academy of Sciences 146: ) dokázali, že AVL-strom bude maximálně o 45 % vyšší než dokonale vyvážený strom složený ze stejných vrcholů Jednoduché datové struktury a stromy / 69

42 AVL stromy AVL stromy Vlastnosti vrcholů AVL stromu Vrchol má maximálně dva následníky (je to binární strom). V levém podstromu vrcholu jsou pouze vrcholy s menší hodnotou klíče (je to binární vyhledávací strom). V pravém podstromu vrcholu jsou pouze vrcholy s větší hodnotou klíče (je to vyhledávací strom). Délka nejdelší větve levého a pravého podstromu se liší nejvýše o 1 (vyvážení AVL stromu). Jednoduché datové struktury a stromy / 69

43 Vyvažování AVL stromu AVL stromy x -2 y 0 y -1 x 0 T3 T2 T1 T2 T3 T1 Jednoduché datové struktury a stromy / 69

44 Vyvažování AVL stromu AVL stromy x 2 z 0 y -1 x -1 y 0 z 1 T1 T2 T2 T4 T1 T3 T4 T3 Jednoduché datové struktury a stromy / 69

45 Obsah Jednoduché datové struktury a stromy Quadtrees a Octrees 1 Jednoduché datové struktury a stromy Jednoduché datové struktury Binární stromy AVL stromy Quadtrees a Octrees B-stromy R-stromy Jednoduché datové struktury a stromy / 69

46 Quadtrees Jednoduché datové struktury a stromy Quadtrees a Octrees Quadtree je datová struktura, která je odvozena postupným dělením 2D prostoru na kvadranty, které můžeme číslovat například takto: Každý kvadrant může být prázdný (), zaplněný (F) nebo částečně zaplněný (). Částečně zaplněné kvadranty se dále rekurzivně dělí podle potřeby. Quadtrees se používají jednak pro kódování rastrů ale i pro prostorové indexování. Octrees podobně dělí 3D prostor na octanty. Jednoduché datové struktury a stromy / 69

47 Dášeňka čili život štěněte Quadtrees a Octrees Jednoduché datové struktury a stromy / 69

48 Quadtrees a Octrees Quadtrees čtyři základní kvadranty Jednoduché datové struktury a stromy / 69

49 Quadtrees a Octrees Quadtrees částečně zaplněné kvadranty Jednoduché datové struktury a stromy / 69

50 Quadtrees a Octrees Quadtrees druhá úroveň rozkladu Jednoduché datové struktury a stromy / 69

51 Quadtrees a Octrees Quadtrees třetí úroveň rozkladu Jednoduché datové struktury a stromy / 69

52 Quadtrees a Octrees Quadtrees čtvrtá úroveň rozkladu... Jednoduché datové struktury a stromy / 69

53 Quadtrees a Octrees Linear quadtree notation ro adresování je potřeba tolik číslic 0 až 3, kolik je úrovní, symbol X vyplňuje adresy nelistových uzlů X 013X 020X 021X X X Jednoduché datové struktury a stromy / 69

54 Quadtrees a Octrees Quadtrees a boolovské množinové operace A B A B A B Jednoduché datové struktury a stromy / 69

55 Obsah Jednoduché datové struktury a stromy B-stromy 1 Jednoduché datové struktury a stromy Jednoduché datové struktury Binární stromy AVL stromy Quadtrees a Octrees B-stromy R-stromy Jednoduché datové struktury a stromy / 69

56 B-stromy B-stromy R. Bayer a. McCreight 1970 B-stromy jsou zobecněním binárních stromů v tom ohledu, že (interní) uzly mohou mít více potomků z jistého, obvykle fixního, intervalu. Definice podle Knutha B-strom (B-tree) řádu m je strom, který splňuje následující požadavky Každý uzel má maximálně m potomků Každý uzel s výjimkou kořene a listů má minimálně m/2 potomků Kořen má minimálně dva potomky (pokud není listem) Všechny listy jsou na stejné úrovni a nesou informace Nelistový uzel s k potomky obsahuje k 1 klíčů oznámka: Řád m B-stromu je někdy definován jako minimální počet klíču v uzlu, maximální počet klíčů v uzlu je pak 2 m a maximální počet potomků 2 m + 1. Jednoduché datové struktury a stromy / 69

57 B-stromy B-stromy vyvážené vyhledávací stromy hlavní motivací je snaha minimalizovat počet přístupů na disky velikost uzlů B-stromu se navrhuje navrhuje tak, aby odpovídala čtení jedné stránky z disku Na následujícím obrázku jsou klíče uložené v uzlech B-stromu znázorněny žlutě, pro každý uložený klíč (v nelistovém uzlu) jsou definovány dva ukazatele na dceřiné uzel s menšími, resp. většími, klíči. S výjimkou kořene nesmí počet klíču uložených v uzlu klesnout pod dolní mez daného intervalu (typicky jsou uzly zaplněny alespoň z poloviny). Jednoduché datové struktury a stromy / 69

58 B-stromy Vkládání klíčů do 2-3 B-stromu 2-3 B-strom má interní uzly s minimálně dvěma a maximálně třemi potomky Klíče se přidávají výhradně do listů B-stromu, při přeplnění dochází ke štěpení uzlů, štěpení může pokračovat rekurzivně až ke kořenu Jednoduché datové struktury a stromy / 69

59 B-stromy Demo btree 1 - naplnění 2-3 stromu klíčí depth nodes pointer node 0 : 4 0x8e x8e : 2 0x8e640a x8e x8e x8e640e x8e : 1 0x8e x8e640e8 0x8e x8e641a x8e640a8 0x8e : 3 1 : 6 2 : 5 2 : 7 Jednoduché datové struktury a stromy / 69

60 B-stromy Schéma transformace adres při rozdělení uzlu Výška B-stromu se mění pouze při rozštěpení kořene. Rekurzivní štěpění uzlů vyžaduje pro implementaci vkládání použití zásobníku, alternativně mohou uzly udržovat ukazatele na rodičovské uzly. 1 A B C D 2 L X R 3 4 A B C D L A B X C D 2 L R 3 4 A B X C D L R 3 4 Jednoduché datové struktury a stromy / 69

61 B-stromy Jednoduché datové struktury a stromy B-stromy klíče v uzlu jsou setříděny, pro jejich hledání lze použít metodu půlení, nemá smysl pro B-stromy malých řádů Jednoduché datové struktury a stromy / 69

62 B-stromy Rušení klíčů v B-stromu ro rušení klíče v B-stromech se používají dvě hlavní strategie rušení klíče probíhá v jediném průchodu stromem od kořene, ale před každým vstupem do uzlu je strom upraven tak, aby zrušení uklíče nespustilo rekurzivní úpravy. po zrušení klíče je strom restrukturalizován tak, aby splňoval definiční vlastnosti B-stromu, minimální a maximální počet klíčů v uzlu ři rušení klíče je třeba ošetřit dvě situace daný klíč je separátorem ukazatelů na dceřiné uzly po zrušení klíče v listu poklesne počet klíčů pod dolní přípustnou hodnotu okud je v listů více než minimální počet klíčů, pak je operace zrušení klíče triviální. oznámka: V databázovém systému ostgresql jsou zrušené řádky pouze označeny jako zrušené a ponechány v databázi. Správce databáze proto musí spouštět program vacuum, aby fyzicky uvolnil prostor po zrušených řádcích. Jednoduché datové struktury a stromy / 69

63 Rušení klíčů v B-stromu B-stromy B-strom řádu 5 (s minimální počtem klíčů v uzlu 2 a maximálním 4) s vyznačeným klíčem K určeným ke zrušením. C H M T W A B D F G J K L N O Q R S U V X Y Zrušení klíče v uzlu při kterém počet klíčů neklesne pod povolenou mez je triviální. C H M T W A B D F G J L N O Q R S U V X Y Jednoduché datové struktury a stromy / 69

64 B-stromy Rušení klíčů v B-stromu o zrušení klíče U klesne počet klíčů daného uzlu pod hodnotu 2. C H M T W A B D F G J L N O Q R S U V X Y Q R S T V C H M S W A B D F G J L N O Q R T V X Y Jednoduché datové struktury a stromy / 69

65 B-stromy Rušení klíčů v B-stromu říklad zrušení klíče H v nelistovém uzlu C H M S W A B D F G J L N O Q R T V X Y V daném případě můžeme zrušený uzel nahradit maximálním klíčem z levého podstromu nebo minimálním klíčem z pravého podstromu. C G M S W A B D F J L N O Q R T V X Y Jednoduché datové struktury a stromy / 69

66 Obsah Jednoduché datové struktury a stromy R-stromy 1 Jednoduché datové struktury a stromy Jednoduché datové struktury Binární stromy AVL stromy Quadtrees a Octrees B-stromy R-stromy Jednoduché datové struktury a stromy / 69

67 R-stromy Jednoduché datové struktury a stromy R-stromy Antonin Guttman 1984, ACM Digital Library příklad Wikipedie Jednoduché datové struktury a stromy / 69

68 Boost C++ libraries Jednoduché datové struktury a stromy R-stromy Instalace apt get i n s t a l l l i b b o o s t a l l dev nebo podrobněji kapitola Getting started. Sestavení a překlad (demo.cpp) # include <iostream > # i n c l u d e <boost / array. hpp> using namespace std ; i n t main ( ) { boost : : array < i n t, 4> a r r = { { 1, 2, 3, 4 } } ; / / prevzato do standardu c++11 f o r ( auto a : a r r ) cout << a << " " ; r e t u r n 0; } c++ I path / to / boost_1_59_0 std=c++11 o demo demo. cpp kde cestu k hlavičkovým souborům (parametr -I) musíme zadávat pouze v případě, že se nenacházejí na cestě definované v systému. Jednoduché datové struktury a stromy / 69

69 Boost Geometry Jednoduché datové struktury a stromy R-stromy Jednoduché datové struktury a stromy / 69

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í

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í Stromy 2 AVL AVL stromy jména tvůrců stromů: dva Rusové Adelson-Velskii, Landis vyvážené binární 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

Více

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz (2 + 5) * (13-4) * + - 2 5 13 4 - listy stromu obsahují operandy (čísla) - vnitřní uzly obsahují operátory (znaménka)

Více

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Strom

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2013/2014 Radim Farana. Obsah. Strom 8 Podklady ředmětu ro akademický rok 2013/2014 Radim Farana Obsah 2 Dynamické datové struktury. Strom. Binární stromy. Vyhledávací stromy. Vyvážené stromy. AVL stromy. Strom 3 Název z analogie se stromy.

Více

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

Stromy. Jan Hnilica Počítačové modelování 14 Stromy Jan Hnilica Počítačové modelování 14 1 Základní pojmy strom = dynamická datová struktura, složená z vrcholů (uzlů, prvků) propojených hranami hrany chápeme jako orientované, tzn. vedou z uzlu A

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

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury)

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury) definice ( tree) autoři: Rudolf Bayer, Ed McCreight vyvážený strom řádu m ( ) každý uzel nejméně a nejvýše m potomků s výjimkou kořene každý vnitřní uzel obsahuje o méně klíčů než je počet potomků (ukazatelů)

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

Dynamicky vázané metody. Pozdní vazba, virtuální metody

Dynamicky vázané metody. Pozdní vazba, virtuální metody Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:

Více

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Programování 3. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Programování 3. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Implementace zásobníku a fronty pomocí

Více

vyhledávací stromové struktury

vyhledávací stromové struktury vyhledávací algoritmy Brute Force Binary Search Interpolation Search indexové soubory Dense index, Sparse index transformační funkce Perfect Hash, Close Hash Table, Open Hash Table vyhledávací stromové

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

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

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

Složitosti základních operací B + stromu Složitosti základních operací B + stromu Radim Bača VŠB Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky ŠKOMAM 2010-1- 28/1/2010 Složitosti základních operací B +

Více

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

Programování v C++ 1, 16. cvičení Programování v C++ 1, 16. cvičení binární vyhledávací strom 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené

Více

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by

Více

ADT STROM Lukáš Foldýna

ADT STROM Lukáš Foldýna ADT STROM Lukáš Foldýna 26. 05. 2006 Stromy mají široké uplatnění jako datové struktury pro různé algoritmy. Jsou to matematické abstrakce množin, kterou v běžném životě používáme velice často. Příkladem

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

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

Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol. Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018, B6B36DSA 01/2018, Lekce 9 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start

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

Red Black strom (Red Black Tree) Úvod do programování. Rotace. Red Black strom. Rotace. Rotace

Red Black strom (Red Black Tree) Úvod do programování. Rotace. Red Black strom. Rotace. Rotace Ú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 Red Black strom je binární strom s jedním dvouhodnotovým příznakem

Více

Stromy. Jan Kybic.

Stromy. Jan Kybic. Stromy Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 44 Stromy Binární vyhledávací stromy Množiny a mapy 2 / 44 Strom (Tree) Strom skládá se s uzlů (nodes) spojených hranami (edges).

Více

1 Nejkratší cesta grafem

1 Nejkratší cesta grafem Bakalářské zkoušky (příklady otázek) podzim 2014 1 Nejkratší cesta grafem 1. Uvažujte graf s kladným ohodnocením hran (délka). Definujte formálně problém hledání nejkratší cesty mezi dvěma uzly tohoto

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

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

Standardní algoritmy vyhledávací.

Standardní algoritmy vyhledávací. Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární

Více

Stromové struktury v relační databázi

Stromové struktury v relační databázi Stromové struktury v relační databázi Stromové struktury a relační databáze Zboží Procesory Intel Pentium IV Celeron Paměti AMD Duron DDR DIMM Athlon http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016 ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce

Více

Vyvažování a rotace v BVS, všude se předpokládá AVL strom

Vyvažování a rotace v BVS, všude se předpokládá AVL strom Vyvažování a rotace v BVS, všude se předpokládá AVL strom 1. Jednoduchá levá rotace v uzlu u má operační složitost a) závislou na výšce levého podstromu uzlu u b) mezi O(1) a Θ(n) c) závislou na hloubce

Více

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array

Více

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

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 binární vyhledávání a bst Karel Horák, Petr Ryšavý 23. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Naimplementujte binární vyhledávání. Upravte metodu BinarySearch::binarySearch. 1 Příklad 2 Mysĺım

Více

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

3 Algoritmy řazení. prvku a 1 je rovněž seřazená. Specifikace problému řazení (třídění): A... neprázdná množina prvků Posl(A)... množina všech posloupností prvků z A ... prvky množiny Posl(A) q... délka posloupnosti Posl(A), přičemž Delka()

Více

IB111 Úvod do programování skrze Python

IB111 Úvod do programování skrze Python Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově

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

Stromové struktury v relační databázi

Stromové struktury v relační databázi Stromové struktury v relační databázi Stromové struktury a relační databáze Zboží Procesory Paměti Intel AMD DDR DIMM Pentium IV Celeron Duron Athlon http://interval.cz/clanky/metody-ukladani-stromovych-dat-v-relacnich-databazich/

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

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

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í

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í Select sort: krok 1: výběr klíče z n prvků vyžaduje 1 porovnání krok 2: výběr klíče z 1 prvků vyžaduje 2 porovnání krok 3: výběr klíče z 2 prvků vyžaduje 3 porovnání atd. celkem porovnání Zlepšení = použít

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

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

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

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

Programování v C++ 1, 17. cvičení Programování v C++ 1, 17. cvičení výjimky 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky Binární vyhledávací

Více

Funkční objekty v C++.

Funkční objekty v C++. Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční

Více

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti.

Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Seznamy a stromy Cílem kapitoly je seznámit studenta se seznamem a stromem. Jejich konstrukci, užití a základní vlastnosti. Klíčové pojmy: Seznam, spojový seznam, lineární seznam, strom, list, uzel. Úvod

Více

SQL tříhodnotová logika

SQL tříhodnotová logika SQL tříhodnotová logika Jmeno Prijmeni Student Jaroslav Novák true Josef Novotný false Jiří Brabenec SELECT * FROM OSOBA WHERE Student!= true Jaký bude výsledek? SQL tříhodnotová logika Jmeno Prijmeni

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

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

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

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

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

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620

Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 Binární vyhledávací strom pomocí směrníků Miroslav Hostaša L06620 1. Vymezení pojmů Strom: Strom je takové uspořádání prvků - vrcholů, ve kterém lze rozeznat předchůdce - rodiče a následovníky - syny.

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

Algoritmy I, složitost

Algoritmy I, složitost A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??

Více

Základy algoritmizace. Hašování

Základy algoritmizace. Hašování Základy algoritmizace Hašování 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ě

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

Prioritní fronta, halda

Prioritní fronta, halda Prioritní fronta, halda Priority queue, heap Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 26 Prioritní fronta Halda Heap sort 2 / 26 Prioritní fronta (priority queue) Podporuje

Více

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu. Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus

Více

a) b) c) Radek Mařík

a) b) c) Radek Mařík 2012-03-20 Radek Mařík 1. Čísla ze zadané posloupnosti postupně vkládejte do prázdného binárního vyhledávacího stromu (BVS), který nevyvažujte. Jak bude vypadat takto vytvořený BVS? Poté postupně odstraňte

Více

Základy algoritmizace c2007 Michal Krátký, Jiří Dvorský 1/57

Základy algoritmizace c2007 Michal Krátký, Jiří Dvorský 1/57 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 c2007 Michal Krátký, Jiří Dvorský 1/57

Více

Dynamické datové struktury II.

Dynamické datové struktury II. Dynamické datové struktury II. Stromy. Binární vyhledávací strom. DFS. BFS. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

Více

Dynamické datové struktury I.

Dynamické datové struktury I. Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

Více

Časová a prostorová složitost algoritmů

Časová a prostorová složitost algoritmů .. Časová a prostorová složitost algoritmů Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Hodnocení algoritmů Programovací techniky Časová a prostorová

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

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

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy Základní pojmy Stromy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Graf uzly hrany orientované / neorientované Souvislý

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

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

Semestrální práce 2 znakový strom

Semestrální práce 2 znakový strom Semestrální práce 2 znakový strom Ondřej Petržilka Datový model BlockFileRecord Bázová abstraktní třída pro záznam ukládaný do blokového souboru RhymeRecord Konkrétní třída záznamu ukládaného do blokového

Více

George J. Klir Vilem Vychodil (Palacky University, Olomouc) State University of New York (SUNY) Binghamton, New York 13902, USA

George J. Klir Vilem Vychodil (Palacky University, Olomouc) State University of New York (SUNY) Binghamton, New York 13902, USA A Tutorial Indexing structures in RDBMs George J Klir Vilem Vychodil (Palacky University, Olomouc) State University of New York (SUNY) Binghamton, New York 1390, USA gklir@binghamtonedu Palacky University,

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

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy TÉMATICKÝ OKRUH Počítače, sítě a operační systémy Číslo otázky : 12. Otázka : Metody fyzické organizace dat Obsah : 1.Úvod 2.Vnější paměti 3.Sekvenční soubory 3.1 Setříděné sekvenční soubory 4.Zřetězené

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

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 Grafové úlohy Daniela Szturcová Tento

Více

ABSTRAKTNÍ DATOVÉ TYPY

ABSTRAKTNÍ DATOVÉ TYPY Jurdič Radim ABSTRAKTNÍ DATOVÉ TYPY Veškeré hodnoty, s nimiž v programech pracujeme, můžeme rozdělit do několika skupin zvaných datové typy. Každý datový typ představuje množinu hodnot, nad kterými můžeme

Více

Kapitola 11: Indexování a hešování. Základní představa

Kapitola 11: Indexování a hešování. Základní představa - 11.1 - Kapitola 11: Indexování a hešování Základní představa Řazené indexy (ordered indices) B+-strom indexový soubor B-strom indexový soubor Hešování Porovnání řazených indexů a hešování Definice indexů

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

Algoritmy výpočetní geometrie

Algoritmy výpočetní geometrie Algoritmy výpočetní geometrie 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 (BI-EFA)

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

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

Dynamické programování. Optimální binární vyhledávací strom

Dynamické programování. Optimální binární vyhledávací strom The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamické programování Optimální binární vyhledávací strom Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), The

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

Množina v C++ (set, multiset).

Množina v C++ (set, multiset). Množina v C++ (set, multiset). Množina je datová struktura, ve které jsou uloženy nějaké prvky. V množině nesmí být dva stejné prvky. Naopak multimnožina může obsahovat i stejné prvky. Nad množinou lze

Více

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.

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. 1 3 4 5 6 7 8 9 10 11 1 13 14 15 16 17 18 19 0 1 3 4 5 6 7 8 9 30 31 3 Zdůvodněte, proč funkce f(n) = n log(n) 1 n 1/ roste rychleji než funkce g(n) = n. Zdůvodněte, proč funkce f(n) = n 3/ log(n) roste

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

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

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

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

PRAKTICKÁ EFEKTIVITA KONTEJNERŮ

PRAKTICKÁ EFEKTIVITA KONTEJNERŮ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INTELIGENTNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS PRAKTICKÁ EFEKTIVITA

Více

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

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 Úlohy- 2.cvičení 1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) 759 10 b) 2578 10 2. Převeďte dané desetinné číslo do dvojkové soustavy (DEC -> BIN): a) 0,8125 10 b) 0,35 10

Více

PROGRAMOVÁNÍ V C++ CVIČENÍ

PROGRAMOVÁNÍ V C++ CVIČENÍ PROGRAMOVÁNÍ V C++ CVIČENÍ INFORMACE Michal Brabec http://www.ksi.mff.cuni.cz/ http://www.ksi.mff.cuni.cz/~brabec/ brabec@ksi.mff.cuni.cz gmichal.brabec@gmail.com PODMÍNKY ZÁPOČTU Základní podmínky společné

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

Dynamické datové typy a struktury

Dynamické datové typy a struktury .. a Programovací techniky doc. Ing. Jiří Rybička Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Programovací techniky a 2 / 18 Uchovávají adresu v paměti Programovací techniky a 2 / 18 Uchovávají

Více

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

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

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

map, multimap - Asociativní pole v C++.

map, multimap - Asociativní pole v C++. map, multimap - Asociativní pole v C++. Jedná se o asociativní pole. V asociativním poli jsou uloženy hodnoty ve tvaru (klíč,hodnota), kde klíč je vlastně "index" prvku. Klíčem může být libovolný objekt,

Více

Vyhledávací stromy. Slouží jako pomůcka pro organizaci dat umožňující efektivní vyhledávání.

Vyhledávací stromy. Slouží jako pomůcka pro organizaci dat umožňující efektivní vyhledávání. Vyhledávací stromy Slouží jako pomůcka pro organizaci dat umožňující efektivní vyhledávání. Vytvářejí se vždy nad již existující datovou strukturou (zpravidla tabulkou). Vyhledávací stromy můžeme rozdělit

Více

Radek Mařík

Radek Mařík 2012-03-20 Radek Mařík 1. Pravá rotace v uzlu U a) v podstromu s kořenem U přemístí pravého syna U.R uzlu U do kořene. Přitom se uzel U stane levým synem uzlu U.R a levý podstrom uzlu U.R se stane pravým

Více

Binární Vyhledávací Stromy, u kterých je. složitost operací v nejhorším. rovná O(log n)

Binární Vyhledávací Stromy, u kterých je. složitost operací v nejhorším. rovná O(log n) Stromy Binární Vyhledávací Stromy, u kterých je č asová složitost operací v nejhorším případě rovná O(log n) Vlastnosti Red-Black Stromů Vlastnosti Red-Black stromů Každý uzel stromu je obarven červenou

Více

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

Programování v C++ 2, 8. cvičení Programování v C++ 2, 8. cvičení návrhový vzor iterátor 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky

Více