Dynamické datové struktury II.

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

Download "Dynamické datové struktury II."

Transkript

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

2 Obsah přednášky 1 Strom 2 Binární vyhledávací strom Binární strom 3 Vyvážené BST stromy Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 2 / 56

3 Strom 1. Strom Patří mezi rekurzivní datové struktury. Takové uspořádání dat, kdy každý prvek má nejvýše jednoho předchůdce a může mít více než jednoho následníka. Jedna z nejčastěji používaných dynamických datových struktur. Mnoho typů stromů: binární stromy, ternární stromy, kořenové stromy, volné stromy... Neorientovaný graf G = H, U, ρ, H = {h i n h i=1, U = {u i nu i=1, ρ(h) = [u 1, u 2 ]. G stromem T, T G, pak právě jedna cesta C C(u, v) = {h 1,..., h k, ρ(h 1 ) = [u, ], ρ(h 1 ) = [, v], u, v U. Pozn.: každá hrana h se v cestě C vyskytuje pouze 1x. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 3 / 56

4 Strom 2. Typy uzlů 3 typy uzlů: Listy: Uzly bez následníka, u l. Není k nim připojen žádný podstrom. Kořen: Uzel bez předchůdce = kořen. Existuje právě 1, u 0. Vnitřní uzly: Uzly, které nejsou listem ani kořenem. Kořenové stromy: Každý uzel je současně kořenem stromu a zároveň listem stromu vyšší úrovně. Volné stromy: Nedisponují kořenem, obecnější datové struktury (seznam). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 4 / 56

5 Strom 3. Stromy, základní vztahy Stupeň uzlu m: maximální počet potomků uzlu (m = 2, binární; m = 3, ternární). Vztah počtu uzlů a hran n u = n h 1. Výška uzlu x: Délka cesty od kořene k uzlu Výška stromu h: Představuje úroveň nejnižšího uzlu x = C(u 0, v) x l = C(u 0, u l ). h = max (x i) = max C(u 0, u l ). T u l U Ovlivňuje rychlost operací nad stromem (odpovídá hloubce rekurze). Snaha vytvářet stromy s h, cesty do všech uzlů stejně dlouhé: x l = x l Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 5 / 56

6 Strom 4. Stromy, základní vztahy Vztah mezi počtem uzlů a úrovní x n u (x) = m x 1. Vztah mezi počtem uzlů a výškou stromu: h n u m 0 + m m h = m h = 1 mh+1 1 m. Binární strom: n u 2 h 1. i=0 Vztah mezi výškou h a počtem uzlů n u : ln(nu ) h ln(m), n u 1. = log m (n u ), n u 1 Pozor na stromy h sup(n u 1), neefektivní! Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 6 / 56

7 Strom 5. Ukázky stromů pro různá n Unární strom: n = 1 seznam, fronta zásobník. Binární strom: n = 2. Ternární strom: n = 3. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 7 / 56

8 Strom 6. Vyvážené a degenerované stromy Vyvážený strom: Každý uzel má podobný počet potomků nebo výšku. Pro konstrukci vyvážených stromů existuje řada různých algoritmů. Využití při práci s daty, teorii grafů, indexování. Nevyvážený (degenerovaný) strom: Nerovnoměrné rozložení uzlů, větší výška. Nebezpečí používání: značná hloubka rekurzivního volání, při provádění může dojít pamět. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 8 / 56

9 Binární strom 7. Binární strom Nejčastěji používané typy stromů v informatice, m = 2. Každý uzel (rodič) má dva podstromy (potomky): levý podstrom a pravý podstrom. Využití pro rychlé vyhledávání, indexace, komprese,... Vyvážené binární stromy: Rovnoměrné rozložení uzlů, neobsahuje příliš dlouhé či krátké větve. Všechny listy se nacházejí na přibližně stejné úrovni. Hloubka vyváženého binárního stromu: h = log 2 (n u ). Důsledek: Operace nad tímto stromem mají příznivou asymptotickou složitost. Procházení, vyhledávání se stávají efektivní, méně efektivní přidávání či mazání uzlů. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 9 / 56

10 Binární strom 8. Vyvážené binární stromy Dokonale vyvážený binární strom: Počet vrcholu v levém a pravém podstromu se liší maximálně o 1. Obtížné na implementaci při přidávání a odebírání vrcholu. Nutné jeho převažování (LL, LP, PL, PP rotace). Absolutně vyvážený binární strom: Výška levého podstromu se rovná výšce pravého podstromu nebo se liší právě o 1 (Adelson, Velskii, Landis) AVL stromy. Snadnější zajištění vyváženosti než v předchozí variantě, používány v praxi. h AVL 2 log(n u ). Převažování stromu O(log(n u ). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 10 / 56

11 9. Ukázky binárních stromů Binární strom Dokonale vyvážený strom (1,2), absolutně vyvážený strom (3). Tomáš Bayer (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 11 / 56

12 Binární strom 10. Binární vyhledávací strom (BST) Pro každý uzel u U, a jeho potomky u left, u right U platí: u left < u u right > u, u U. Všechny prvky v levém podstromu jsou menší než u, Všechny prvky v pravém podstromu větší než u. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 12 / 56

13 11. Operace nad BST stromy Základní operace: Přidání uzlu: O(log(N)), Odstranění uzlu: O(log(N)), Nalezení uzlu: O(log(N)), Průchod stromem: O(N). Smazání stromu: O(N). Pokud stromy nejsou vyvážené, složitost O(log(N)) O(N)!!! Operace probíhají ve směru shora-dolů: od kořene k listům (přidání uzlu), od listům ke kořeni (mazání). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 13 / 56

14 12. Procházení BST stromu 3 základní metody procházení stromu, složitost O(N): 1 Přímé zpracování: PREORDER. 2 Vnitřní zpracování: INORDER. 3 Zpětné zpracování: POSTORDER. Přímé zpracování: Nejprve zpracován kořen, poté levý podstrom, nakonec pravý podstrom. Vnitřní zpracování: Nejprve zpracován levý podstrom, poté kořen, nakonec pravý podstrom. Zpětné zpracování: Nejprve zpracován levý podstrom, poté pravý podstrom, nakonec kořen. Princip zpracování stejný, liší se však pořadím prováděných operací. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 14 / 56

15 13. Procházení stromu PREORDER Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 15 / 56

16 14. Procházení stromu INORDER Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 16 / 56

17 15. Implementace třídy Uzel v BST stromu public class Uzel { int data; //Datova polozka Uzel levy; //Odkaz na levy podstrom Uzel pravy; //Odkaz na pravy podstrom public Uzel(int data_) { //Konstruktor data=data_; //Pouze inicializace dat, zarazeni pozde null; pravy=null; Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 17 / 56

18 16. Vytvoření prázdného stromu, ukázka Složitost O(1). Postup vytvoření prázdného stromu: Vytvoření odkazu na kořen. Inicializace odkazu na null: koren=null. public class Strom { private Uzel koren; public Strom (){ koren=null; Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 18 / 56

19 17. Procházení stromu PREORDER: rekurze Záměnou pořadí tisku můžeme ilustrovat varianty INORDER, PREORDER, POSTORDER. Rekurzivní varianta: Strom.java public void preorder(uzel u) { if (u==null) return; else { System.out.println(u.data); //1. koren preorder(u.levy); //2. L podstrom preorder(u.pravy); //3. P podstrom Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 19 / 56

20 18. Procházení stromu PREORDER: zásobník Nekurzivní varianta s využitím zásobníku. public void preorder(uzel u) { Stack S = new Stack(); S.push (u); while (!S.empty()){ Uzel v = S.pop() System.out.println(v.data); //1. koren if (v.levy!= null) S.push(v.levy); //2. L podstrom if (v.pravy!= null) S.push(v.levy); //3. P podstrom Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 20 / 56

21 19. Procházení stromu INORDER: rekurze public void inorder(uzel u) { if (u==null) return; else { inorder(u.levy); //1. L podstrom System.out.println(u.data); //2. koren inorder(u.pravy); //3. P podstrom Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 21 / 56

22 20. Procházení stromu INORDER: zásobník public void inorder(uzel u) { Stack S = new Stack(); S.push (u); while (!S.empty()){ Uzel v = S.pop() if (v.levy!= null) S.push(v.levy); //1. L podstrom System.out.println(v.data); //2. koren if (v.pravy!= null) S.push(v.levy); //3. P podstrom Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 22 / 56

23 21. Procházení stromu POSTORDER: rekurze public void postorder(uzel u) { if (u==null) return; else { postorder(u.levy); //1. L podstrom postorder(u.pravy); //2. P podstrom System.out.println(u.data); //3. koren Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 23 / 56

24 22. Procházení stromu POSTORDER: zásobník public void postorder(uzel u) { Stack S = new Stack(); S.push (u); while (!S.empty()){ Uzel v = s.pop() if (v.levy!= null) S.push(v.levy); //1. L podstrom if (v.pravy!= null) S.push(v.levy); //2. P podstrom System.out.println(v.data); //3. koren Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 24 / 56

25 23. Přidání nového uzlu Složitost O(1.4 log(n)). Postup využívá rekurzivní prohledávání stromu ve směru od kořene k listům: nalezení vhodného uzlu a zařazení položky. Využijeme přístup PREORDER (nejprve zpracujeme kořen, poté levý podstrom, následně pravý podstrom) Postup přidání nového uzlu: 1 Otestujeme, zda je přidávaný uzel v kořenem 2 Pokud ano (v=null), vytvořen nový uzel. 3 Jinak: Je-li data < v.data (tj. kořen podstromu), přidáme v do levého podstromu V opačném případě přidáme v do pravého podstromu 4 Vrátíme odkaz na nově vytvořený kořen. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 25 / 56

26 24. Přidání nového uzlu: rekurze Strom.java private Uzel pridej(uzel v, int data) { //Rekurzivni metoda if (v==null) v=new Uzel(data); //Prazdny strom else { if(data<v.data) { //Pridani do L podstromu v.levy=pridej(v.levy, data); //Vrati odkaz na L podstrom else if(data>v.data) { //Pridani do P podstromu v.pravy= pridej(v.pravy,data); //Vrati odkaz na P podstrom else return null; //Prvek uz ve stromu je return v; //Odkaz na nove vytvoreny prvek public void pridejuzel(int data){ //Pridani, nerekurzivni metoda koren=pridej(koren, data); //Volani privatni rekurzivni metody Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 26 / 56

27 25. Přidání nového uzlu: nerekurzivní řešení void pridej(int data) { //Nekurzivni reseni if (root==null) { //Prazdny strom root=new Uzel(data); return; Uzel u = koren, p = u; //Urceni uzlu a jeho predchudce while (u!= null) //Opakuj, dokud nedojdeme do listu p = u; //Zapamatuj si predchudce if(data<u.data) u = u.levy; //Prohledavani L podstromu else if(data>u.data) u = u.pravy; //Prohledavani P podstromu else return; //Uz je ve stromu u = new Uzel (data); if (data < p.data) p.levy = u; //Pridani do L podstromu else p.pravy = u; //Pridani do P podstromu Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 27 / 56

28 26. Nalezení uzlu ve stromu Složitost C aver = 1.4 log(n). 1 Pokud je strom prázdný, ukončíme jeho prohledávání. 2 Jinak testujeme shodu uzlu a hledané položky. V případě shody ukončíme prohledávání. 3 Pokud hledaná položka menší než hodnota v L podstromu, hledáme v L podstromu. 4 Jinak prohledáme P podstrom. Poznámka k implementaci: Využití rekurze. Pokud je uzel nalezen, vracíme odkaz na něj. V opačném případě vracíme null. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 28 / 56

29 27. Nalezení uzlu v BST stromu, ukázka private Uzel najdi(int data, Uzel u) { //Rekurzivni metoda //Prazdny strom if (u==null) return null; //Rovnost s prvkem if (data==u.data) return u; //Vraceni uzlu //Prohledavani L podstromu if (data<u.data) return najdi (data,u.levy); //Prohledavani P podstromu else return najdi(data,u.pravy); public Uzel nalezeni(int data) { //Nerekurzivni metoda return najdi (data, koren); //Volani privatni rekurzivni met Na tomto principu založeno tzv. binární vyhledávání. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 29 / 56

30 28. Smazání stromu Složitost O(N). Mazání probíhá od kořene k uzlům. Nejprve mažeme levý podstrom, poté mažeme pravý podstrom. Jako poslední mažeme kořen. Postup mazání stromu: 1 Pokud je strom prázdný, ukončíme mazání. 2 Smažeme levý podstrom připojený k aktuálnímu uzlu u. 3 Smažeme pravý podstrom připojený k aktuálnímu uzlu u. 4 Smažeme uzel u. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 30 / 56

31 29. Smazání stromu, ukázka Strom.java public void smaz(uzel u) { if (u!=null) { //Neni strom prazdny? smaz(u.levy); //Smazani L podstromu smaz(u.pravy); //Smazani P podstromu u=null; //Prirazeni null korenu Využití POSTORDER procházení. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 31 / 56

32 30. Smazání uzlu Binární vyhledávací strom Složitost O(1.4 log(n)). Smazání uzlu představuje zřejmě implementačně nejtěžší operaci nad binárním stromem. Cílem je odstranění uzlu zadaného hodnotou ze stromu. Při mazání uzlu dochází ke třem situacím: Mazaný uzel je list. Mazaný uzel má jednoho následníka. Mazaný uzel má dva následníky. Varianty (1) (2) jednoduché, varianta (3) obtížnější. Postup mazání uzlu: 1 Test, zda se ve stromu vyskytuje uzel se zadaným klíčem. 2 Pokud se uzel ve stromu nevyskytuje, proces mazání je ukončen. 3 V opačném případě mohou nastat 3 situace (viz výše). Detekce, o jakou variantu se jedná. 4 Smazání uzlu. 5 Rekonstrukce sousedských vztahů (odkazy na L a P podstrom). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 32 / 56

33 31. Upravené prohledávání stromu Při hledání si zapamatujeme předchůdce p nalezeného uzlu u. Uzlu p následně upravíme odkaz na levý či pravý uzel (následník mazaného). private Uzel najdi(int data, Uzel u, Uzel p){ //Rekurzivni metoda //Prazdny strom if (u==null) return null; //Rovnost s prvkem if (data==u.data) return u; p=u; //Zapamatovani predchudce //Prohledavani L podstromu if (data<u.data) return najdi (data,u.levy,p); //Prohledavani P podstromu else return najdi(data,u.pravy,p); public Uzel hledej(int data) { //Nerekurzivni metoda Uzel n=null; return najdi(data, koren, n); //Volani rekurzivni privatni metody Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 33 / 56

34 32. Smazání uzlu, ukázka Strom.java public void smaz(int data) { //Rekurzivni metoda Uzel p; //Predchudce mazaneho uzlu //Upravene prohledavani, vraci predchudce Uzel u=najdi(data,p); if (u==null) return; //Uzel nenalezen else { //Uzel nalezen if ((u.levy==null)&&(u.pravy==null)) { //List smazlist(u,p); else if(u.levy==null u.pravy==null) { //1 potomek smaz1vetev(u,p); else smaz2vetve(u,p); //2 potomci Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 34 / 56

35 33. Smazání listu Metodě předáváme jako parametr předchůdce p uzlu u. Při mazání listu u mohou nastat dva případy: Mazaný list u je kořenem. Předchůdce listu u má adresu null. Uzel u smažeme. Mazaný list u není kořenem. Předchůdce uzlu u nemá adresu null. Otestujeme, zda na u ukazuje levý nebo pravý podstrom. Nastavíme p.levy=null nebo p.pravy=null. Nejjednodušší varianta, obejde se bez použití rekurze. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 35 / 56

36 34. Mazání uzlu (list) Odstranění uzlu a přesměrování odkazu z jeho předchůdce na null. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 36 / 56

37 35. Smazání listu, ukázka public void SmazList(Uzel u, Uzel p) { if (p==null) { //Koren koren=null; else { //Neni koren //L podstrom, smazani if (p.levy==u) p.levy=null; //P podstrom, smazani else p.pravy=null; Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 37 / 56

38 36. Smazání uzlu s jedním potomkem Metodě předáváme jako parametry uzel u a jeho předchůdce p. Zavádíme pomocnou proměnnou w, která představuje následníka u. Postup bez použití rekurze. Postup mazání uzlu: 1 Rozhodneme, zda je následník w mazaného uzlu u v jeho levém či pravém podstromu: w=u.levy nebo w=u.pravy. 2 Otestujeme, zda je mazaný prvek u kořenem: Pokud ano: bude w novým kořenem. V opačném případě zjistíme, zda je u levým či pravým následníkem p. Nastavíme uzlu p jako následníka uzel w. 3 Smazání uzlu u. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 38 / 56

39 37. Mazání uzlu (jeden následník) Přesměrování odkazu z předchůdce na následníka mazaného uzlu s následným smazáním uzlu. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 39 / 56

40 38. Smazání uzlu s jedním potomkem, ukázka Strom.java public void smaz1vetev(uzel u, Uzel p) { Uzel w; //Je naslednik mazaneho prvku L ci P naslednikem? if (u.levy!=null) w=u.levy; else w=u.pravy; //Je predchudce mazaneho prvek korenem? if(p==null) koren=w; else { if (p.levy!=u) p.levy=w; else p.pravy=w; u=null; //Smazani uzlu Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 40 / 56

41 39. Mazání uzlu (2 následníci) Implementačně nejtěžší varianta. Který uzel bude novým rodičovským uzlem po smazání rodiče? Vede k přeuspořádání stromu. Dvě možnosti: Metoda PL: pracuje s největší nižší hodnotou, než je hodnota v mazaném uzlu (list). Metoda LP: pracuje s nejmenší vyšší hodnotou, než je hodnota v mazaném uzlu (list). Postup mazání uzlu tvořen 3 kroky: 1 Nalezení nejpravějšího uzlu n v levém podstromu (je to list). Jde o uzel s největší hodnotou menší než hodnota rušeného uzlu (PL). [Nebo: Nalezení nejlevějšího uzlu n v pravém podstromu. (LP).] 2 Hodnotu n přesuneme do rušeného uzlu. 3 Zrušíme uzel n. Tomáš Řešení Bayer bayertom@natur.cuni.cz s rekurzí či bez (Katedra rekurze. aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 41 / 56

42 40. Mazání uzlu (2 následníci), varianta PL Nalezení nejpravějšího prvku v levém podstromu (list). Prohození pozice s mazaným prvkem. Zrušení listu. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 42 / 56

43 41. Mazání uzlu (2 následníci), varianta LP Nalezení nejlevějšího prvku v pravém podstromu (list). Prohození pozice s mazaným prvkem. Zrušení listu. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 43 / 56

44 42. Varianta PL Postup mazání uzlu: 1 Nalezení uzlu w v levém podstromu, který je následníkem u. 2 Nalezení nejpravějšího w uzlu a jeho předchůdce p: Inicializace p=u. Dokud existuje pravý podstrom (w.pravy!=null), tak: (1) zapamatuj si uzel w: p=w (2) inkrementuj w: w=w.pravy. 3 Prohození obsahu uzlů u a w. 4 Smazání uzlu w, 2 varianty: w je list: smaž list (w). w není list: smaž uzel s jedním následníkem (w). Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 44 / 56

45 43. Varianta PL: nerekurzivní varianta Strom.java public void smaz2vetve(uzel u) { Uzel w=u.levy; //Levy naslednik //Nejpravejsi uzel v L podstromu Uzel p=u; //Inicializace predchudce while (w.pravy!=null) { //Dokud existuje P uzel p=w; //Predchuce nejpravejsiho uzlu w=w.pravy; //Zamena uzlu u <-> w u.data=w.data; //presun dat mezi uzly //Smazani uzlu if (w.levy!=null w.pravy!=null) smaz1vetev(w,p); else smazlist(w,p); Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 45 / 56

46 44. Prohledávání stromu Strom lze procházet dvěma způsoby: Prohledávání do hloubky (Depth First Search). Postup stromem dolů tak dlouho, dokud je to možné. Jakmile narazí na list, couvá a do první neprozkoumané větve a postup opakuje. Analogie procházení bludištěm. Implementace zásobníkem. Prohledávání do šířky (Breadth First Search). Postup stromem do stran od kořene. Přechod na následující úroveň až po zpracování předchozí. Implementace frontou. Oproti obecným grafům odpadá nutnost značkovat vrcholy neexistence cyklu. Základní paradigmata používaná při řešení problémů, prohledávání stavového prostoru. Projdeme -li celý strom, nemůžeme minout řešení pozor, vede k exponenciálnímu nárůstu složitosti. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 46 / 56

47 45. Procházení stromu do hloubky DFS, tzv. backtracking. Postup od kořene stromem směrem dolů. V každém uzlu postupujeme vlevo, tj. zpracováváme levý podstrom, dokud nedorazíme do listu. Poté se vrátíme se do nejbližšího uzlu vyšší úrovně a pokračujeme pravým stromem. Pokud u uzlu prohledány oba podstromy, uzel opouštíme a vracíme se do nejbližšího uzlu vyšší úrovně. Každý uzel navštíven celkem 3x: od předchůdce, zpět z levého podstromu zpět z pravého podstromu. Tento průchod binárním stromem odpovídá metodě preorder. Implementace s využitím zásobníku. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 47 / 56

48 46. Ukázka procházení stromu DFS Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 48 / 56

49 47. Implementace DFS: zásobník Metoda bez použití značkování. public void dfs() { Stack s = new Stack(); s.push (root); while (!s.empty()){ Uzel v = s.pop(); //Udelej nejakou operaci s v if (v.pravy!= null) s.push(v.levy); //P podstrom if (v.levy!= null) s.push(v.levy); // L podstrom Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 49 / 56

50 48. Procházení stromu do šířky BFS. Postup od kořene stromu k listům po jednotlivých úrovních. Dokud nejsou zpracovány všechny uzly jedné úrovně, nepřesouváme se na úroveň další. Každá úroveň procházena postupně ve směru od nejlevějšího uzlu k nejpravějšímu. Na rozdíl od DFS se stromem nevracíme zpět. Implementace velmi podobná předchozí, místo zásobníku použita fronta. Uzly opět není nutné značkovat, graf neobsahuje cyklus. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 50 / 56

51 49. Ukázka procházení stromu do šířky Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 51 / 56

52 50. Implementace BFS: fronta Metoda bez použití značkování. public void dfs() { Query q = new Query(); q.push (root); while (!q.empty()){ Uzel v = q.pop(); //Udelej nejakou operaci s v if (v.levy!= null) q.push(v.levy); //L podstrom if (v.pravy!= null) q.push(v.levy); //P podstrom Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 52 / 56

53 51. Vyvážené stromy Vyvážené BST stromy BST stromy mají dobré výkonnostní charakteristiky, pozor na Worst case (degenerované stromy). O(N) O(N 2 ): tvorba stromu O(1.4 log(n)) O(N): hledání Způsobeny nevhodnou konfigurací vstupních množin: setříděné množiny, reverzně setříděné množiny, Střídání velkých a malých hodnot. Možnosti řešení: randomizace vstupních dat randomizované BST. průběžná optimalizace tvaru stromu převažování. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 53 / 56

54 Vyvážené BST stromy 52. Degenerovaný strom, setříděná množina Setříděná množina X 1 = {1, 2, 3, 4, 5, 6, reverzně setříděná množina X 2 = {6, 5, 4, 3, 2, Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 54 / 56

55 Vyvážené BST stromy 53. Randomizované BST stromy Zavedení prvku náhodnosti při konstrukci stromu. Výhodou jednoduchost implementace a rychlost. Metody: Randomizace vstupní množiny Vytvoření počáteční permutace. Výběr náhodného uzlu s cílem zamezit vzniku degenerovaného stromu pro nevhodné množiny. Randomizované vkládání Modifikace standardního vkládání do BST stromu. Každý prvek může být se stejnou pravděpodobností p = 1/(n+1) kořenem stromu. Nový uzel může být vložen na libovolnou pozici mezi kořenem a cílovou pozicí pro nerandomizované vkládání. S pravděpodobností p rozhodneme o určitém prvku, zda bude/nebude kořenem. Oba postupy ekvivalentní. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 55 / 56

56 Vyvážené BST stromy 54. Ukázka randomizovaného vkládání: x= Tomáš Bayer (Katedra aplikované Dynamické geoinformatiky datové struktury a kartografie, II. Přírodovědecká fakulta UK.) 56 / 56

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

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

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

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

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

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

Binární vyhledávací stromy II

Binární vyhledávací stromy II Binární vyhledávací stromy II doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 19. března 2019 Jiří Dvorský (VŠB TUO) Binární vyhledávací

Více

Lineární spojový seznam (úvod do dynamických datových struktur)

Lineární spojový seznam (úvod do dynamických datových struktur) Lineární spojový seznam (úvod do dynamických datových struktur) Jan Hnilica Počítačové modelování 11 1 Dynamické datové struktury Definice dynamické struktury jsou vytvářeny za běhu programu z dynamicky

Více

Rekurzivní algoritmy

Rekurzivní 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íce

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

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

bfs, dfs, fronta, zásobník, prioritní fronta, halda

bfs, 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í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

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

Biná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í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

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

Prohledávání do šířky = algoritmus vlny Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé

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

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

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

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

Více

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

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

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

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat

Více

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

PROHLEDÁVÁNÍ GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze PROHLEDÁVÁNÍ GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2010/2011, Lekce 4 Evropský sociální fond Praha & EU: Investujeme do

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

Vyhledávací algoritmy

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

Více

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

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

bfs, dfs, fronta, zásobník, prioritní fronta, halda

bfs, dfs, fronta, zásobník, prioritní fronta, halda bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 19. září 2017 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší

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

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

BINARY SEARCH TREE

BINARY 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í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

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

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

BINARY SEARCH TREE

BINARY 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íce

Kolekce, cyklus foreach

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

Více

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

STACK

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

Více

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta

STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach fronta STROMOVE ALGORITMY Prohledavani do sirky (level-order) Po vodorovnejch carach vlož do fronty kořen opakuj, dokud není fronta prázdná 1. vyber uzel z fronty a zpracuj jej 2. vlož do fronty levého následníka

Více

Implementace binárního stromu směrníky

Implementace binárního stromu směrníky Téma: Vypracoval: Zdeněk Alčer Implementace binárního stromu směrníky 1. Teorie stromu: Pojem strom je datová struktura, která je v teorii grafů formálně definována jako zvláštní případ grafu bez cyklů.

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

TGH05 - aplikace DFS, průchod do šířky

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 31. března 2015 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

Více

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky

ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky LG 04 Zásobník Fronta Operace nqueue, equeue, Front, mpty... yklická implementace fronty Průchod stromem do šířky Grafy průchod grafem do šířky průchod grafem do hloubky Ořezávání a heuristiky 1 Zásobník

Více

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest

Obsah prezentace. Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest Obsah prezentace Základní pojmy v teorii o grafech Úlohy a prohledávání grafů Hledání nejkratších cest 1 Základní pojmy Vrchol grafu: {množina V} Je to styčná vazba v grafu, nazývá se též uzlem, prvkem

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

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

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

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

Třídící algoritmy. Insert Sort. Bubble Sort. Select Sort. Shell Sort. Quick Sort. Merge Sort. Heap Sort.

Třídící algoritmy. Insert Sort. Bubble Sort. Select Sort. Shell Sort. Quick Sort. Merge Sort. Heap Sort. Třídící algoritmy. Insert Sort. Bubble Sort. Select Sort. Shell Sort. Quick Sort. Merge Sort. Heap Sort. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká

Více

Algoritmy na ohodnoceném grafu

Algoritmy na ohodnoceném grafu Algoritmy na ohodnoceném grafu Dvě základní optimalizační úlohy: Jak najít nejkratší cestu mezi dvěma vrcholy? Dijkstrův algoritmus s t Jak najít minimální kostru grafu? Jarníkův a Kruskalův algoritmus

Více

Datové struktury. alg12 1

Datové struktury. alg12 1 Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou

Více

Úvod do teorie grafů

Úvod do teorie grafů Úvod do teorie grafů Neorientovaný graf G = (V,E,I) V množina uzlů (vrcholů) - vertices E množina hran - edges I incidence incidence je zobrazení, buď: funkce: I: E V x V relace: I E V V incidence přiřadí

Více

Dynamické programování

Dynamické 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í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

Č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

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

TGH05 - aplikace DFS, průchod do šířky

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 28. března 2017 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

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

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

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

Úvod do programování 10. hodina

Úvod do programování 10. hodina Úvod do programování 10. 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 Syntax Dvojrozměrné pole

Více

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132 Ak. rok 2015/2016 vbp 1. ze 132 Ing. Vladimír Beneš, Ph.D. vedoucí katedry Petrovický K101 katedra informatiky a kvantitativních metod E-mail: vbenes@bivs.cz Telefon: 251 114 534, 731 425 276 Konzultační

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

Vzdálenost uzlů v neorientovaném grafu

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

Více

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

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 2/2, Lekce Evropský sociální fond Praha & EU: Investujeme

Více

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS PŘÍPRAVA DOMÁCÍCH

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

TGH07 - Chytré stromové datové struktury

TGH07 - 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íce

Základy umělé inteligence

Základy umělé inteligence Základy umělé inteligence Automatické řešení úloh Základy umělé inteligence - prohledávání. Vlasta Radová, ZČU, katedra kybernetiky 1 Formalizace úlohy UI chápe řešení úloh jako proces hledání řešení v

Více

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony. Booleovská algebra. Booleovské binární a unární funkce. Základní zákony. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

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

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

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant

Základy informatiky. 07 Teorie grafů. Kačmařík/Szturcová/Děrgel/Rapant Základy informatiky 07 Teorie grafů Kačmařík/Szturcová/Děrgel/Rapant Obsah přednášky barvení mapy teorie grafů definice uzly a hrany typy grafů cesty, cykly, souvislost grafů Barvení mapy Kolik barev je

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

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node

State Space Search Step Run Editace úloh Task1 Task2 Init Clear Node Goal Add Shift Remove Add Node Goal Node Shift Remove, Add Node State Space Search Po spuštění appletu se na pracovní ploše zobrazí stavový prostor první předpřipravené úlohy: - Zeleným kroužkem je označen počáteční stav úlohy, který nemůže být změněn. - Červeným kroužkem

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

Prohledávání stavového prostoru

Prohledávání stavového prostoru Prohledávání stavového prostoru State space search Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 45 Stavový prostor Prohledávání do hloubky Prohledávání do šířky Informované

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

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT

prohled av an ı graf u Karel Hor ak, Petr Ryˇsav y 16. bˇrezna 2016 Katedra poˇ c ıtaˇ c u, FEL, ˇ CVUT prohledávání grafů Karel Horák, Petr Ryšavý 16. března 2016 Katedra počítačů, FEL, ČVUT Příklad 1 Nad frontou (queue) byly provedeny následující operace: push(1) push(2) print(poll()) print(peek()) print(peek())

Více

Informatika 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 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íce

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

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

Více

Konstruktory a destruktory

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

Více

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