Dynamické programování. Optimální binární vyhledávací strom
|
|
- Naděžda Bártová
- před 7 lety
- Počet zobrazení:
Transkript
1 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)),
2 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Optimální binární vyhledávací strom Vyvážený, ale ne optimální. Dana. Hugo.9 Lea.8 Ben.5 Fred.5 Jack. Nick Ann Cole Edna Gene Irma Ken Mark Orrie Klíč Pravděpodobnost dotazu Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
3 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Optimální binární vyhledávací strom Cena jednotlivých uzlů v BVS cena uzlu = pravděpodobnost hloubka. Hugo. =.. Dana. =..5 Fred.5 =.5 Gene. hloubka. =.88 cena uzlu = průměrný počet testů na nalezení uzlu při jednom dotazu (Find) Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
4 X6DSA 5 Θ(n log (n)), Cena vyváženého stromu klíč pravděp. p k hloubka d k p k d k Ann Ben Cole Dana Edna Fred Gene Hugo Irma Jack Ken Lea =..8 =.. =.8. =.. =.6.5 =.5. =.88. =..6 =..5 =.5.5 =.6.9 =.8 Mark Nick Orrie.... =.8. =.9. =. Cena celkem:.7 Cena celkem = prům. poč. testů na jednu operaci Find. Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
5 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Optimální BVS Struktura optimálního BVS s danými pravděpodobnostmi. Cole. Gene.5 Ken.8 Ben.5 Fred.6 Irma.9 Lea Ann. Edna Hugo Jack. Nick...5 Dana Mark Orrie... 5 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
6 Θ(n log (n)), Cena optimálního BVS klíč pravděp. p k hloubka d k p k d k.. =..8.8 =... = =.5.. = =.5.. =... =.6.6 Ann Ben Cole Dana Edna Fred Gene Hugo Irma Jack Ken Lea Mark Nick Orrie =.8.5 =..5 =..9 =.7. 5 =.. =.. 5 =.5 Cena celkem.56 Zrychlení.7 :.56 = :.7 6 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), 5 5
7 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Výpočet ceny optimálního BVS Xyz p k C k C k cena levého podstromu uzlu k Cena pravého podstromu uzlu k C k C k L k- k k+ R Rekurzivní myšlenka k- Cena = C k + p i + C k + i=l R i=k+ p i p k + p k 7 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
8 X6DSA 5 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Výpočet ceny optimálního BVS Malé optimální podstromy L R N Nad prvky s indexy od L do R lze jistě vytvořit jeden optimální podstrom. Velikost stromu = poč. uzlů = L-R+ Máme N optimalních podstromů velikosti N- N- podstrom N Celkem máme N * (N+) / různých optimálních podstromů. 8 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
9 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Idea rekurzivního řešení: Minimalizace ceny BVS. Předpoklad : Všechny menší optimální stromy jsou známy.. Zkus: k = L, L+, L+,..., R k=l k=l+ k=l+... k=r. Zaregistruj index k, který minimalizuje cenu, tj. hodnotu k- C k + p i + C k + i=l R i=k+ p i + p k. Klíč s indexem k je kořenem optimálního stromu. 9 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
10 X6DSA 5 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Minimalizace ceny BVS C(L,R)... Cena optimálního podstromu obsahujícího klíče s indexy L, L+, L+,..., R-, R C(L,R) = k- p i i=l min { C(L, k-) + L k R + C(k+,R) + R p i i=k+ + p k } = = min { C(L, k-) + L k R C(k+,R) + R p i i=l } = (*) = min { C(L, k-) + L k R C(k+,R) } + R p i i=l Hodnota k minimalizující (*) je indexem kořenu optim. podstromu. Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
11 X6DSA 5 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Datové struktury pro výpočet optmálního BVS Ceny optimálních podstromů pole C [L][R] (L R) Kořeny optimálních podstromů pole roots [L][R] (L R) L R N L R L R L R N+ N+ diagonála... L= R diagonála... L= R Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
12 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Výpočet optimálního BVS Cena konkrétního optimálního podstromu p L=, R=9 p p a b c d e p p 5 p 6 p7 x y z C(L,R) = min { C(L, k-) + C(k+,R) } L k R R + p i i=l t p 8 w p9 C(L,R) = min{ +x, p +y, a+z, b+t, c+w, d+p 9, e+ } R + p i i=l p N Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
13 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Výpočet optimálního BVS Strategie DP nejprve se zpracují nejmenší podstromy, pak větší, atd Stop Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
14 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), void optimaltree() { int L, R; double min; Výpočet optimálního BVS Výpočet DP tabulek cen a kořenů // size = for( i=; i<=n; i++ ) { C[i][i] = pravděpodobnost[i]; roots[i][i] = i; // size > for( int size = ; size <= N; size++ ) { L = ; R = size; while( R <= N ) { C[L][R] = min(c[l][k-]+c[k+][r], k = L..R); roots[l][r] = k minimalizující předch. řádek ; C[L][R] += sum(c[i][i], i = L..R); L++; R++; } } } Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
15 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Výpočet optimálního BVS Vybudování optimálního stromu pomocí rekonstrukční tabulky kořenů void buildtree( int L, int R) { if (R < L) return; int keyindex = roots[l][r]; // keys... sorted array of keys int key = keys[roots[l][r]]; } insert(root, key); // standard BST insert buildtree( L, keyindex - ); buildtree( keyindex +, R ); 5 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
16 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Výpočet optimálního BVS Kořeny optimálních podstromů Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
17 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Výpočet optimálního BVS Korespondence stromů.8 Ben Ann.. Cole. Edna Dana..5 Fred. Gene.6 Irma Hugo. Jack.5.5 Ken.9 Lea. Nick Mark. Orrie Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
18 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Výpočet optimálního BVS Ceny optimálních podstromů -A -B -C -D 5-E 6-F 7-G 8-H 9-I -J -K -L -M -N 5-O -A B C D E F G H I J K L M N..5 5-O. Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), 8
19 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamické programování Nejdelší společná podposloupnost 9 Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
20 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Nejdelší společná podposloupnost Dvě posloupnosti A: B: C B E A D D E A D E C D B D A A = 8 B = 7 Společná podposloupnost A: C B E A D D E A B: D E C D B D A C: C D A C = Nejdelší společná podposloupnost (NSP) A: C B E A D D E A B: D E C D B D A C: E D D A C = Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
21 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Nejdelší společná podposloupnost A n : (a, a,..., a n ) B m : (b, b,..., b m ) C k : (c, c,..., c k ) C k = LCS(A n, B m ) A 8 : B 7 : C : C B E A D D E A D E C D B D A E D D A Rekurzivní pravidla: ( a n = b m ) ==> (c k = a n = b m ) & (C k- = LCS (A n-, B m- ) ) A 8 : C B E A D D E A A 7 : C B E A D D E A B 7 : D E C D B D A B 6 : D E C D B D A C : E D D A C : E D D A Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
22 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Nejdelší společná podposloupnost ( a n!= b m ) & (c k!= a n ) ==> (C k = LCS (A n-, B m ) ) A 7 : C B E A D D E A 6 : C B E A D D E B 6 : D E C D B D B 6 : D E C D B D C : E D D C : E D D ( a n!= b m ) & (c k!= b m ) ==> (C k = LCS (A n, B m- ) ) A 5 : C B E A D A 5 : C B E A D B 5 : D E C D B B : D E C D B C : E D C : E D Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
23 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Nejdelší společná podposloupnost Rekurzivní funkce délka LCS C(n,m) = C(n-, m-) + max{ C(n-, m), C(n, m-) } n = or m = n >, m >, a n =b m n >, m >, a n b m Strategie dynamického programování C[n][m] n m for( a=; a<=n; a++ ) for( b=; b<=m; b++ ) C[a][b] =... ; } Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
24 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Nejdelší společná podposloupnost Konstrukce DP tabulek pro LCS void findlcs() { for( int a=; a<=n; a++ ) for( int b=; b<=m; b++ ) if( A[a] == B[b] ) { C[a][b] = C[a-][b-]+; arrows[a][b] = DIAG; } else if( C[a-][b] > C[a][b-] ) { C[a][b] = C[a-][b]; arrows[a][b] = UP; } else { C[a][b] = C[a][b-]; arrows[a][b] = LEFT; } } Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)),
25 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), C B E A D D E A C D B D A D E C A: B: Pole NSP pro CBEADDEA a DECDBDA Nejdelší společná podposloupnost 5
26 The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Nejdelší společná podposloupnost Výpis NSP -- rekurzivně :) void outlcs( int a, int b ) { if( a == b == ) return; if( arrows[a][b] == DIAG ) { outlcs(a-, b-); // recursion... print(a[a]); //... reverses the sequence! } else if( arrows[a][b] == UP ) outlcs(a-,b); else outlcs(a,b-); } Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), 6
R zné algoritmy mají r znou složitost
/ / zné algoritmy mají r znou složitost Dynamické programování / / Definice funkce Otázka Program f(x,y) = (x = ) (y = ) f(x, y-) + f(x-,y) (x > ) && (y > ) f(,) =? int f(int x, int y) { if ( (x == ) (y
VíceDynamic programming. Optimal binary search tree
The complexity of different algorithms varies: O(n), Ω(n ), Θ(n log (n)), Dynamic programming Optimal binary search tree Různé algoritmy mají různou složitost: O(n), Ω(n ), Θ(n log (n)), The complexity
VíceDynamické programování
Dynamické programování Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 207 Datové struktury a algoritmy, B6B36DSA 05/207, Lekce 2
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íceNávrh Designu: Radek Mařík
1. 7. Najděte nejdelší rostoucí podposloupnost dané posloupnosti. Použijte metodu dynamického programování, napište tabulku průběžných délek částečných výsledků a tabulku předchůdců. a) 5 8 11 13 9 4 1
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ícef(x,y) = max ( f(x 1, y 1)+ f(x 1,y) ) + f(x,y 1) +1 jinak f(x,y,z) = f(x 1, y 1, z 1)+ f(x 1,y,z) + f(x,y 1,z) + f(x,y,z 1)+1 jinak
Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný
Ví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í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íceBinární vyhledávací stromy pokročilé partie
Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald
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í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í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íceRzné algoritmy mají rznou složitost
X36DSA 25 / 3 DSA Rzné algoritmy mají rznou složitost X36DSA 25 2 / 3 DSA The complexity of different algorithms varies X36DSA 25 3 / 3 Abeceda Jazyk Abeceda konená (neprázdná) množina symbol A mohutnost
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íceBINARY SEARCH TREE
Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný
Ví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í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í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í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í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, 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í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íceBINARY SEARCH TREE
---------------------------------------- BINARY SEARCH TREE --------------------------------------------------- Je dán BVS s n uzly. Máme za úkol spočítat hodnotu součtu všech klíčů v tomto stromě. Když
VíceA4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.
A4B33ALG 2010/05 ALG 07 Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated Quicksort Stabilita řazení 1 Selection sort Neseřazeno Seřazeno Start T O U B J R M A K D Z E min
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íceDatové struktury Úvod
Datové struktury Úvod Navrhněte co nejjednodušší datovou strukturu, která podporuje následující operace: 1. Insert a Delete v O(n), Search v O(log n); Datové struktury Úvod Navrhněte co nejjednodušší datovou
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ícePokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010
Pokročilé 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í algoritmy (I-EFA) ZS 2010/11,
VíceRekurzivní algoritmy
Rekurzivní algoritmy 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) ZS
VíceDynamické programování
ALG 0 Dynamické programování zkratka: DP Zdroje, přehledy, ukázky viz https://cw.fel.cvut.cz/wiki/courses/a4balg/literatura_odkazy 0 Dynamické programování Charakteristika Neřeší jeden konkrétní typ úlohy,
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íceTGH05 - Problém za milion dolarů.
TGH05 - Problém za milion dolarů. Jan Březina Technical University of Liberec 20. března 2012 Časová složitost algoritmu Závislost doby běhu programu T na velikosti vstupních dat n. O(n) notace, standardní
VíceSTACK
Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný
Ví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í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íceRekurze a zásobník. Jak se vypočítá rekurzivní program? volání metody. vyšší adresy. main(){... fa(); //push ret1... } ret1
Rekurze a zásobník Jak se vypočítá rekurzivní program? volání metody vyšší adresy ret1 main(){... fa(); //push ret1... PC ret2 void fa(){... fb(); //push ret2... return //pop void fb(){... return //pop
Více5. Dynamické programování
5. Dynamické programování BI-EP1 Efektivní programování 1 ZS 2011/2012 Ing. Martin Kačer, Ph.D. 2010-11 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické
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íceADT prioritní fronta. Haldy. Další operace nad haldou. Binární halda. Binomické stromy. Časová složitost jednotlivých operací.
ADT prioritní fronta Haldy množina M operace Přidej(M,x) přidá prvek x do množiny M Odeber(M) odeber z množiny M prvek, který je na řadě Zásobník (LIFO), Fronta (FIFO) Prioritní fronta: Přidej(M,x) přidá
VíceKombinatorika, výpočty
Kombinatorika, výpočty Radek Pelánek IV122 Styl jednoduché výpočty s čísly vesměs spíše opakování + pár dílčích zajímavostí užitečný trénink programování Kombinace, permutace, variace Daná množina M s
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í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í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íceSeminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr
Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)
Ví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í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íceDynamické programování UIN009 Efektivní algoritmy 1
Dynamické programování. 10.3.2005 UIN009 Efektivní algoritmy 1 Srovnání metody rozděl a panuj a dynamického programování Rozděl a panuj: top-down Dynamické programování: bottom-up Rozděl a panuj: překrývání
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íceZáklady algoritmizace a programování
Základy algoritmizace a programování Složitost algoritmů. Třídění Přednáška 8 16. listopadu 2009 Který algoritmus je "lepší"? Různé algoritmy, které řeší stejnou úlohu zbytek = p % i; zbytek = p - p/i*i;
Ví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í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í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íceAVL 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í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í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íceDynamické programování
Dynamické programování 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í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í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 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í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í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íceIB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)
IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná
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ícePředmět: Algoritmizace praktické aplikace
Předmět: Algoritmizace praktické aplikace Vytvořil: Roman Vostrý Zadání: Vytvoření funkcí na stromech (reprezentace stromu haldou). Zadané funkce: 1. Počet vrcholů 2. Počet listů 3. Součet 4. Hloubka 5.
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íceNPRG030 Programování I, 2018/19 1 / :03:07
NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07 Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování
VíceBinární soubory (datové, typované)
Binární soubory (datové, typované) - na rozdíl od textových souborů data uložena binárně (ve vnitřním tvaru jako v proměnných programu) není čitelné pro člověka - všechny záznamy téhož typu (může být i
VíceHASHING GENERAL Hashovací (=rozptylovací) funkce
Níže uvedené úlohy představují přehled otázek, které se vyskytly v tomto nebo v minulých semestrech ve cvičení nebo v minulých semestrech u zkoušky. Mezi otázkami semestrovými a zkouškovými není žádný
VíceTGH07 - Chytré stromové datové struktury
TGH07 - Chytré stromové datové struktury Jan Březina Technical University of Liberec 5. dubna 2017 Prioritní fronta Datová struktura s operacemi: Odeber Minum (AccessMin, DeleteMin) - vrat prvek s minimálním
Více12. Globální metody MI-PAA
Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI
Vícepak celou úlohu. ani Jako obvykle je static int M, N; [] key, L, R; NIL = -1; cost; roota, rootb; throws IOExceptio // tree roots on { static void
Úloha nevžaduje žádnou zvláštníí manipulacii se stromy nebo jejich uzly, kroměě jediné neustále opakované operace Insert, proto bude vhodné volitt reprezentaci pokud možno úsporně. Nejprve ukáže me řešení
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í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í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íceHledání k-tého nejmenšího prvku
ALG 14 Hledání k-tého nejmenšího prvku Randomized select CLRS varianta Partition v Quicksortu 0 Hledání k-tého nejmenšího prvku 1. 2. 3. Seřaď seznam/pole a vyber k-tý nejmenší, složitost (N*log(N)). Nevýhodou
VíceŠ É Á á á é č ě ž é ž á č ž é ě á ž ě č é č č ž č á Ž ě Í ě ž áž ě ž ň á ě ž á ž č á é é ě é á ě č ž á é é ě é é ě é č ě é é é á á ž á ž é á Š é Ž ž é č é á á á á ď č á Š é á ěž á č č ě ě é č ě ě é á Ž
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í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í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íceInformatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A
Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A Každá úloha je hodnocena maximálně 25 body. Všechny své odpovědi zdůvodněte! 1. Postavte na stůl do řady vedle
VíceParalelní grafové algoritmy
Paralelní grafové algoritmy Značení Minimální kostra grafu Nejkratší cesta z jednoho uzlu Nejkratší cesta mezi všemi dvojicemi uzlů Použité značení Definition Bud G = (V, E) graf. Pro libovolný uzel u
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í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íceŘazení. Uspořádat množinu prvků obsahujících klíč podle definovaného kriteria.
Řazení Problém řazení: Uspořádat množinu prvků obsahujících klíč podle definovaného kriteria. Až 30% času běžného počítače. Příklad: Mějme zjistit zda jsou v posloupnosti prvků, například celých čísel,
VíceDynamické programování
Dynamické programování Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 26 Memoizace Dynamické programování 2 / 26 Memoizace (Memoization/caching) Pro dlouhotrvající funkce f (x) Jednou
VícePrioritní fronta, halda (heap), řazení
Prioritní fronta, halda (heap), řazení Co je prioritní fronta? Definována operacemi - vlož prvek - vyber největší (nejmenší) prvek Proč pf? Rozhraní: class PF { // ADT rozhrani PF(); boolean jeprazdna();
VíceNávrh designu: Radek Mařík
Návrh designu: Radek Mařík 1. Hashovací (=rozptylovací) funkce a) převádí adresu daného prvku na jemu příslušný klíč b) vrací pro každý klíč jedinečnou hodnotu c) pro daný klíč vypočte adresu d) vrací
Ví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ícebfs, dfs, fronta, zásobník, prioritní fronta, halda
bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 20. září 2016 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší
VíceAnotace. Dámy na šachovnici dominance a nezávislost. Aritmetické výrazy, notace a převody mezi nimi, nejdelší rostoucí podposloupnost.
Anotace Dámy na šachovnici dominance a nezávislost. Aritmetické výrazy, notace a převody mezi nimi, Problémy řešitelné vyplněním tabulky : Přednášející jde do M1, nejdelší rostoucí podposloupnost. Dámy
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íceDSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)
Indukcí dokažte následující výrok: pokud lef t a right jsou parametry funkce f a platí left right, pak volání f(array, left, right) vrátí minimální hodnotu z hodnot všech prvků v poli array na indexech
VíceZáklady řazení. Karel Richta a kol.
Základy řazení Karel Richta a kol. Přednášky byly připraveny s pomocí materiálů, které vyrobili Marko Berezovský, Petr Felkel, Josef Kolář, Michal Píše a Pavel Tvrdík Katedra počítačů Fakulta elektrotechnická
VíceB-Stromy. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol.
B-Stromy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2018 Datové struktury a algoritmy, B6B36DSA 01/2018, Lekce 11 https://cw.fel.cvut.cz/wiki/courses/b6b36dsa/start
VíceJméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: (Tučná čísla indikují počet neuspěvších (z 50) v jednotlivých otázkách) 1.
Jméno:... St. Sk.:. Cvičící:.. Bodů ze cv.: (Tučná čísla indikují počet neuspěvších (z 50) v jednotlivých otázkách) 1. 36 Heap sort a) není stabilní, protože halda (=heap) není stabilní datová struktura
VíceČasová složitost algoritmů, řazení a vyhledávání
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Časová složitost algoritmů, řazení a vyhledávání BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky Miroslav Balík Fakulta
VíceZadání druhého zápočtového projektu Základy algoritmizace, 2005
Zadání druhého zápočtového projektu Základy algoritmizace, 2005 Jiří Dvorský 2 května 2006 Obecné pokyny Celkem je k dispozici 8 zadání příkladů Každý student obdrží jedno zadání Vzhledem k tomu, že odpadly
VíceIB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2014 1 / 48 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý
VíceFiltrace snímků ve frekvenční oblasti. Rychlá fourierova transformace
Filtrace snímků ve frekvenční oblasti Rychlá fourierova transformace semestrální práce z předmětu KIV/ZVI zpracoval: Jan Bařtipán A03043 bartipan@students.zcu.cz Obsah Úvod....3 Diskrétní Fourierova transformace
Více