Zpráva k semestrální práci z pedmtu 36PT programovací techniky

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

Download "Zpráva k semestrální práci z pedmtu 36PT programovací techniky"

Transkript

1 Zpráva k semestrální práci z pedmtu 36PT programovací techniky Implementace algoritmu: Dvojrozmrný intervalový strom jméno a píjmení: Michal Trs studijní skupina: 12 roník: 2 cviení: pátek 7:30

2 1. Specifikace ešeného problému Dvourozmrný intervalový strom je datová struktura vhodná pro reprezentaci vyhledávacího prostru s operací hledání na intervalovou shodu. Tento datový typ je vhodné použít pro velký poet nemnných prvk (bod [x,y]), kde potebujeme asto vdt které body z prohledávaného prostoru padnou do obdélníku <Xmin,Xmax x <Ymin,Ymax. Viz Obr 1.1. y Ymax Ymin Xmin Xmax x Obr ešený problém 2. Rešerše Nejjednodušší algoritmus prohledávání na intervalovou shodu je Sekvenní vyhledávání (Popsáno viz použitá literatura kap ). Pokud je množina nad kterou vyhledáváme seazena, staí sekvenn od zaátku najít dolní mez a poté vypisovat prvky dokud je aktuální prvek menší než horní mez hledaného intervalu. ásten lze hledání urychlit tím, že do uritých míst seznamu budeme pistupovat pomocí pole. Další metodou jak efektivnji najít minimum od kterého probíhá vyhledávání je binární plení. Další použitelnou strukturou pro vyhledávání na intervalovou shodu jsou D-BVS. Jsou to D-rozmrné binární vyhledávací stromy kde se v každém pate stromu cyklicky mní klí podle kterého vyhledáváme. Napíklad máme-li 2-BVS hledáme na první úrovni podle 1.klíe (souadnice x), na druhé úrovni podle 2.klíe (souadnice y), na 3. úrovni znovu podle 1.klíe, atd. Výhodou tchto strom je, že prostor mžeme prohledávat také na úplnou a ástenou shodu. 3. Popis a vysvtlení algoritm 3.1 Jednorozmrný intervalový strom Nejprve vysvtlím konstrukci a prohledávání jednorozmrného stromu, protože tento strom je ve všech uzlech stromu dvourozmrného. Používá se pro vyhledávání interval v jednom rozmru Konstrukce stromu Základem je obousmrn zetzený seznam (dále jen SEZNAM) bod se souadnicemi x,y. Tento seznam musíme nejprve seadit podle souadnice podle které bude chtít vyhledávat. V našem pípad podle souadnice y. Nad takto seazeným Seznamem stavíme odspodu binární vyhledávací strom tak, že prvky SEZNAMu jsou listy stromu. 2 / 14 Michal Trs

3 Strom má tu vlastnost, že levý synové každého uzlu jsou menší nebo rovny uzlu a pravý synové mají vtší hodnotu klíe než uzel. Kdyby byl seznam nesetídn, toto by neplatilo a strom by nebyl použitelný pro vyhledávání. Tento strom je vidt na Obr Vyhledávání ve stromu Nech je hledaným intervalem interval <Ymin,Ymax. Hledáme hodnotu p Ymin. Postupujeme od koene, pokud je Ymin aktuální uzel pak jdi doleva, pokud Ymin aktuální uzel pak jdi doprava. Takto postupuj dokud není uzel list (tzn. našel jsem prvek p). Pokud je p Ymax je hledaná interval prázdný, jinak poínaje tímto prvkem p zani sekvenn procházet SEZNAM smrem k vtším prvk, dokud jsou prvky menší než Ymax. Tyto prvky jsou ukládány do výstupního seznamu. 3.2 Dvojrozmrný intervalový strom Používá se pro prohledávání 2D prostoru na intervalovou shodu podle dvou souadnic. Situace je znázornna na Obr ešený problém. Opt popíšu konstrukci a prohledávání stromu jako v pedchozím pípad Konstrukce stromu Základem je SEZNAM, tentokrát seazený podle souadnice x. Listy stromu nejsou prvky SEZNAMu (jako u 1D stomu), ale mají pouze hodnotu klíe a odkaz na jednorozmrný podstrom vytvoený ze seznamu. Tento seznam obsahuje pouze prvky kteí jsou synové tohoto uzlu (listu). Uzly vypadají stejn jako u 1D stromu, ale mají navíc ukazatel na 1D podstrom popsaný výše. Nad listy vygenerujeme opt vyvážený binární vyhledávací strom a každému vnitnímu uzlu piadíme podstrom generovaný podle souadnice y. Vlastní strom mžeme stavt odspodu od list, nebo od koene. Já jsem použil stavní od zdola které je podrobn popsáno v kapitole 4.3 u vysvtlování metody Create t2stromu Vyhledávání ve stromu Najdeme horní a dolní mez intervalu <Xmin,Xmax. Oznaíme si uzel u ve kterém se dlí cesta k minimu a maximu. Je dobe patrné, že levý a pravý syn obsahují dohromady všechny prvky padnoucí do intervalu plus njaké navíc, proto zaneme minimu vyhledávat v levém synovy. Postupujeme takto: Pokud je hodnota Xmin hodnota uzlu jdeme doleva a tudíž musíme zpracovat (prohledáme výše popsaným zpsobem 1D strom na shodu podle souadnice y) podstrom pravého syna tohoto uzlu, protože všechny body jsou zaruen mezi Xmin a Xmax a tudíž patí do hledaného intervalu. Pokud je Xmin hodnota uzlu jdeme doprava a podstrom nezpracováváme. tímto zpsobem pokraujeme dokud nenarazíme na list (tj. jsme na konci stromu). Obdobn postupujeme pi hledání maxima. Zaneme u pravého syna. Pokud jdeme doprava, zpracováváme levé podstromy tohoto uzlu. Pokud jdeme doleva, podstrom nezpracováváme. Koníme opt narazíme-li na list. 4. Popis implementace a datových struktur V této kapitole popíšu moji implementaci dvojrozmrného intervalového stromu. Programovací jazyk jsem zvolil Object Pascal Delphi 6. 3 / 14 Michal Trs

4 4.1 Pomocné datové struktury Jsou to struktury používané jedno a dvojrozmrným intervalovým vyhledávacím stromem. Postupn zde uvedu deklarace všech datových typ a vysvtlím co jednotlivé metody dlají a u nkterých jak fungují. tbod (useznam) reprezentuje bod v rovin o souadnicích x,y tbod = record x,y: integer; tcell (useznam) Buka spojového seznamu. ptrcell = ^tcell; tcell = record prev, next: ptrcell; point: tbod; tklic (useznam) výtový typ - používán v metodách pi specifikaci o jakou souadnici se jedná. Napi v procedue Serad. tklic = (x,y); tseznam (useznam) Vlastní spojový seznam. tseznam = class public constructor Create; destructor Destroy; {zrusi vsechna data v seznamu} procedure Prazdny; {vyhodi vsechny bunky, ale nerusi data!!!} procedure Pridej(bod: tbod); {pridani noveho prvku na konec} procedure SetAktualni(prvek: ptrcell); procedure ZaradPrvek(Prvek: ptrcell); function Prvni: ptrcell; function Dalsi: ptrcell; function PrvniHodn: tbod; function DalsiHodn: tbod; procedure Serad(klic: tklic); function QKonec: Boolean; function QPrazdny: Boolean; function PocPrvku: integer; procedure PripojSeznam(Sez: tseznam); {pripoji Sez nakonec seznamu} function SpojSeznamy(Sez1,Sez2: tseznam): tseznam; function GetAktualni: tbod; {preskoci prvky stejne hodnoty jak Hod podle x nebo y} function PreskocStejne(Hod: integer; klic: tklic): tseznam; private pprvku: integer; first, last, akt: ptrcell; Vysvtlení základních metod objektu: 4 / 14 Michal Trs

5 Create Destroy Pridej SetAktualni ZaradPrvek Prvni / PrvniHodn Dalsi / DalsiHodn Serad QKonec QPrazdny PocPrvku PripojSeznam SpojSeznamy GetAktualni PreskocStejne Vytvoí prázdný spojový seznam. Zruší instanci objektu všechny jeho data. Pidá nový Bod na konec seznamu. Nastaví prvek jako aktuální pozici v seznamu. Obdoba metody Pridej, ale pidává již vytvoený Prvek seznamu. Vrátí ukazatel na první buku seznamu / pímo hodnotu bodu v buce. Pitom nastaví aktuální pozici na zaátek. Posune se v seznamu o jednu pozici doprava a vrátí ukazatel na buku seznamu / pímo hodnotu bodu v buce. Seadí seznam bodle souadnice odpovídající klíi. azení je realizováno algoritmem QUICKSORT. Probíhá takto: Nejprve se v pamti alokuje dynamické pole ukazatel na buky seznamu. Tyto ukazatele se setídí. Dále je použita metoda Prázdný která vyprázdní seznam, ale zachová data v pamti. Do takovéhoto seznamu jsou pidány metodou ZaradPrvek již seazené prvky z pole. true pokud je aktuální prvek poslední. true pokud poet prvk je roven nule. Vrací poet prvk v seznamu. Pipojí seznam Sez na konec seznamu a tím pádem Sez zruší. Vrací nový objekt seznam. Symbolicky se dá tato operace zapsat takto: result:=sez1+sez2; Seznamy Sez1 a Sez2 zstanou nezmnné. Vrací hodnotu aktuálního bodu Peskoí buky seznamu které podle zvoleného klíe mají stejnou hodnotu souadnice jako práv aktuální. Zastaví se na poslední bue se stejnou hodnotou. Peskoené buky jsou ukládány do nového seznamu a ten je funkcí vrácen. funkce porovnej (useznam) Porovnají promnné A a B a vrací 1 pokud A B, 0 pokud A = B a -1 pokud A<B function Porovnej(A,B: tbod; klic: tklic): integer; overload;{body s prioritou klice} function Porovnej(A,B: integer): integer; overload; tfronta (istrom), t2fronta (i2strom) Fronta do které je možno ukládat Uzly strumu. Jsou to 2 rozdílné objekty které se liší pouze daty s kterými mohou pracovat. tfronta pracuje s objekty tuzel (píp. zddným tlist) a t2fronta s objekty t2uzel (píp. t2list). Vlastní fronta je implementována pomocí jednosmrn zetzeného spojového seznamu. Uvedu zde pouze deklaraci objektu tfronta, protože objekt t2fronta obsahuje zcela stejné metody. tfronta = class public constructor Create; destructor Destroy; procedure Pridej(Uzel: tuzel; dalsihodn:integer); procedure Odeber(var Uzel: tuzel; var dalsihodn:integer); function QPrazdna: boolean; private celo, tyl: tprvekfronty; pprvku: integer; 5 / 14 Michal Trs

6 Samotnou frontu tvoí buky objekty tprvekfronty. Nebudu zde uvádt jejich deklarace, protože je používán pouze samotná fronta. 4.2 Jednorozmrný intervalový strom Vše dále popisované v této podkapitole je implementováno v unit istrom.pas. Využívá unitu useznam. tuzel jednotlivé uzly z kterých je stavn strom tuzel = class; tuzel = class public constructor Create(levy: tuzel; pravy: tuzel; hodn: integer); function GetHodnota: integer; function GetLevy: tuzel; function GetPravy: tuzel; private l,p: tuzel; hod: integer; Vysvtlení jednotlivých metod: Create Vytvoí nový uzel, její parametry jsou levý a pravý syn a hodnota uzlu. GetHodnota Vrací hodnotu uzlu. GetLevy/GetPtavy Vrátí levého / pravého syna. tlist Je odvozen od tuzel. Formáln je s ním shodný, ale jeho synové jsou ukazatelé na tcell, tj. jsou to ukazatelé do spojového seznamu. tlist = class (tuzel) private l,p: ptrcell; public constructor Create(levy: ptrcell; pravy: ptrcell; hodn: integer); function GetLevy: ptrcell; function GetPravy: ptrcell; Create Vytvoí nový list, který bude ukazovat do seznamu a bude mít hodnotu hodn tstrom Vlastní jednorozmrný vyhledávací strom. Pracuje zcela nezávisle na dvojrozmrném stromu. tstrom = class public constructor Create(Seznam: tseznam); destructor Destroy; Function NajdiInterval(Ymin,Ymax: integer): tseznam; Function NajdiMin(Ymin: integer): ptrcell; function GetSeznam: tseznam; function GetKoren: tuzel; private 6 / 14 Michal Trs

7 koren: tuzel; S: tseznam; Vysvtlení implementace jednotlivých metod: Create Destroy NajdiMin NajdiInterval GetSeznam GetKoren Vytvoí nový jednorozmrný strom nad seznamem. Stavba stromu probíhá odspodu. Postupuje v tchto krocích: seadí seznam podle klíe vzestupn. nate první prvek seznamu do promnné lcell peskoí buky se stejnou hodnotou klíe nate další prvek do promné pcell z lcell a pcell vytvoí list a pidá jej do fronty1 takto pokraujeme dokud nejsme na konci seznamu pokud jsme na konci seznamu a v lcell máme natenou buku musíme list také vytvoit, ale s tím rozdílem, že pcell bude nil. Dokud není fronta1 prázdná, vyber vždy 2 prvky a vytvo z nich nový uzel a pidej ho do fronty2. Pokud ve front1 zbyl jeden prvek, nestavíme nad ním další uzel, ale rovnou jej pesuneme do fronty 2. fronta1:=fronta2; a vyprázdni frontu 2; Opakuj pedchozí 2 bodu dokud fronta neobsahuje pouze jeden prvek, pak skoni a tento prvek je koen stromu. Zruší strom se všemi daty Pomocí stromu najde prvek p, který je vtší nebo roven Ymin. Hledání je popsáno v kapitole Najde interval <Ymin,Ymax. Výsledek který funkce vrací je SEZNAM. Nejprve volá funkci NajdiMin. Pokud vrácená hodnota této funkce je vtší než Ymin vrátí tato funkce nil tzn. hledaný interval je prázdný. Jinak poínaje tímto prvkem zane procházet prvky ze SEZNAMu a zane je ukládat do nového seznamu dokud je aktuální hodnota < Ymax. Tento nový seznam je výstup funkce. Vrátí seznam nad kterým byl strom postaven. Využito pi konstrukci dvojrozmrného stromu. Vrací koen stromu. 4.3 Dvojrozmrný intervalový strom Vše dále popsané je implementováno v unit i2strom.pas. Tato unita využívá useznam a istrom. Opt uvedu deklarace objekt Uzlu a Stromu a slovn vysvtlím jak pracují jednotlivé metody. t2uzel Základní kameny z kterých se skládá strom. Jsou podobné Uzlm jednorozmrného stromu, ale mají navíc položku podstrom, ve které je uložen strom generovaný podle souadnice y. t2uzel = class; t2uzel = class public constructor Create(levy: t2uzel; pravy: t2uzel; hodn: integer; podstrom: tstrom); destructor Destroy; virtual; function GetHodnota: integer; function GetLevy: t2uzel; function GetPravy: t2uzel; function GetPodStrom: tstrom; 7 / 14 Michal Trs

8 private l,p: t2uzel; hod: integer; Strom: tstrom; Vysvtlení metod: Create Vytvoí nový uzel. Promnné levy a pravy jsou levý a pravý syn. PodStrom je jednorozmrný strom. Destroy Zruší Uzel a všechna data která obsahuje (i podstrom) GetHodnota Vrátí hodnotu uzlu. GetLevy/GetPravy Vrátí levého / pravého syna. GetPodStrom Vrátí objekt jednorozmrný strom. t2list Odvozen z t2uzel. Vytvoil jsem si jej proto, že pomocí nj snadno zjistím, že jsem na konci stromu. Oproti t2uzel nemá žádné metody navíc, pouze má jednoduší constructor, který pravého a levého syna nastaví na nil. t2strom Rozhraní 2 rozmrného vyhledávacího intervalového stromu. Create postaví dvojrozmrný strom nad seznamem. Funkce najdi interval, hledá body padnoucí do zadaného intervalu. t2strom = class public constructor Create(seznam: tseznam); destructor Destroy; Function NajdiRozcesti(Xmin,Xmax: integer): t2uzel; Function NajdiInterval(Xmin,Xmax,Ymin,Ymax: integer): tseznam; private koren: t2uzel; Sez: tseznam; Vysvtlení metod: Create Pracuje v tchto krocích: Seadí seznam podle souadnice x Nate první hodnotu ze seznamu a z ní vytvoí list. Peskoí body se stejnou hodnotou souadnice x. Tyto hodnoty jsou uložené v seznamu. K tomu seznamu je pidána první hodnota a je poslán do konstruktoru jednorozmrného strumu. Tento strom je piazen tomuto listu. Vytvoený list uložíme do fronty1 To samé prove pro všechny další hodnoty x. Pokrauj tak dlouho, dokud nejsme na konci seznamu. Postupn vybírej listy po dvou z fronty1 a vytváej nad nimi uzly. Spoj seznamy z kterých byl vytvoen podstrom prvního a druhého nateného listu a pošly do konstruktoru jednorozmrného stromu. Tento strom bude podstromem tohoto uzlu. Pokud jsme na konci a je naten pouze první list z dvojice, tak druhému piadíme nil a vytvoíme uzel. Uzly pidáváme do fronty2 fronta1:=fronta2, pokud fronta1 obsahuje pouze 1 prvek, je tento prvek koen stromu. 8 / 14 Michal Trs

9 jinak vybírej uzly z fronty1 po dvou a vytváej nad nimi uzly výše popsaným zpsobem. Pokud zbude na konci fronty1 uzel pesu jej do fronty2. Destroy Zruší strom vetn všech dat. NajdiRozcestí Najde uzel ve kterém se dlí cesta k maximu a minimu. NajdiInterval popsáno v kapitole Ovení algoritmu V následujících podkapitolách si na dvou píkladech ukážeme jak probíhá vyhledávání ve dvojrozmrném intervalovém strom. 5.1 První píklad Mjme tyto body [0,6], [1,4], [2,4], [3,5], [5,6], [6,4], [6,9], [7,7], [7,8], [8,0]. Z nich je vytvoen dvojrozmrný intervalový strom (Obr 5.1, Obr 5.2, Obr 5.3). Hledejme napíklad interval <2,7 x <3,6. Nejprve hledáme uzel, kde se nám dlí cesta k horní a dolní mezi intervalu x. Tento bod je hned koen stromu. Proto od tohoto bodu pokrauje jinou cestou pi hledání minima a maxima. Nejprve si ukážeme hledání minima. Dobe je to vidt v Obr 5.1, cesta je vyznaena ervenými šipkami. Dolní mez intervalu je 2, proto v uzlu 1 jdeme doprava a levý podstrom do intervalu nepatí. Uzel 2 je roven dolní mezi proto pokraujeme doleva a pitom musíme zpracovat pravý podstrom s4, protože podle souadnice x padne do intervalu. V podstromu s4 hledáme na shodu podle y. Uzel = 5, Ymin = 3, jdeme doleva. Jsme v seznamu, nalezli jsme prvek [3,5], 5 je menší než Ymax = 6 a proto tento prvek zaadíme do výsledného seznamu. Další prvek v seznamu není a proto pokraujeme dále v prohledávání hlavního stromu podle x. Uzel s hodnotou 2 je list a to znamená že jsme s hledáním minima skonili. Ješt musíme prohledat podstrom s3 na shodu podle y. Hledání probíhá naprosto stejn jako u podstromu s4. Nalezený prvek [2,4] do intervalu patí a proto jej pidáme do výsledného seznamu. Nyní pokraujeme hledáním maxima. Uzel 6 je menší než Xmax = 7 a proto pokraujeme doprava, ale musíme zpracovat levý podstrom s11. Hledání v tomto podstromu je patrné z Obr 5.2. Hodnota koene je 6, což je více než Ymin = 3 a proto pokraujeme doleva. Uzel 4 je vtší než Ymin a proto pokraujeme opt doleva. Nalezli jsme prvek [6,4]. 4 je menší než Ymax = 6 a proto tento prvek do hledaného intervalu patí. Pidáme jej tedy do výstupního seznamu. Sekvenn zaneme procházet seznam dokud nebude hodnota vtší než Ymax, nebo bude konec seznamu. Další je prvek [5,6], 6 je menší nebo rovno Ymax = 6 a proto jej pidáme do seznamu. Další je prvek [6,9], 9 není menší než Ymax a proto koníme s procházením podstromu a vracíme se k hledání maxima podle souadnice x. Uzel 7 je menší nebo roven Xmax = 7 a proto jdeme doleva. Uzel 7 je zárove list a proto zde hledání maxima koní. Ješt musíme prohledat podstrom s7. Uzel 7 je vtší než Ymin = 6 a proto pokraujeme doleva. Nalezli jsme prvek [7,7], 7 je vtší než Ymax a proto tento prvek do intervalu nepatí. 9 / 14 Michal Trs

10 3 tstrom: s6 t2uzel: s s s14 t2list: s9 s10 s11 s12 s1 s2 s3 s4 s5 s6 s7 s8 tseznam: 0,6 1,4 2,4 3,5 5,6 6,4 6,9 7,7 7,8 8,0 Obr 5.1- t2strom - dvojrozmrný intervalový strom (strom podle souadnice x) 10 / 14 Michal Trs

11 s1 6 0,6 nil s3 4 2,4 nil s4 5 3,5 nil s7 7 7,7 7,8 s9 4 1,4 0,6 s11 6 s ,4 5,6 6,9 nil 0 8 8,0 7,7 7,8 nil s ,4 2,4 3,5 0,6 nil s ,0 6,4 5,6 7,7 7,8 6,9 Obr ukázka podstrom dvojrozmrného stromu z Obr 5.1 tuzel: tlist: tseznam: ,0 1,4 2,4 6,4 3,5 0,6 5,6 7,7 7,8 6,9 9 nil Obr Jednorozmrný strom podle souadnice y (souasn podstrom s15) 11 / 14 Michal Trs

12 Obr výsledek testovací utility 5.2 Druhý píklad Druhý píklad jsem zvolil jednoduší. Náhodn jsem zvolil 4 body a dal vyhledat ¼ intervalu. Hledání stejn jako je popsáno v prvním píkladu. Na Obr 5.5 je situace rozkreslená do grafu. Je patrné, že vyjde stejný výsledek jako v testovací utilit na Obr s s ,54 nil s ,41 nil s5 s6 s1 s2 s3 s4 s ,95 nil s ,82 nil s ,41 14,54 s7 54 s ,82 56, ,41 14,54 99,82 56,95 Obr Kompletní dvojrozmrný intervalový strom 12 / 14 Michal Trs

13 Obr výsledek testovací utility 6. Výpoet a ovení složitosti algoritmu 6.1 Jednorozmrný intervalový strom Operaní složitost vyhledávání Pi hledání intervalu musíme nejprve najít prvek p Ymin. Znamená to, že musíme jednou projít stromem od koene k listu. Poet provedených porovnání je roven výšce stromu. U binárního stromu je rovna log 2 n. Po nalezení prvku p zaneme sekvenn procházet seznam. Pi každém prchodu musíme porovnat jestli je aktuální prvek menší než Ymax. Tento poet odpovídá potu prvk odpovídající hledanému intervalu. Oznaíme ho m. Ve vtšin pípad je m log 2 n, proto jej nemžeme zanedbat. Celková složitost vyhledávání je tedy O(m+log 2 n) Pamová složitost Strom se skládá ze spojového seznamu o n prvcích. Nad tímto seznamem je postaven strom o n - 1 uzlech. Celková složitost je S(n). 6.2 Dvojrozmrný intervalový strom Operaní složitost vyhledávání Je patrné, že nalezení minima a maxima podle souadnice x je úmrné log 2 n. Dále musíme pro každou souadnici x ležící v intervalu prohledat podstrom na shodu podle souadnice y se složitostí O(m+log 2 n). To znamená, že složitosti musíme vynásobit. Dostaneme tedy O((log 2 n) 2 +m) Pamová složitost Strom se skládá z n-1 uzl. Každý uzel obsahuje podstrom vystavný na seznamu. Souet prvk seznam v jedné úrovni je n a souet uzl podstrom v každé úrovni je n-1. Abychom dostaly celkový poet vynásobíme toto íslo potem úrovní stromu, kterých je log 2 n. Vyjde nám, že celková pamová složitost je S(n+n.log 2 n). 13 / 14 Michal Trs

14 6.3 Mení potu operací Pro ovení operaní složitosti jsem do kódu umístil poítadla, která poítala poet porovnání. Vždy jsem vygeneroval n náhodných bod z intervalu <0;99x<0;99. Poté jsem vyhledával body z intervalu <15;85x<15;85. To pibližn odpovídá ½ bod ležící v tomto intervalu ze všech vygenerovaných bod. To samé jsem provedla pro pípad kdy hledaný interval spluje pibližn 1/10 bod. Hledal jsem interval <34;66x<34;66. Zde popsané mení je vyneseno v tabulce. Kde n poet všech bod, p 1/2 hledaný interval je polovina všech bod, p 1/10 hledaný interval je 1/10 všech bod. n P 1/ P 1/ Závislosti z tabulky jsou vyneseny do Grafu. p1/ zmená hodnota teoretická hodnota p1/ n n Graf 6.1-1/10 bud leží v hledaném inervalu Graf 6.2-1/2 bod leží v hledaném intervalu Z graf je velice dobe patrné, že pro menší poet bod ležící v hledaném intervalu má algoritmus skouten logaritmickou operaní složitost. Z Grafu 6.2 je patrné, že pi velkém potu prvk ležící v hledaném intervalu je složitost lineární. Je to zpsobeno sekvenním vyhledáváním po nalezení hodnoty Ymin v jednorozmrných podstromech. Znamená to, že m << log 2 n. 7. Použitá literatura Hudec, B.: Programovací techniky. Praha, VUT / 14 Michal Trs

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

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

Cykly Intermezzo. FOR cyklus

Cykly Intermezzo. FOR cyklus Cykly Intermezzo Rozhodl jsem se zaadit do série nkolika lánk o základech programování v Delphi/Pascalu malou vsuvku, která nám pomže pochopit principy a zásady pi používání tzv. cykl. Mnoho ástí i jednoduchých

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

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

Správa obsahu ízené dokumentace v aplikaci SPM Vema

Správa obsahu ízené dokumentace v aplikaci SPM Vema Správa obsahu ízené dokumentace v aplikaci SPM Vema Jaroslav Šmarda, smarda@vema.cz Vema, a. s., www.vema.cz Abstrakt Spolenost Vema patí mezi pední dodavatele informaních systém v eské a Slovenské republice.

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

Datový typ POLE. Jednorozmrné pole - vektor

Datový typ POLE. Jednorozmrné pole - vektor Datový typ POLE Vodítkem pro tento kurz Delphi zabývající se pedevším konzolovými aplikacemi a základy programování pro mne byl semestr na vysoké škole. Studenti nyní pipravují semestrální práce pedevším

Více

Datový typ prioritní fronta Semestrální práce z předmětu 36PT

Datový typ prioritní fronta Semestrální práce z předmětu 36PT Datový typ prioritní fronta Semestrální práce z předmětu 36PT Martin Tůma Cvičení 113, Út 18:00 22. května 2004 Specifikace problému Často potřebujeme přístup k informacím, tak aby tyto byly seřazeny podle

Více

Promnné. [citováno z

Promnné. [citováno z Promnné [citováno z http://wraith.iglu.cz/python/index.php] Abychom s datovým objektem mohli v programu njak rozumn pracovat, potebujeme se na nj njakým zpsobem odkázat. Potebujeme Pythonu íct, aby napíklad

Více

Abstraktní datové typy FRONTA

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

Více

Zbytky zákaznického materiálu

Zbytky zákaznického materiálu Autoi: V Plzni 31.08.2010 Obsah ZBYTKOVÝ MATERIÁL... 3 1.1 Materiálová žádanka na peskladnní zbytk... 3 1.2 Skenování zbytk... 7 1.3 Vývozy zbytk ze skladu/makulatura... 7 2 1 Zbytkový materiál V souvislosti

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

PÍRUKA A NÁVODY PRO ÚELY: - RUTINNÍ PRÁCE S DATY

PÍRUKA A NÁVODY PRO ÚELY: - RUTINNÍ PRÁCE S DATY PÍRUKA A NÁVODY PRO ÚELY: - RUTINNÍ PRÁCE S DATY YAMACO SOFTWARE 2006 1. ÚVODEM Nové verze produkt spolenosti YAMACO Software pinášejí mimo jiné ujednocený pístup k použití urité množiny funkcí, která

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

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

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA)

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA) Předmět: Algoritmizace praktické aplikace (3ALGA) Vytvořil: Jan Brzeska Zadání: Vytvoření funkcí na stromech (reprezentace stromu směrníky). Zadané funkce: 1. Počet vrcholů 2. Počet listů 3. Součet 4.

Více

Unity a Objekty (NMIN102) RNDr. Michal Žemlička, Ph.D.

Unity a Objekty (NMIN102) RNDr. Michal Žemlička, Ph.D. Unity a Objekty Programování 2 (NMIN102) RNDr. Michal Žemlička, Ph.D. Větší programy Časté problémy: Ve více programech by se nám hodilo využít stejné řešení nějakého podproblému dalo by se vyřešit překopírováním

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

Binární vyhledávací stromy

Binární vyhledávací stromy Binární vyhledávací stromy Definice: Binární vyhledávací strom (po domácku BVS) je buďto prázdná množina nebo kořen obsahující jednu hodnotu a mající dva podstromy (levý a pravý), což jsou opět BVS, ovšem

Více

Semestrální práce 2 znakový strom

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

Více

Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu.

Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu. Datový objekt [citováno z http://wraith.iglu.cz/python/index.php] Každý datový objekt Pythonu má minimáln ti vlastnosti. Identitu, datový typ a hodnotu. Identita Identita datového objektu je jedinený a

Více

POPIS TESTOVACÍHO PROSTEDÍ 1 ZÁLOŽKA PARSER

POPIS TESTOVACÍHO PROSTEDÍ 1 ZÁLOŽKA PARSER POPIS TESTOVACÍHO PROSTEDÍ Testovací prostedí je navrženo jako tízáložková aplikace, každá záložka obsahuje logicky související funkce. Testovací prostedí obsahuje následující ti záložky: Analýza Gramatiky

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

IMPORT DAT Z TABULEK MICROSOFT EXCEL

IMPORT DAT Z TABULEK MICROSOFT EXCEL IMPORT DAT Z TABULEK MICROSOFT EXCEL V PRODUKTECH YAMACO SOFTWARE PÍRUKA A NÁVODY PRO ÚELY: - IMPORTU DAT DO PÍSLUŠNÉ EVIDENCE YAMACO SOFTWARE 2005 1. ÚVODEM Všechny produkty spolenosti YAMACO Software

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

Vysoká škola báská Technická univerzita Ostrava Institut geoinformatiky. Analýza dojíždní z dotazníkového šetení v MSK. Semestrální projekt

Vysoká škola báská Technická univerzita Ostrava Institut geoinformatiky. Analýza dojíždní z dotazníkového šetení v MSK. Semestrální projekt Vysoká škola báská Technická univerzita Ostrava Institut geoinformatiky Analýza dojíždní z dotazníkového šetení v MSK Semestrální projekt 18.1.2007 GN 262 Barbora Hejlková 1 OBSAH OBSAH...2 ZADÁNÍ...3

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

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

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

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

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

VYTVÁENÍ VÝBROVÝCH DOTAZ

VYTVÁENÍ VÝBROVÝCH DOTAZ VYTVÁENÍ VÝBROVÝCH DOTAZ V PRODUKTECH YAMACO SOFTWARE PÍRUKA A NÁVODY PRO ÚELY: - VYTVÁENÍ VÝBROVÝCH SESTAV YAMACO SOFTWARE 2003-2004 1. ÚVODEM Standardní souástí všech produkt Yamaco Software jsou prostedky

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

1 KOMBINATORIKA, KLASICKÁ PRAVDPODOBNOST

1 KOMBINATORIKA, KLASICKÁ PRAVDPODOBNOST 1 KOMBINATORIKA, KLASICKÁ PRAVDPODOBNOST Kombinatorické pravidlo o souinu Poet všech uspoádaných k-tic, jejichž první len lze vybrat n 1 zpsoby, druhý len po výbru prvního lenu n 2 zpsoby atd. až k-tý

Více

4. Lineární diferenciální rovnice rovnice 1. ádu

4. Lineární diferenciální rovnice rovnice 1. ádu 4. Lineární diferenciální rovnice rovnice. ádu y + p( ) y = (4.) L[ y] = y + p( ) y p q jsou spojité na I = (ab) a < b. Z obecné teorie vyplývá že množina všech ešení rovnice (4.) na intervalu I (tzv.

Více

OCR (optical character recognition) - rozpoznávání textu v obraze

OCR (optical character recognition) - rozpoznávání textu v obraze OCR (optical character recognition) - rozpoznávání textu v obraze Martin Koníek, I46 programová dokumentace 1. Úvod Tento projekt vznikl na MFF UK a jeho cílem bylo vytvoit algoritmus schopný rozpoznávat

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

Č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

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

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

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

Rozvrhování na více procesorech

Rozvrhování na více procesorech Rozvrhování na více procesorech Rozvrhování na více procesorech je složitjší úloha než na jednom procesoru. Uvažujeme m procesor. Rozlišujeme typy procesor - paralelní nebo dedikované a jejich rychlosti

Více

Instalace multiimportu

Instalace multiimportu Instalace multiimportu 1. Rozbalit archiv multiimportu (nap. pomocí programu Winrar) na disk C:\ Cesta ve výsledném tvaru bude: C:\MultiImport 2. Pejdte do složky Install a spuste soubor Install.bat Poznámka:

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

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

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

Prbh funkce Jaroslav Reichl, 2006

Prbh funkce Jaroslav Reichl, 2006 rbh funkce Jaroslav Reichl, 6 Vyšetování prbhu funkce V tomto tetu je vzorov vyešeno nkolik úloh na vyšetení prbhu funkce. i ešení úlohy jsou využity základní vlastnosti diferenciálního potu.. ešený píklad

Více

Datové typy a struktury

Datové typy a struktury atové typy a struktury Jednoduché datové typy oolean = logická hodnota (true / false) K uložení stačí 1 bit často celé slovo (1 byte) haracter = znak Pro 8-bitový SII kód stačí 1 byte (256 možností) Pro

Více

Pídavný modul rozvaha lze vyvolat z hlavní nabídky po stisku tlaítka Výkazy / pídavné moduly.

Pídavný modul rozvaha lze vyvolat z hlavní nabídky po stisku tlaítka Výkazy / pídavné moduly. Výkaz rozvaha Pídavný modul rozvaha lze vyvolat z hlavní nabídky po stisku tlaítka Výkazy / pídavné moduly. Po spuštní modulu se zobrazí základní okno výkazu: V tabulce se zobrazují sloupce výkazu. Ve

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

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

R O V N O B Ž N Í K (2 HODINY)

R O V N O B Ž N Í K (2 HODINY) R O V N O B Ž N Í K (2 HODINY)? Co to vlastn rovnobžník je? Na obrázku je dopravní znaka, která íká, že vzdálenost k železninímu pejezdu je 1 m (dva pruhy, jeden pruh pedstavuje vzdálenost 80 m): Pozorn

Více

Homer. prvky. délka. přední 0 zadní 4. Použití fronty BUS STOP. 3 Lisa. 2 Bart. 4 Maggie. 1 Marge. Grafické znázornění předchozí animace:

Homer. prvky. délka. přední 0 zadní 4. Použití fronty BUS STOP. 3 Lisa. 2 Bart. 4 Maggie. 1 Marge. Grafické znázornění předchozí animace: Fronta Fronta je sekvence first-in-first-out (první do fronty první z fronty) prvků. Prvky mohou být vkládány pouze nakonec (rear) fronty a odstraňovány pouze zpočátku (front) fronty Délka fronty je počet

Více

Zadá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 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íce

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti. Intervalové stromy Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme průběžně provádět tyto dvě operace: 1. Změna jednoho čísla v posloupnosti. 2. Zjištění součtu čísel

Více

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

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

Více

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

Standardní algoritmy vyhledávací.

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

Více

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

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Algoritmus pro hledání nejkratší cesty orientovaným grafem 1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval

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

Protože pi každém volání funkce ff se zavolá funkce abc() práv jednou, je poet volání funkce abc() práv 7. Platí varianta d).

Protože pi každém volání funkce ff se zavolá funkce abc() práv jednou, je poet volání funkce abc() práv 7. Platí varianta d). 1. void ff(int x) { if (x > 0) ff(x 1) ; abc(x); if (x > 0) ff(x 1) ; Daná funkce ff je volána s parametrem 2: ff(2);. Funkce abc(x) je tedy celkem volána a) 1 krát b) 3 krát c) 5 krát d) 7 krát e) 8 krát

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

MATEMATIKA MATEMATIKA

MATEMATIKA MATEMATIKA PRACOVNÍ MATERIÁLY PRACOVNÍ MATERIÁLY MATEMATIKA MATEMATIKA Struktura vyuovací hodiny Metodický Struktura vyuovací list aplikace hodiny Ukázková Metodický hodina list aplikace materiál Záznamový Ukázková

Více

Pravdpodobnost výskytu náhodné veliiny na njakém intervalu urujeme na základ tchto vztah: f(x)

Pravdpodobnost výskytu náhodné veliiny na njakém intervalu urujeme na základ tchto vztah: f(x) NÁHODNÁ VELIINA Náhodná veliina je veliina, jejíž hodnota je jednoznan urena výsledkem náhodného pokusu (je-li tento výsledek dán reálným íslem). Jde o reálnou funkci definovanou na základním prostoru

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

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

Základní pojmy klasického sudoku hlavolamu. Techniky odkrývání bunk. Technika Naked Single. Technika Hidden Single

Základní pojmy klasického sudoku hlavolamu. Techniky odkrývání bunk. Technika Naked Single. Technika Hidden Single Základní pojmy klasického sudoku hlavolamu Sudoku hlavolam (puzzle) obsahuje celkem 81 bunk (cells), devt vodorovných ádk (rows), devt svislých sloupc (columns) a devt skupin po 3 3 bukách nazývaných bloky

Více

Univerzální ovlada LP20 DÁLKOVÝ OVLADA S MOŽNOSTÍ UENÍ SE OD PVODNÍCH OVLADA

Univerzální ovlada LP20 DÁLKOVÝ OVLADA S MOŽNOSTÍ UENÍ SE OD PVODNÍCH OVLADA Univerzální ovlada LP20 DÁLKOVÝ OVLADA S MOŽNOSTÍ UENÍ SE OD PVODNÍCH OVLADA NÁVOD K OBSLUZE Výhradní dovozce pro R (kontakt): Bohumil Veselý - VES Tšínská 204 Albrechtice, 735 43 I: 44750498 DI: CZ-6812261016

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

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

Datové struktury Úvod

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

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

Úvodní studie (pokraov

Úvodní studie (pokraov Úvodní studie (pokraov ování) Model jednání a kontext Model jednání (use case model) slouží pro evidenci aktér a služeb systému. Kontextový diagram slouží pro evidenci aktér a datových tok. Oba modely

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

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

KUSOVNÍK Zásady vyplování

KUSOVNÍK Zásady vyplování KUSOVNÍK Zásady vyplování Kusovník je základním dokumentem ve výrob nábytku a je souástí výkresové dokumentace. Každý výrobek má svj kusovník. Je prvotním dokladem ke zpracování THN, objednávek, ceny,

Více

Zpracování deklarací a přidělování paměti

Zpracování deklarací a přidělování paměti Zpracování deklarací a přidělování paměti Účel deklarací -pojmenování objektů -umístění objektů v paměti Tabulka symbolů -uchovává informace o objektech -umožňuje kontextové kontroly -umožňuje operace

Více

1 Píklady popisu typických konstrukcí

1 Píklady popisu typických konstrukcí 1 Píklady popisu typických konstrukcí V tomto odstavci se pokusíme ilustrovat denotaní popis sémantiky ve funkcionálním modelu pro typické píklady jazykových konstrukcí. Popisované konstrukce budou fragmenty

Více

Algoritmizace prostorových úloh

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

Více

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

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

Více

L I C H O B Ž N Í K (2 HODINY) ? Co to vlastn lichobžník je? Podívej se napíklad na následující obrázky:

L I C H O B Ž N Í K (2 HODINY) ? Co to vlastn lichobžník je? Podívej se napíklad na následující obrázky: L I C H O B Ž N Í K (2 HODINY)? Co to vlastn lichobžník je? Podívej se napíklad na následující obrázky: Na obrázcích je vyobrazena hospodáská budova a židlika, kterou urit mají tvoji rodie na chodb nebo

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

Ing. Jaroslav Halva. UDS Fakturace

Ing. Jaroslav Halva. UDS Fakturace UDS Fakturace Modul fakturace výrazn posiluje funknost informaního systému UDS a umožuje bilancování jednotlivých zakázek s ohledem na hodnotu skutených náklad. Navíc optimalizuje vlastní proces fakturace

Více

Funkční objekty v C++.

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

Více

DUM. Databáze - úvod

DUM. Databáze - úvod DUM Název projektu íslo projektu íslo a název šablony klíové aktivity Tematická oblast - téma Oznaení materiálu (pílohy) Inovace ŠVP na OA a JŠ Tebí CZ.1.07/1.5.00/34.0143 III/2 Inovace a zkvalitnní výuky

Více

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

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

Více

1. D Y N A M I C K É DAT O V É STRUKTUR Y

1. D Y N A M I C K É DAT O V É STRUKTUR Y 1. D Y N A M I C K É DAT O V É STRUKTUR Y Autor: Petr Mik Abychom se mohli pustit do dynamických datových struktur, musíme se nejdřív podívat na datový typ ukazatel. 1. D AT O V Ý TYP U K A Z AT E L Datové

Více

GYMNÁZIUM CHEB. SEMINÁRNÍ PRÁCE Grafy funkcí sbírka ešených úloh. Radek HÁJEK, 8.A Radka JIROUŠKOVÁ, 8.A Cheb, 2006 Petr NEJTEK, 8.

GYMNÁZIUM CHEB. SEMINÁRNÍ PRÁCE Grafy funkcí sbírka ešených úloh. Radek HÁJEK, 8.A Radka JIROUŠKOVÁ, 8.A Cheb, 2006 Petr NEJTEK, 8. GYMNÁZIUM CHEB SEMINÁRNÍ PRÁCE Grafy funkcí sbírka ešených úloh Radek HÁJEK, 8.A Radka JIROUŠKOVÁ, 8.A Cheb, 006 Petr NEJTEK, 8.A Prohlášení Prohlašujeme, že jsme seminární práci na téma: Grafy funkcí

Více

Obsah...1 1. Úvod...2 Slovníek pojm...2 2. Popis instalace...3 Nároky na hardware a software...3 Instalace a spouštní...3 Vstupní soubory...3 3.

Obsah...1 1. Úvod...2 Slovníek pojm...2 2. Popis instalace...3 Nároky na hardware a software...3 Instalace a spouštní...3 Vstupní soubory...3 3. Obsah...1 1. Úvod...2 Slovníek pojm...2 2. Popis instalace...3 Nároky na hardware a software...3 Instalace a spouštní...3 Vstupní soubory...3 3. Popis prostedí...4 3.1 Hlavní okno...4 3.1.1 Adresáový strom...4

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

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

DRUHY ROVNOBŽNÍK A JEJICH VLASTNOSTI 1 HODINA

DRUHY ROVNOBŽNÍK A JEJICH VLASTNOSTI 1 HODINA DRUHY ROVNOBŽNÍK A JEJICH VLASTNOSTI HODINA Podívej se na následující obrázek: Na obrázku je rovnobžník s vyznaeným pravým úhlem. Odpovídej na otázky:? Jaká je velikost vnitního úhlu pi vrcholu C? Je rovna

Více

Anotace. Jednotky (tvorba a využití), struktury (typ record),

Anotace. Jednotky (tvorba a využití), struktury (typ record), Anotace Jednotky (tvorba a využití), struktury (typ record), medián v lineárním čase. Jednotky oddělený překlad Občas máme obecně využitelné funkce, které chceme používat v různých programech současně.

Více

Prezentaní program PowerPoint

Prezentaní program PowerPoint Prezentaní program PowerPoint PowerPoint 1 SIPVZ-modul-P0 OBSAH OBSAH...2 ZÁKLADNÍ POJMY...3 K EMU JE PREZENTACE... 3 PRACOVNÍ PROSTEDÍ POWERPOINTU... 4 OPERACE S PREZENTACÍ...5 VYTVOENÍ NOVÉ PREZENTACE...

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

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

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 Třídění, vyhledávání Daniela Szturcová

Více