Porovnání výkonu různých variant splay stromů

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

Download "Porovnání výkonu různých variant splay stromů"

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)

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

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

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

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury Stromy 1 / 32 Obsah přednášky Pole a seznamy Stromy Procházení stromů Binární stromy Procházení BS Binární vyhledávací stromy 2 / 32 Pole Hledání v poli metodou půlení intervalu

Více

Dynamické datové struktury 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

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

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

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

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

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

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

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

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

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

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

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

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

Složitosti základních operací B + stromu

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 +

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

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

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

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

Č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

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

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í Náplň v.0.03 16.02.2014 - Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění Spojení dvou samostatně setříděných polí void Spoj(double apole1[], int adelka1, double

Více

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

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

Více

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11 333LP - lgoritmy a programování - Zkouška z předmětu 333LP Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8]

Více

Časová složitost / Time complexity

Č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

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

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11 Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8] count=0 for i in range(1,len(data)):

Více

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

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

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

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

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

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

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

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

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

Více

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

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

Více

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury)

autoři: Rudolf Bayer, Ed McCreight všechny vnější uzly (listy) mají stejnou hloubku ADS (abstraktní datové struktury) definice ( tree) autoři: Rudolf Bayer, Ed McCreight vyvážený strom řádu m ( ) každý uzel nejméně a nejvýše m potomků s výjimkou kořene každý vnitřní uzel obsahuje o méně klíčů než je počet potomků (ukazatelů)

Více

vyhledávací stromové struktury

vyhledávací stromové struktury vyhledávací algoritmy Brute Force Binary Search Interpolation Search indexové soubory Dense index, Sparse index transformační funkce Perfect Hash, Close Hash Table, Open Hash Table vyhledávací stromové

Více

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

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

Více

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

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

p 2 q , tj. 2q 2 = p 2. Tedy p 2 je sudé číslo, což ale znamená, že

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 =

Více

1 Test 1 naivní vs standardní

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

Více

Datové struktury 2: Rozptylovací tabulky

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

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

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

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

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

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

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á

Více

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

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

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

Více

Digitální učební materiál

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:

Více

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

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

Maturitní téma: Programovací jazyk JAVA

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

Více

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39 Základy algoritmizace Michal Krátký 1, Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Základy algoritmizace, 2006/2007 Základy algoritmizace c2005, 2007 Michal Krátký, Jiří Dvorský1/39

Více

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy

Volné stromy. Úvod do programování. Kořenové stromy a seřazené stromy. Volné stromy Volné stromy Úvod do programování Souvislý, acyklický, neorientovaný graf nazýváme volným stromem (free tree). Často vynecháváme adjektivum volný, a říkáme jen, že daný graf je strom. Michal Krátký 1,Jiří

Více

Binární Vyhledávací Stromy, u kterých je. složitost operací v nejhorším. rovná O(log n)

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

Více

Základy algoritmizace a programování

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;

Více

Radek Mařík

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

Více

Algoritmy I, složitost

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

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

Algoritmizace prostorových úloh

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

Více

Content Aware Image Resizing

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á

Více

Jazyk C++ II. STL knihovna kontejnery část 2

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.

Více

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

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

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

5 Rekurze a zásobník. Rekurzivní volání metody

5 Rekurze a zásobník. Rekurzivní volání metody 5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení

Více

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

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

Suffixové stromy. Osnova:

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

Více

ZPRACOVÁNÍ NEURČITÝCH ÚDAJŮ V DATABÁZÍCH

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

Více

Návrh Designu: Radek Mařík

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

Více

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. Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Pokročilé haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (I-EFA) ZS 2010/11,

Více

5 Orientované grafy, Toky v sítích

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

Více

UNIVERZITA PARDUBICE DIPLOMOVÁ PRÁCE

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

Více

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

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

Více

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

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

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.

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

Základy algoritmizace c2007 Michal Krátký, Jiří Dvorský 1/57

Základy algoritmizace c2007 Michal Krátký, Jiří Dvorský 1/57 Základy algoritmizace Michal Krátký 1, Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Základy algoritmizace, 2006/2007 Základy algoritmizace c2007 Michal Krátký, Jiří Dvorský 1/57

Více

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

Digitální učební materiál

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:

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

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

Více

Úvod. Úvod do programování. Úvod. Hashovací tabulky

Ú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

Více

2. Složitost, grafové algoritmy (zapsal Martin Koutecký)

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.

Více

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.

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

Více

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. A4B33ALG 2010/05 ALG 07 Selection sort (Select sort) Insertion sort (Insert sort) Bubble sort deprecated Quicksort Stabilita řazení 1 Selection sort Neseřazeno Seřazeno Start T O U B J R M A K D Z E min

Více

8. Geometrie vrací úder (sepsal Pavel Klavík)

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

Více

Základní informace o předmětu Otázka:

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ů

Více

Třídění a vyhledávání Searching and sorting

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)

Více

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

Více

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

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

Více

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

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

Více

Dijkstrův algoritmus

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é

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

Algoritmizace Hashing II. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

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

Více