Porovnání výkonu různých variant splay stromů
|
|
- Vilém Bařtipán
- před 6 lety
- Počet zobrazení:
Transkript
1 Gymnázium J. S. Machara Brandýs nad Labem Stará Boleslav Porovnání výkonu různých variant splay stromů ročníková práce Autor práce: Vojtěch Káně Vedoucí práce: Mgr. Martin Mareš, Ph.D. Obor: Informační a komunikační technologie Třída: sexta Brandýs nad Labem 2018
2 Prohlašuji, že jsem předkládanou ročníkovou práci vypracoval samostatně za využití zdrojů uvedených v seznamu použité literatury. V Brandýse nad Labem Staré Boleslavi dne Podpis...
3 Anotace Tato práce si klade za cíl porovnat rychlost operací nad různými variantami splay stromů a některými dalšími podobnými datovými strukturami. Klíčová slova binární vyhledávací stromy, splay stromy
4 Annotation This paper compares the speed of some operations on various splay trees variants and possibly some other simmilar data structures. Keywords binary search trees, splay trees
5 Obsah Úvod Co jsou to stromy Vyhledávání Vkládání Mazání Rotace Časová složitost Amortizace Co jsou to splay stromy Operace splay Varianty Nevýhody Měření Technika Nedostatky Výsledky Poznámky k výsledkům Závěr 16 Seznam použité literatury 17 Přílohy 18
6 Úvod Svou prací bych rád navázal na pány Daniel Dominic Sleator a Robert Endre Tarjan, kteří v roce 1985 ve své práci Self-Adjusting Binary Search Trees 1 popsali tzv. Splay stromy. Jedná se o samovyvažovací binární stromy, jež slibují amortizovaný čas O(log N) na nalezení, přidání i smazání prvku. Ve své práci popisují několik různých variant, jak splay stromy realizovat. Jednotlivé možnosti se příliš neliší z pohledu teoretické informatiky, avšak jejich výsledky budou v praxi nejspíše odlišné. Rozhodl jsem se některé z nich naimplementovat a proměřit, na následujících stranách představím výsledky. Začnu rychlým přiblížením několika pojmů; pokusím se je shrnout co možná nejstručněji, a to i za cenu menších nepřesností. Pro podrobný výklad doporučuji si přečíst Průvodce labyrintem algoritmů 2 Martina Mareše a Tomáše Vally, kteří navíc všechna svá tvrzení poctivě dokazují, což se do mé práce už nevešlo. 1.1 Co jsou to stromy Pro nás budou nejdůležitější binární vyhledávací stromy (BVS), popíšu je tedy jako celek, pochopení jednotlivých pojmů v tuto chvíli není důležité. Já zde budu pracovat s BVS, jejichž prvky jsou unikátní, usnadní to přemýšlení nad krajními případy, avšak případně rozšíření definice o možnost duplicitních prvků není složité. Každý BVS, není-li prázdný, má svůj kořen a dva podstromy, levý a pravý, jež od sebe striktně rozlišuje. Navíc platí, že všechny prvky levého podstromu jsou menší než kořen a všechny prvky pravého podstromu jsou větší než kořen. Kořenu levého podstromu říkáme levý syn, pro pravý to platí analogicky. Opačný vztah je otec (tedy má-li vrchol v syna s, je v otcem s). Povšimněme si, že jediným prvkem, který nemá otce, je kořen. 1 SLEATOR, Daniel Dominic a Robert Endre TARJAN. Self-adjusting binary search trees. AT&T Bell Laboratories, Murray Hill, NJ, MAREŠ, Martin a Tomáš VALLA. Průvodce labyrintem algoritmů. Praha: CZ.NIC, z.s.p.o., CZ.NIC, 15. publikace. ISBN
7 Důležitá je ještě podmínka, že strom neobsahuje cyklus. Tu lze zformulovat tak, že každý syn má nejvýše jednoho otce a že žádný vrchol nemá obsaženého svého otce ve stromu, jehož je sám kořenem. Strom, jehož oba podstromy jsou prázdné, nazýváme list Vyhledávání Výše popsaná definice BVS nám umožňuje velmi efektivně (při správném tvaru dokonce optimálně 3 ) vyhledávat. Začneme v kořeni, odpovídá-li prvek v něm tomu hledanému, máme hotovo. V opačném případě podle definice rozhodneme, ve kterém podstromu by měl být (menší prvky jsou v levém, větší v pravém) a hledání zopakujeme v něm. Přejdeme-li takto do prázdného podstromu, můžeme si být jisti, že hledaný prvek neexistuje Minimum a maximum Minimum je nejlevější prvek BVS. Půjdeme-li od kořene vždy vlevo, první prvek, který nemá levý podstrom, je minimum. Hledání maxima je podobné, nachází se naopak nejvíce vpravo Vkládání Prvek se nejprve pokusíme najít. Podaří-li se to, skončíme, v našem stromě může být každý jen jednou. Neúspěch vyhledávání jsme poznali přechodem do prázdného podstromu; to je místo, kam patří, kde by byl, kdyby ho strom obsahoval. Přidáme jej tam, víme, že případné hledání nás přesně na toto místo dovede Mazání Znovu se prvek nejprve pokusíme najít. Nenajdeme-li ho, můžeme skončit. V opačném případě: Jedná-li se o list, smažeme ho. 3 Průvodce labyrintem algoritmů. s
8 Má-li jen jednoho syna, umístíme jej místo mazaného prvku. Ten pak již můžeme smazat. Posledním případem je prvek v oběma podstromy. Najdeme si minimum pravého podstromu (určitě nemá levého syna). Tímto prvkem přepíšeme mazaný a na závěr smažeme nalezené minimum. Také bychom mohli postupovat nalezením maxima levého podstromu (nemá pravého syna) Rotace V BVS lze provádět tzv. rotace, tedy měnit strukturu stromů tak, aby vlastnosti BVS zůstaly zachovány. Rotace hrany mezi vrcholem v a jeho rodičem p, proběhne v závislosti na jejich vztahu viz příloha Je-li v levým synem p, jako pravý podstrom v umístíme p, jako levý podstrom p umístíme pravý podstrom v. Jinak (v je pravým synem p) jako levý podstrom v umístíme p, jako levý pravý podstrom p umístíme levý podstrom v. Obě dvě operace rotace musí proběhnou atomicky. Dále je třeba upravit rodiče p (existuje-li), aby jako svého nového syna měl v namísto p. Ukládáme-li si i ukazatele na rodiče, je třeba je odpovídajícně upravit Časová složitost Všechny výše uvedené operace mají jedno společné, konstanta-krát vyhledají prvek (hledání minima si můžeme představit jako hledání ) a nakonec provedou konstantně mnoho operací. Protože konstanty při měření časové asymptotické složitosti zanedbáváme, je složitost všech z nich závislá pouze na vyhledávání. Víme, že BVS neobsahuje cykly, nejhůře tedy každý prvek navštívíme jen jednou. To nám dává horní odhad časové složitosti O(N), kde N je počet prvků. Takový případ ale nastane, jen tvoří-li náš strom dlouhou nudli. Co kdybychom si ho však mohli libovolně 8
9 přeskládat, aby časová složitost byla co nejmenší? Takovému stromu říkáme dokonale vyvážený a vyhledávání v něm trvá Ω(logN) Amortizace Zatím jsme se časovou slořitostí zabývali jen z pohledu jedné operace, ptali jsme se např. Jak dlouho trvá vložení jednoho prvku v závislosti na počtu všech prvků ve stromu?. Takové otázky jsou celkem běžné a jsou velmi důležité pro pochopení rychlosti dané datové struktury. Někdy však můžeme tímto způsobem vyloučit i velmi dobré kousky, protože otázka, která nás zajímá častěji, je spíše Jak dlouho poběží celý tenhle program?. Mějme například pole. Pole je datové struktura tvořená N očíslovanými pamět ovými chlívečky, kam lze ukládat data. Přidat prvek na konec ještě nenaplňeného pole je triviální operace - přečtení a zapsání toho prvku. Jakmile se však naplní, je třeba vytvořit nové, větší pole, my zvolíme velikost 2N, a následně prvky jeden po druhém překopírovat. Informatici samozřejmě uvažují o nejhorších případech a operaci přidejnakonec přiřadí horní odhad časové složitosti O(log N). To je zcela nepochybně pravda, avšak reálné rychlosti pole bychom velmi křivdili. Ke zvětšování pole dochází jen jednou za čas a s rostoucí složitostí jednoho zvětšení (rostoucím N) klesá jeho četnost. Provedeme-li dostatek operací, můžeme mezi ně čas na zvětšování rozpočítat tak, aby čas na jednu operaci byl konstantní. Struktura je pořád stejná, ale my si na ni ceníme jiných kvalit. Stále se může stát, že jedno přidání vyvolá dlouhé zvětšování, ale při pohledu na celkový čas série operací nebudeme schopni popřít tvrzení, že jedna operace trvá její amortizovaný čas. Toho využijeme při následující analýze 1.2 Co jsou to splay stromy Je patrné, že mají-li BVS v něčemu být, musíme je udržovat co nejvyváženější. Bohužel ani vkládání, ani mazání prvku tyto požadavky nerespektuje. Na druhou stranu, vkládání přidá prvek přesně na to místo, kam patří, kdekoli jinde bychom ho nenašli a porušili tím jednu ze základních vlastností BVS. 4 Průvodce labyrintem algoritmů. s
10 Datovým strukturám, které vycházejí z BVS, avšak zavádějí ještě další podmínky a operace, aby udežely co nejlepší tvar, říkáme samovyvažovací. Myšlenek kolem nich je více, např. ukládat více klíčů v jednom kořeni (červeno-černé stromy), nebo udržovat strom téměř dokonale vyvážený (AVL stromy).my se však zaměříme na splay stromy, jež každé hledání, vkládání, nebo mazání zakončí operací splay. Více o ní v následující kapitole. Časová složitost na jednu operaci je stále O(N), avšak amortizovaná už O(log N). Operaci splay je možné přiúčtovat předcházející operaci, a protože se následující operace urychlují, je možné pomalé popárovat v rychlými tak, aby vyšla zmíněná amortizovaná složitost Operace splay Pro úplnost ještě popíšu, jak vlastně zmíněné splayování probíhá. Cílem je dostat splayovaný prvek do do kořene. Postupnými rotacemi prvku se svým rodičem jej lze dostat do kořene. K této metodě uvádí Allan B. a Munro následující komentář Unfortunately, neither of these heuristics is efficient in an amortized sense: for each, there are arbitrarily long access sequences such that the time per access is O(N) Sleator a Tarjan navrhují jinou metodu, taktéž založenou na rotacích: dokud není prvek kořenem, opakujeme: Je-li rodič daného prvku kořenem, zrotujeme hranu mezi ním a jeho rodičem Jinak, je-li daný prvek levým synem svého rodiče a ten je levým synem svého rodiče, nebo opačně (daný prvek je pravým synem svého rodiče a ten je pravým synem svého rodiče), zrotujeme nejprve hranu mezi rodičem a jeho rodičem, následně mezi daným prvkem a jeho rodičem. (tato varianta je v textu označována jako zig-zig) Jinak zrotujeme hranu mezi prvkem a jeho rodičem a následně znovu v novým rodičem (tato operace je v textu označována jako zig-zag) 10
11 1.2.2 Varianty Výše popsané provedení operace splay je pouze tím prvotním a, dle mého názoru, nejjednodušším na pochopení. Autoři ve své práci popisují různé obměny v cílem splayování zrychlit a zároveň to nejméně nabourat vlastnosti splay stromů. V této podkapitole zmíním ty, jež zahrnu do porovnávání Normální splayování Splayování tak, jak jsem ho popsal. Nejprve proběhne požadovaná operace, následně splay. Dle autorů je pomalejší než splayování shora dolů, ale je jednodušší na implementaci Splayování shora dolů Velmi blízké normálnímu splayování, ale rotujeme hrany již v průběhu provádění požadované operace v zatímco se zanořujeme do stromu. Autoři předpokládají pozitivní dopad na efektivitu, avšak své tvrzení nijak nedokazují. Naopak jako nevýhodu uvádějí větší složitost implementace Poloviční splayování (semisplaying) Abychom vyvažováním stromu netrávili příliš času, zrotujeme pouze polovinu hran, čímž se splayovaný prvek nestane kořenem, ale posune se ve stromu vzhůru. Košatění stromu samozřejmě probíhá pomaleji, ale splayování je rychlejší Splayování pouze dlouhých cest Splayujeme pouze neobvykle dlouhé cesty. Definice dlouhé cesty vyžaduje dle mého názoru hlubší vhled do splay stromů a navíc využívá mnoho pojmů definovaných ve zmíněném dokumentu. Proto ji zde neuvedu Splayování pouze několika prvních přístupů Zde se vychází z předpokladu, že struktura se po většinu času nachází v docela dobrém stavu, takže stačí, když budeme splayovat pouze prvních j 1 přístupů a následně se v ní stavět, jako v obyčejnému BVS. 11
12 1.2.3 Nevýhody Pro úplnost ještě uvedu velkou nevýhodu splay stromů. Zatímco na klasickém BVS může probíhat neomezeně mnoho paralelních vyhledávání a jednoduchým zamykáním i neomezeně mnoho vkládání, splay stromy mění v průběhu operací svou strukturu, proto by musel být veškerý přístup serializován. Neznám žádný způsob paralelního mazání z BVS, pro mnoho použití to však nemusí být překážka. Splay strom paralelní mazání taktéž nepodporuje. Dále se může stát, že v našem použití splay stromů (at už co se týče pravidelností přístupů, nebo dat, se kterými pracujeme) trávíme restrukturalizací zbytečně mnoho času, přičemž naplno nevyužíváme její přínos. 2 Měření V čase vyhrazeném na zpracování práce se mi nepodařilo naimplementovat všechny předpokládané varianty. Měřil jsem tedy pouze Normální splayování a Splayování pouze několika prvních přístupů, a pro srovnání ještě obyčejný BVS. 2.1 Technika Jako jazyk pro implementaci jsem zvolil Go. Umožňuje mi psát dostatečně nízkoúrovňově pro dosažení přijatelného výkonu, avšak v garbage collectingem a pamět ovou bezpečností, což velmi usnadňuje předcházení chybám a jejich případné hledání. Všechny potřebné algoritmy jsem implementoval iterativně, rekurzivní implementace jsou pomalejší, navíc splayování mění tvar stromu, čímž rekurzivní algoritmy významně komplikuje. Až na uvedené výjimky byly všechny testy provedeny se stejným, na začátku náhodně vygenerovaným vstupem. Ten je vždy nejprve celý načten do operační paměti, takže přístupové časy k disku nehrají roli. 12
13 V případě Splayování pouze několika prvních přístupů jsem j zvolil 1 % z celkového množství operací. Toto si v praxi často nemůžeme dovolit, protože předem nevíme, kolik operací provedeme Nedostatky Vhodnější implementací operace splay (zdola nahoru i shora dolů) lze ušetřit jednu rotaci v případě zig-zag 5. Pro plné prozkoumání možností splay stromů by bylo potřeba otestovat mnohem více různých vzorů přístupů, obzvláště s ohledem na jejich vlastnosti a na specifika různých reálných uplatnění. 2.2 Výsledky BenchmarkSimpleBST_Insert BenchmarkSimpleBST_OrderedInsert BenchmarkSimpleBST_Get BenchmarkSimpleBST_OrderedGet BenchmarkSimpleBST_RepeatedGet BenchmarkSimpleBST_SequenceInsert BenchmarkSplayTree_Insert BenchmarkSplayTree_OrderedInsert BenchmarkSplayTree_Get BenchmarkSplayTree_OrderedGet BenchmarkSplayTree_RepeatedGet BenchmarkSplayTree_SequenceInsert ns/op ( 18.4 s/op) ns/op ( 15.9 s/op) ns/op ( 16.3 s/op) ns/op ( 15.9 s/op) ns/op ( 17.3 s/op) ns/op ( 26.2 s/op) ns/op ( 27.1 s/op) ns/op ( 23.8 s/op) ns/op ( 29 s/op) ns/op ( 29.2 s/op) ns/op ( 28.9 s/op) ns/op ( 22.3 ms/op) 5 Self-Adjusting Binary Search Trees s
14 BenchmarkSplayTreeFixed_Insert BenchmarkSplayTreeFixed_OrderedInsert BenchmarkSplayTreeFixed_Get BenchmarkSplayTreeFixed_OrderedGet BenchmarkSplayTreeFixed_RepeatedGet BenchmarkSplayTreeFixed_SequenceInsert ns/op ( 18.6 s/op) ns/op ( 16.5 s/op) ns/op ( 17.8 s/op) ns/op ( 17.8 s/op) ns/op ( 17.3 s/op) ns/op ( 25.5 s/op) Měření *_Insert a *_Get vkládají, či hledají již vložená data, v originálním pořadí, tedy náhodně vygenerovaná. Měření *_OrderedInsert a *_OrderedGet nejprve vstupní data vzestupně seřadí (řazení se nepočítá do stráveného času). Měření *_RepeatedGet vždy najde jeden prvek a následně se zeptá na sto předchozích od prvku, na který se přistoupilo naposledy, po ten před 100 iteracemi. Měření *_SequenceInsert je zmíněnou výjimkou, která nepracuje nad náhodnými vstupními daty, ale pracuje s čísly 0; Z ve vzestupném pořadí Poznámky k výsledkům BST (z anglického Binary Search Tree) odpovídá mnou používanému BVS Velmi překvapivě mohou půsomit měření *_SequenceInsert, kdy najednou splay strom, jež ve všech ostatních měřeních vychází hůře, než BVS, oba soupeře překoná ±1000, avšak vysvětlení je snadné. V takto specifickém případě totiž do splay stromu vždy přihazujeme prvek, který je větší, než všechny již obsažené. Stačí, když si vzpomeneme, že každé vkládání je zakončeno splayováním, které vytáhne prvek do kořene. Vzhledem k tomu, že se zároveň jedná o maximum, nemá pravý podstrom. Následující vkládání vkládá prvek, který je určite větší, než kořen, proto jej hledá v pravém podstromu, který je prázdný. Vloží jej tedy a provede jedinou rotaci. Takto se cyklus opakuje, takže každé vkládání trvá zaručeně konstantní čas (O(log N)), proto celá sekvence trvá O(log N). Naopak pro BVS se jedná o nejhorší možný případ, protože, vzhledem k tomu že nedochází k rotacím, jsou všechny prvky jediným (pravým) synem svého rodiče, čímž se nám ze stromu stává prakticky spojový seznam. Přidání jednoho prvku musí projít všechny předchozí, trvá tedy O(N). Celá sekvence pak skončí jako O(N 2 ). 14
15 Důležitá může být také role procesorové cache, bylo by však třeba dalšího zkoumání k určení jejího skutečného vlivu 15
16 3 Závěr Obecně se ukázalo, že ačkoli amortizovaná asymptotická složitost splay stromů je lepší než asymptotická složitost BVS, pro měřené operace pří počtu prvků vycházejí lépe BVS. Předpokládám, že to je způsobeno tím, že konstanty zanedbané při určování asymptotické složitosti jsou příliš velké na to, aby při tomto počtu prvků vyhrálo asymptoticky lepší řešení. Toto tvrzení podporuje i článek When to use splay trees 6. Dokončením mé práce v plném rozsahu by mohlo splay stromům přilepšit (i zmíněný dokument používá variantu splayování shora dolů) avšak je velmi nepravděpodobné, že by rozdíl byl tak markantní, aby při stejném měření překonaly BVS. 6 LEE, Eric K. a Charles U. MARTEL. When to use splay trees. Department of Computer Science, University of California at Davis, Davis, CA 95618, U.S.A. 16
17 Seznam použité literatury LEATOR, Daniel Dominic a Robert Endre TARJAN. Self-adjusting binary search trees. AT&T Bell Laboratories, Murray Hill, NJ, MAREŠ, Martin a Tomáš VALLA. Průvodce labyrintem algoritmů. Praha: CZ.NIC, z.s.p.o., CZ.NIC, 15. publikace. ISBN LEE, Eric K. a Charles U. MARTEL. When to use splay trees. Department of Computer Science, University of California at Davis, Davis, CA 95618, U.S.A. 17
18 Přílohy Příloha 1 b a c a je kořenem stromu d,e, f jsou listy b je levým synem a, d je levým synem b e je pravým synem b, c je pravým synem a, f je pravým synem c d e f 18
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í
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
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í
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
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é
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
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
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
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
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)
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ě
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
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
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
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
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
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.
Složitosti základních operací B + stromu
Složitosti základních operací B + stromu Radim Bača VŠB Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky ŠKOMAM 2010-1- 28/1/2010 Složitosti základních operací B +
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
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
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
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
Č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á
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
Náplň. v.0.03 16.02.2014. - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění
Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double
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
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]
Časová složitost / Time complexity
Časová složitost / Time complexity Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2018 1 / 24 Složitost algoritmů Algorithm complexity Časová a paměťová složitost Trvání výpočtu v závislosti
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í
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)):
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
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
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),
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 každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2
Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných
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
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
Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava
Složitost algoritmů doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 27. prosince 2015 Jiří Dvorský (VŠB TUO) Složitost algoritmů
PQ-stromy a rozpoznávání intervalových grafů v lineárním čase
-stromy a rozpoznávání intervalových grafů v lineárním čase ermutace s předepsanými intervaly Označme [n] množinu {1, 2,..., n}. Mějme permutaci π = π 1, π 2,..., π n množiny [n]. Řekneme, že množina S
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ů)
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é
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é
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
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
p 2 q , tj. 2q 2 = p 2. Tedy p 2 je sudé číslo, což ale znamená, že
KAPITOLA 1: Reálná čísla [MA1-18:P1.1] 1.1. Číselné množiny Přirozená čísla... N = {1,, 3,...} nula... 0, N 0 = {0, 1,, 3,...} = N {0} Celá čísla... Z = {0, 1, 1,,, 3,...} Racionální čísla... { p } Q =
1 Test 1 naivní vs standardní
. DÚ Nafukovací pole Datové Struktury I Studentus Maximus Takto jsou zobrazeny poznámky cvičících k tomu, co a jak je tu napsáno, skutečný text je mimo oranžové rámečky. Počítač, na kterém byly provedeny
Datové struktury 2: Rozptylovací tabulky
Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy
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ší
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)
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á
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
IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)
IB108 Sada 1, Příklad 1 ( ) Složitost třídícího algoritmu 1/-Sort je v O n log O (n.71 ). Necht n = j i (velikost pole, které je vstupním parametrem funkce 1/-Sort). Lehce spočítáme, že velikost pole předávaná
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto
Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT
Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití.
Metodický list hardware Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití. Postupuje od výčtu základních prvků, bez kterých se PC
Digitální učební materiál
Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_148_IVT Autor: Ing. Pavel Bezděk Tematický okruh:
Grafy. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 13.
Grafy doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Grafy 104 / 309 Osnova přednášky Grafy
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
Maturitní téma: Programovací jazyk JAVA
Maturitní téma: Programovací jazyk JAVA Insert Sort (třídění vkládáním) 1. Jako setříděnou část označíme první prvek pole. Jako nesetříděnou část označíme zbytek pole. 2. Vezmeme první (libovolný) prvek
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
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ří
Binární Vyhledávací Stromy, u kterých je. složitost operací v nejhorším. rovná O(log n)
Stromy Binární Vyhledávací Stromy, u kterých je č asová složitost operací v nejhorším případě rovná O(log n) Vlastnosti Red-Black Stromů Vlastnosti Red-Black stromů Každý uzel stromu je obarven červenou
Základy algoritmizace a programování
Základy algoritmizace a programování Složitost algoritmů. Třídění Přednáška 8 16. listopadu 2009 Který algoritmus je "lepší"? Různé algoritmy, které řeší stejnou úlohu zbytek = p % i; zbytek = p - p/i*i;
Radek Mařík
2012-03-20 Radek Mařík 1. Pravá rotace v uzlu U a) v podstromu s kořenem U přemístí pravého syna U.R uzlu U do kořene. Přitom se uzel U stane levým synem uzlu U.R a levý podstrom uzlu U.R se stane pravým
Algoritmy I, složitost
A0B36PRI - PROGRAMOVÁNÍ Algoritmy I, složitost České vysoké učení technické Fakulta elektrotechnická v 1.01 Rychlost... Jeden algoritmus (program, postup, metoda ) je rychlejší než druhý. Co ta věta znamená??
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é
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
Content Aware Image Resizing
Content Aware Image Resizing (dle článku Shaie Avidana a Ariela Shamira) Václav Vlček (1. roč. NMgr., Teoretická informatika) 6.12.2007 1 O co jde? Změna rozměrů obrázku se zachováním významu Klasická
Jazyk C++ II. STL knihovna kontejnery část 2
Jazyk C++ II STL knihovna kontejnery část 2 AR 2013/2014 Jazyk C++ II Asociativní kontejnery Slovníky u kterých pořadí dat nemá smysl. Kontejner si sám určuje, kam který údaj uloží. Údaje mají tvar klíč/hodnota.
Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem
Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel
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.
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í
NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk
NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk Pavel Töpfer Katedra softwaru a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer
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
Suffixové stromy. Osnova:
Suffixové stromy http://jakub.kotrla.net/suffixtrees/ Osnova: Motivační příklad Přehled možných řešení Definice suffixového stromu Řešení pomocí suffixových stromů Konstrukce suffixového stromu Další použití,
ZPRACOVÁNÍ NEURČITÝCH ÚDAJŮ V DATABÁZÍCH
0. Obsah Strana 1 z 12 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA STROJNÍHO INŽENÝRSTVÍ ÚSTAV AUTOMATIZACE A INFORMATIKY FACULTY OF MECHANICAL ENGINEERING INSTITUTE OF AUTOMATION
Návrh Designu: Radek Mařík
1. 7. Najděte nejdelší rostoucí podposloupnost dané posloupnosti. Použijte metodu dynamického programování, napište tabulku průběžných délek částečných výsledků a tabulku předchůdců. a) 5 8 11 13 9 4 1
Pokročilé haldy. prof. Ing. Pavel Tvrdík CSc. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010
Pokročilé haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (I-EFA) ZS 2010/11,
5 Orientované grafy, Toky v sítích
Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost
UNIVERZITA PARDUBICE DIPLOMOVÁ PRÁCE
UNIVERZITA PARDUBICE FAKULTA ELEKTROTECHNIKY A INFORMATIKY DIPLOMOVÁ PRÁCE 2011 Bc. Tomáš Michek Univerzita Pardubice Fakulta elektrotechniky a informatiky Datové struktury pro uchovávání geografických
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í
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
Definice. B-stromu. B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí:
B-Strom Definice B-stromu B-strom řádu m je strom, kde každý uzel má maximálně m následníků a ve kterém platí: 1. Počet klíčů v každém vnitřním uzlu, je o jednu menší než je počet následníků (synů) 2.
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ší
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
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
Digitální učební materiál
Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_147_IVT Autor: Ing. Pavel Bezděk Tematický okruh:
Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý
Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části
Úvod. Úvod do programování. Úvod. Hashovací tabulky
do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava do programování, 2004/2005 Mnohé aplikace nepotřebují ke svému provozu celou škálu operací podporovaných
2. Složitost, grafové algoritmy (zapsal Martin Koutecký)
2. Složitost, grafové algoritmy (zapsal Martin Koutecký) Model Ram Při analýze algoritmu bychom chtěli nějak popsat jeho složitost. Abychom mohli udělat toto, potřebujeme nejprve definovat výpočetní model.
fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu http://akademie.ldf.mendelu.cz/cz (reg. č. CZ.1.07/2.2.00/28.
Základy lineárního programování Vyšší matematika, Inženýrská matematika LDF MENDELU Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem
A4B33ALG 2010/05 ALG 07. Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated. Quicksort.
A4B33ALG 2010/05 ALG 07 Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated Quicksort Stabilita řazení 1 Selection sort Neseřazeno Seřazeno Start T O U B J R M A K D Z E min
8. Geometrie vrací úder (sepsal Pavel Klavík)
8. Geometrie vrací úder (sepsal Pavel Klavík) Když s geometrickými problémy pořádně nezametete, ony vám to vrátí! Ale když užzametat,takurčitěnepodkoberecamístosmetákupoužijtepřímku.vtéto přednášce nás
Základní informace o předmětu Otázka:
Základní informace o předmětu Otázka: Proč vůbec porovnávat algoritmy? Vlastnosti algoritmů přirozenost a stabilita algoritmu časová náročnost algoritmu asymetrická a asymptotická časová náročnost algoritmů
Třídění a vyhledávání Searching and sorting
Třídění a vyhledávání Searching and sorting Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 1 / 33 Vyhledávání Třídění Třídící algoritmy 2 / 33 Vyhledávání Searching Mějme posloupnost (pole)
Obsah přednášky. Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41
Obsah přednášky Analýza algoritmu Algoritmická složitost Návrhy algoritmů Urychlování algoritmů 1/41 Analýza algoritmu Proč vůbec dělat analýzu? pro většinu problémů existuje několik různých přístupů aby
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
Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010 Úvod stránky předmětu: https://cw.felk.cvut.cz/doku.php/courses/a4b33alg/start cíle předmětu Cílem je schopnost samostatné implementace různých variant základních
Dijkstrův algoritmus
Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované
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ý
Algoritmizace Hashing II. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Hashing II Jiří Vyskočil, Marko Genyg-Berezovskyj 010 Srůstající hashování (coalesced hashing) Znám předem počet prvků (odhad) Z důvodů efektivity nechci ukazatele (mezi prvky). Na jednu pozici tabulky