Jednoduché datové struktury a stromy
|
|
- Jana Dvořáková
- před 7 lety
- Počet zobrazení:
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í
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íceReprezentace 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íceAplikovaná 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íceStromy. 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íceAlgoritmy 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íceautoř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íceStromy. 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íceDynamicky 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íceProgramová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ícevyhledá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íce2 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íce1 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íceSlož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íceProgramová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
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íceADT 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íceDatové 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íceStromy. 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íceVyhledá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íceRed 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íceStromy. 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íce1 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íceTÉ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íceStromy, 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íceStandardní 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íceStromové 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íceMartin 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íceVyvaž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
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ícebin 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íce3 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íceIB111 Ú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íceB3B33ALP - 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íceStromové 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íceB3B33ALP - 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íceAlgoritmy 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íceSelect 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íceALGORITMIZACE 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íceZá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íce5 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íceProgramová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íceFunkč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íceCí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íceSQL 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íceVyhledá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íceZá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íceVolné 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íceAlgoritmizace 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íceMichal 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íceBiná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íceDynamické 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íceAlgoritmy 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íceZá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íceADT/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ícePrioritní 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íce2) 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ícea) 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íceZá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íceDynamické 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íceDynamické 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ů 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íceALGORITMIZACE 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íceAdresní 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íceStromy. 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íceDynamické 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íceAbstraktní 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íceSemestrá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íceGeorge 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ů 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íceTÉ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íceFronta (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íceAlgoritmizace 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íceABSTRAKTNÍ 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íceKapitola 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íceAmortizovaná 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íceAlgoritmy 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íceZá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íceZá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íceDynamické 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íceGrafové 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íceMnož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íceZdů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íceAlgoritmizace 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íceNá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íceDobSort. Ú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íceTGH07 - 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ícePRAKTICKÁ 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íce1. 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ícePROGRAMOVÁ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íceTest 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íceDynamické 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ícePB161 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íceGrafové 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íceAlgoritmizace 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íceVýč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ícemap, 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íceVyhledá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íceRadek 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íceBiná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íceProgramová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