Kontakt. Naučit se navrhovat a analyzovat netriviální datové struktury. registrováni na SISu
|
|
- Jindřich Pešan
- před 6 lety
- Počet zobrazení:
Transkript
1 Základní informace Datové struktury I NTIN066 Jirka Fink htts://ktiml.mff.cuni.cz/ fink/ Kontakt fink@ktiml.mff.cuni.cz Homeae htts://ktiml.mff.cuni.cz/ fink/ Konzultace Individuální domluva Katedra teoretické informatiky a matematické loiky Matematicko-fyzikální fakulta Univerzita Karlova v Praze Zimní semestr 08/9 Poslední změna 8. ledna 09 Licence: reative ommons Y-N-S 4.0 íle ředmětu Naučit se navrhovat a analyzovat netriviální datové struktury Porozumět jejich chování jak asymtoticky, tak na reálném očítači Zajímá nás nejen chování v nejhorším říadě, ale i růměrně/amortizovaně Nebudujeme obecnou teorii všech DS ani nerobíráme všechny varianty DS, ale ukazujeme na říkladech různé ostuy a rinciy Jirka Fink Datové struktury I Jirka Fink Datové struktury I Záočet: Domácí úkoly mortizovaná analýza Vyhledávací stromy Podmínky ude zadáno ět domácích úkolů o 0 bodech K získání záočtu je nutné získat alesoň 0 bodů Úkol = imlementace DS + měření + rafy + zdůvodnění výsledků Úkol musí být odevzdán včas a DS musí být funkční Důrazně dooručujeme oužívat /++, i když ovolujeme i Javu a # Neoužívejte cizí kód ani knihovny třetích stran K imlementaci DS neoužívejte ani standardní knihovny (ani std::list, std::vector, etc.) Úkoly jsou zadávány centrálně, ale oravuje je vyučující, u kterého jste reistrováni na SISu Při odevzdání v ředtermínu můžete navíc získat 0 bodů nebo oslat oravené řešení Přesná ravidla a vzorový říklad jsou na webu řednášky Jirka Fink Datové struktury I Jirka Fink Datové struktury I 4 Nové ředměty Motivace Na cvičeních se ředevším rozebírají domácí úkoly Nezbývá mnoho času na rocvičení Řada studentů neumí imlementovat datové struktury v rozumném čase bez zdlouhavého hledání chyb nalýza datových struktur (NTIN05) Návrh a analýza datových struktur, které zazněly na řednášce, ale na jejich zkoumání není na klasickém cvičení čas Vyučující: Martin Mareš Rozvrh bude umluven o u (mares+ds@kam.mff.cuni.cz) Nové ředměty Imlementace datových struktur (NTIN06) Naučit studenty efektivně imlementovat datové struktury v rozumném čase bez únavného hledání chyb Vyučující: Jirka Fink Rozvrh: středa, 7:0, S4 Návrh imlementace datových struktur lication rorammin interface Unit a interity testy Imlementace bez rekurze (a zásobníku) Sojový seznam, stromy,... Sráva aměti Paralelní roramování bez zámků Imlementace nástrojů vyšších roramovacích jazyků v /RM Diskuze různých imlementací domácích úkolů, testování a zkušeností Záočet: recenze řešení domácích úkolů ostatních studentů (code review) Jirka Fink Datové struktury I 5 Jirka Fink Datové struktury I 6 Literatura. Koubková, V. Koubek: Datové struktury I. MTFYZPRESS, Praha 0. T. H. ormen,.e. Leiserson, R. L. Rivest,. Stein: Introduction to lorithms. MIT Press, 009 K. Mehlhorn: Data Structures and lorithms I: Sortin and Searchin. Sriner-Verla, erlin, 984 D. P. Mehta, S. Sahni eds.: Handbook of Data Structures and lications. haman & Hall/R, omuter and Information Series, 005 E. Demaine: ache-oblivious lorithms and Data Structures. 00. R. Pah: uckoo Hashin for Underraduates. Lecture note, 006. M. Thoru: Hih Seed Hashin for Inteers and Strins. Lecture notes, 04. M. Thoru: Strin hashin for linear robin (Sections ). In Proc. 0th SOD, , 009. mortizovaná analýza Inkrementace binárního čítače Dynamické ole Vyhledávací stromy Jirka Fink Datové struktury I 7 Jirka Fink Datové struktury I 8
2 mortizovaná analýza Motivace Uvažujme datovou struktury, která zvládá nějakou oeraci většinou velmi rychle. le občas otřebuje reoranizovat svoji vnitřní struktury, což oeraci v těchto výjimečných říadech značně zomaluje. Tudíž je časová složitost v nejhorším říadě velmi šatná. Představme si, že naše datová struktura je oužita v nějakém aloritmu, který oeraci zavolá mnohokrát. V této situaci složitost aloritmu ovlivňuje celkový čas mnoha oerací, nikoliv složitost oerace v nejhorším říadě. íl: hceme zjistit růměrnou hodnotu časových složitostí oslounosti oerací, říadně celkovou složitost oslounosti oerací. Metody výočtu amortizované složitosti reovaná analýza Účetní metoda Potenciální metoda mortizovaná analýza Inkrementace binárního čítače Dynamické ole Vyhledávací stromy Jirka Fink Datové struktury I 9 Jirka Fink Datové struktury I 0 Inkrementace binárního čítače: reovaná analýza Inkrementace binárního čítače: Účetní metoda inární čítač Máme n-bitový čítač inicializovaný libovolnou hodnotou Při oeraci INREMENT se oslední nulový bit změní na a všechny následující jedničkové bity se změní na 0 Počet změněných bitů v nejhorším říadě je n Kolik bitů se změní ři k oeracích INREMENT? reovaná analýza Poslední bit se změní ři každé oeraci tedy k-krát Předoslední bit se změní ři každé druhé oeraci nejvýše k/ -krát i-tý bit od konce se změní každých i oerací nejvýše k/ i -krát elkový očet změn bitů je nejvýše n i=0 k/ i n i=0 ( + k/i ) n + k n i=0 /i n + k Časová složitost k oerací INREMENT nad n-bitovým čítačem je O(n + k) Jestliže k = Ω(n), ak amortizovaná složitost na jednu oerace je O() Účetní metoda Změna jednoho bitu stojí jeden žeton a na každou oeraci dostaneme dva žetony Invariant: U každého jedničkového bitu si uschováme jeden žeton Při inkrementu máme vynulování jedničkových bitů ředlaceno Oba žetony oskytnuté k vykonání oerace využijeme na jedinou změnu nulového bitu na jedničku a ředlacení jeho vynulování Na začátku otřebujeme dostat nejvýše n žetonů elkově dostaneme na k oerací n + k žetonů mortizovaný očet změněných bitů ři jedné oeraci je O() za ředokladu k = Ω(n) Jirka Fink Datové struktury I Jirka Fink Datové struktury I Inkrementace binárního čítače: Potenciální metoda Potenciální metoda Potenciál nulového bitu je 0 a otenciál jedničkového bitu je Potenciál čítače je součet otenciálů všech bitů Potenciál o rovedení j-té oerace označme Φ j skutečný očet změněných bitů ři j-té oeraci označme T j hceme sočítat amortizovaný očet změněných bitů, který označíme Pro každou oeraci j musí latit T j + (Φ j Φ j) ro libovolnou oeraci j Podobně jako v účetní metodě dostáváme T j + (Φ j Φ j ) elkový očet změněných bitů ři k oeracích je V tomto triviálním říkladu je otenciál řesně očet žetonů v účetní metodě. Φ 0 je otenciál řed rovedení rvní oerace a Φ k je otenciál o oslední oeraci. Toto je zásadní fakt amortizované analýzy. Potenciál je jako banka, do které můžeme uložit eníze (čas), jestliže oerace byla levná (rychle rovedená). Při drahých (dlouho trvajících) oeracích musíme naoak z banky vybrat (snížit otenciál), abychom oeraci zalatili (stihli rovést v amortizovaném čase). V amortizované analýze je cílem najít takovou otenciální funkci, že ři rychle rovedené oeraci otenciál dostatečně vzroste a naoak ři dlouho trvajících oerací otenciál neklesne říliš moc. 4 Součtu k j= (Φj Φj) = Φ0 Φk se říká teleskoická suma a tento nástroj budeme často oužívat. k k T j ( + Φ j Φ j) k + Φ 0 Φ k k + n, j= j= rotože 0 Φ j n 4 Jirka Fink Datové struktury I Jirka Fink Datové struktury I Potenciální metoda Definice Potenciál Φ je funkce, která každý stav datové struktury ohodnotí nezáorným reálným číslem. Oerace nad datovou strukturou má amortizovanou složitost, jestliže libovolné vykonání oerace slňuje T + ( Φ(S) Φ(S ) ), kde T je skutečný čas nutný k vykonání oerace, S je stav řed jejím vykonáním a S je stav o vykonání oerace. Příklad: Inkrementace binárního čítače Potenciál Φ je definován jako očet jedničkových bitů v čítači Skutečný čas T je očet změněných bitů ři jedné oeraci INREMENT mortizovaný čas je Platí T + (Φ(S) Φ(S )) mortizovaná analýza Inkrementace binárního čítače Dynamické ole Vyhledávací stromy Jirka Fink Datové struktury I 4 Jirka Fink Datové struktury I 5
3 Dynamické ole Dynamické ole Máme ole, do kterého řidáváme i mažeme rvky Počet rvků označíme n a velikost ole Jestliže = n a máme řidat další rvek, tak velikost ole zdvojnásobíme Jestliže = 4n a máme smazat rvek, tak velikost ole zmenšíme na olovinu Intuitivní řístu Zkoírování celého ole trvá O(n) Jestliže o realokaci ole máme n rvků, ak další realokace nastane nejdříve o n/ oeracích INSERT nebo DELETE mortizovaná složitost je O() Přesněji: Uvažujeme řidávání a mazání rvků ze zásobníku. V analýze očítáme ouze čas na realokaci ole. Všechny ostatní činnost ři oeracích INSERT i DELETE trvají O() v nejhorším čase. Zajímá nás očet zkoírovaných rvků ři realokaci, rotože ředokládáme, že koírování jednoho rvku trvá O(). Po realokaci a zkoírování je nové ole z oloviny lné. Musíme tedy řidat n rvků nebo smazat n/ rvků, aby došlo k další realokaci. 4 Nejhorším říadem je oslounost INSERT, kdy zdvojnásobíme očet rvků, které oté musíme realokovat. reovaná analýza: elkový čas Necht k i je očet oerací mezi (i ) a i-tou realokací i ki = k Při rvní realokaci se koíruje nejvýše n 0 + k rvků, kde n 0 je očáteční očet Při i-té realokaci se koíruje nejvýše k i rvků, kde i 4 elkový očet zkoírovaných rvků je nejvýše n 0 + k + i ki n0 + k Jirka Fink Datové struktury I 6 Jirka Fink Datové struktury I 6 Dynamické ole Potenciální metoda Uvažujme otenciál 0 okud = n Φ = n okud = n n okud = 4n a tyto tři body rozšíříme o částech lineární funkcí Elicitně Φ = { n okud n / n okud n okud řidáváme a n Φ okud mažeme a n Φ = okud řidáváme a n okud mažeme a n Změna otenciálu ři jedné oeraci bez realokace je Φ Φ Skutečný očet zkoírovaných rvků T vždy slňuje T + (Φ Φ) elkový očet zkoírovaných rvků ři k oeracích je nejvýše k + Φ 0 Φ k k + n 0 elkový čas k oerací je O(n 0 + k) mortizovaný čas jedné oerace je O() Jirka Fink Datové struktury I 7 Jirka Fink Datové struktury I 7 mortizovaná analýza Vyhledávací stromy [α]-strom Slay stromy (a,b)-stromy Červeno-černý strom inární vyhledávací strom Vlastnosti Příklad inární strom (každý vrchol obsahuje nejvýše dva syny) Klíč v každém vnitřním vrcholu je větší než všechny klíče v levém odstromu a menší než všechny klíče v ravém odstromu Prvky mohou být uloženy ouze v listech nebo též ve vnitřních vrcholech (u každého klíče je uložena i hodnota) Složitost Pamět : O(n) Časová složitost oerace Find je lineární ve výšce stromu Výška stromu může být až n Jirka Fink Datové struktury I 8 Jirka Fink Datové struktury I 9 Váhově vyvážené stromy: [α]-strom [α]-strom (Nieverelt, Reinold [8]) mortizovaná analýza Vyhledávací stromy [α]-strom Slay stromy (a,b)-stromy Červeno-černý strom inární vyhledávací strom Počet vrcholů v odstromu vrcholu u označme s u Pro každý vrchol u latí, že odstromy obou synů u musí mít nejvýše αs u vrcholů Zřejmě musí latit < α < 4 Výška [α]-stromu Podstromy všech vnuků kořene mají nejvýše α n vrcholů Podstromy všech vrcholů v i-té vrstvě mají nejvýše α i n vrcholů α i n jen ro i lo (n) α Výška [α]-stromu je Θ(lo n) Oerace UILD: Vytvoření [α]-stromu ze setříděného ole Prostřední rvek dáme do kořene Rekurzivně vytvoříme oba odstromy Časová složitost je O(n) Jirka Fink Datové struktury I 0 Jirka Fink Datové struktury I
4 V řednášce budeme ředokládat, že rvky jsou uloženy ve všech vrcholech, i když eistuje varianta [α]-stromů mající rvky jen v listech. Do s u zaočítáváme i vrchol u. V literatuře můžeme najít různé varianty této odmínky. Podstatné je, aby oba odstromy každého vrcholu měli zhruba stejný očet vrcholů. 4 Pro α = lze [α]-strom sestrojit, ale oerace INSERT a DELETE by byly časově náročné. Pro α = by výška [α]-strom mohla být lineární. [α]-strom: Oerace INSERT a DELETE Oerace INSERT (DELETE je analoický) Najít list ro nový rvek a uložit do něho nový rvek (složitost: O(lo n)) Jestliže některý vrchol orušuje vyvažovací odmínku, tak celý jeho odstrom znovu vytvoříme oerací UILD (složitost: amortizovaná analýza) mortizovaná časová složitost oerací INSERT a DELETE: reovaná metoda Jestliže odstrom vrcholu u o rovedení oerace UILD má s u vrcholů, ak další orušení vyvažovací odmínky ro vrchol u nastane nejdříve o Ω(s u) řidání/smazání rvků v odstromu vrcholu u (cvičení) Rebuild odstromu vrcholu u trvá O(s u) mortizovaný čas vyvažovaní jednoho vrcholu je O() Při jedné oeraci INSERT/DELETE se rvek řidá/smaže v Θ(lo n) odstromech mortizovaný čas vyvažovaní ři jedné oeraci INSERT nebo DELETE je O(lo n) Jaký je celkový čas k oerací? 4 Jirka Fink Datové struktury I Jirka Fink Datové struktury I Při hledání listu ro nový vrchol stačí na cestě od kořene k listu kontrolovat, zda se řidáním vrcholu do odstromu syna neoruší vyvažovací odmínka. Pokud se v nějakém vrcholu odmínka oruší, tak se hledání ukončí a celý odstrom včetně nového rvku znovu vybuduje. Eistují ravidla ro rotování [α]-stromů, ale ta se nám dnes nehodí. Oerace UILD odstromu vrcholu u trvá O(s u) a mezi dvěma oeracemi UILD odstromu u je Ω(s u) oerací INSERT nebo DELETE do odstromu u. Všimněte si analoie a dynamickým olem. 4 Intuitivně bychom mohli říct, že v nejhorším říadě [α]-strom nejrve vyvážíme v čase O(n) a oté rovádíme jednotlivé oerace, a roto celkový čas je O(n + k lo n), ale není to ravda. Proč? [α]-strom: Oerace INSERT a DELETE mortizovaná časová složitost oerací INSERT a DELETE: Potenciální metoda V této analýze uvažujeme jen čas na ostavení odstromu, zbytek trvá O(lo n) Potenciál vrcholu u definován { 0 okud s l(u) s r(u) Φ(u) = s l(u) s r(u) jinak, kde l(u) a r(u) jsou levý a ravý synové u. Potenciál [α]-stromu Φ je součet otenciálů vrcholů Při vložení/smazání rvku se otenciál Φ(u) jednoho vrcholu zvýší nejvýše o Pokud nenastane Rebuild, ak se otenciál stromu zvýší nejvýše o O(lo(n)) Pokud nastane Rebuild vrcholu u, ak Φ(u) αs u ( α)s u (α )s u Po rekonstrukci mají všechny vrcholy v odstromu u nulový otenciál Při rekonstrukci oklesne otenciál Φ alesoň o Ω(s u), což zalatí čas na rekonstrukci Dále latí 0 Φ hn = O(n lo n), kde h je výška stromu 4 elkový čas na k oerací INSERT nebo DELETE je O((k + n) lo n) Jirka Fink Datové struktury I Jirka Fink Datové struktury I Potenciál se změní rávě o, jestli rozdíl velikostí odstromů se změní z na nebo oačně. Jinak se otenciál změní rávě o. Potenciál se může změnit ouze vrcholům na cestě z kořene do nového/smazaného vrcholu a těch je O(lo n). Právě zde otřebujeme, aby otenciál vrcholu byl nulový, i když se velikosti odstromů jeho synů liší o jedna. 4 Součet otenciálů všech vrcholů v jedné libovolné vrstvě je nejvýše n, rotože každý vrchol atří do nejvýše jednoho odstromu vrcholu z dané vrstvy. Tudíž otenciál stromu Φ je vždy nejvýše nh. Též lze nahlédnout, že každý vrchol je zaočítán v nejvýše h otenciálech vrcholů. mortizovaná analýza Vyhledávací stromy [α]-strom Slay stromy (a,b)-stromy Červeno-černý strom Jirka Fink Datové struktury I Jirka Fink Datové struktury I 4 Staticky otimální strom Slay strom (Sleator, Tarjan [6]): Oerace SPLY rvku íl Pro danou oslounost oerací FIND najít binární vyhledávací strom minimalizující celkovou dobu vyhledávání. Zi rotace: Otec rvku je kořen Formálně Máme rvky,..., n s váhami w,..., w n. ena stromu je n i= wihi, kde hi je hloubka rvku i. Staticky otimální strom je binární vyhledávací strom s minimální cenou. Konstrukce (cvičení) O ( n ) triviálně dynamickým roramováním O ( n ) vylešené dynamické roramování (Knuth [4]) Jak ostuovat, když neznáme váhy ředem? Pomocí rotací bude udržovat často vyhledávané rvky blízko kořene Oerací SPLY rotujeme zadaný rvek až do kořene Oerace FIND vždy volá SPLY na hledaný rvek Zi-zi rotace: a jsou oba ravými nebo oba levými syny D D Zi-za rotace: je ravý syn a je levý syn nebo oačně D D Jirka Fink Datové struktury I 5 Jirka Fink Datové struktury I 6
5 Uvažujeme buttom-u verzi, tj. rvek nejrve najdeme a oté jej ostuně rotujeme nahoru, což znamená, že vždy značí stejný vrchol ostuně se řesouvající ke kořeni a ostatní vrcholy stromu jsou sousedé odovídající dané rotaci. Eistuje též to-down verze [6], která vždy rotuje vnuka kořene, jehož odstrom obsahuje rvek. Tato verze je sice v rai rychlejší, ale ostu a analýza jsou složitější. Slay strom: Oerace SPLY rvku Zi-za rotace jsou ouze dvě jednoduché rotace rvku s aktuálním otcem D D D Zi-zi rotace jsou taky dvě rotace, D D D ale dvě rotace rvku s aktuálním otcem by vedli ke šatnému výsledku D D D Jirka Fink Datové struktury I 6 Jirka Fink Datové struktury I 7 Slay strom: mortizovaná analýza Lemma Pro a, b, c R + slňující a + b c latí lo (a) + lo (b) lo (c). Důkaz Platí 4ab = (a + b) (a b) Z nerovností (a b) 0 a a + b c lyne 4ab c Zloaritmováním dostáváme lo (4) + lo (a) + lo (b) lo (c ) Lemma můžeme též dokázat omocí Jensenovy nerovnosti, která tvrdí: Jestliže f je konvení funkce,,..., n jsou čísla z definičního oboru f a w,..., w n jsou kladné váhy, ak latí nerovnost f ( n i= wii n i= wi ) n i= wif (i) n. i= wi Jelikož funkce lo je rostoucí a konkávní, dostáváme ( ) lo(a) + lo(b) a + b lo lo(c), z čehož lyne znění lemmatu. Značení Necht velikost s() je očet vrcholů v odstromu (včetně ) Potenciál vrcholu je Φ() = lo (s()) Potenciál Φ stromu je součet otenciálů všech vrcholů s a Φ jsou velikosti a otenciály o jedné rotaci Předkládáme, že jednoduchou rotaci zvládneme v jednotkovém čase Jirka Fink Datové struktury I 8 Jirka Fink Datové struktury I 8 Slay strom: Zi rotace Slay strom: Zi-za rotace D D nalýza Φ () = Φ() Φ () < Φ () Φ (u) = Φ(u) ro všechny ostatní vrcholy u Φ Φ = (Φ (u) Φ(u)) u = Φ () Φ() + Φ () Φ() Φ () Φ() nalýza Φ () = Φ() Φ() < Φ() Φ () + Φ () Φ () s () + s () s () Z lemmatu lyne lo (s ()) + lo (s ()) lo (s ()) 4 Φ Φ = Φ () Φ() + Φ () Φ() + Φ () Φ() (Φ () Φ()) Jirka Fink Datové struktury I 9 Jirka Fink Datové struktury I 0 Slay strom: Zi-zi rotace D D nalýza Φ () = Φ() Φ() < Φ() Φ () < Φ () s() + s () s () Φ() + Φ () Φ () Φ Φ = Φ () Φ() + Φ () Φ() + Φ () Φ() (Φ () Φ()) Slay strom: nalýza mortizovaný čas mortizovaný čas jedné zizi nebo ziza rotace: T + Φ Φ + (Φ () Φ()) = (Φ () Φ()) mortizovaný čas jedné zi rotace: T + Φ Φ + Φ () Φ() + (Φ () Φ()) Necht Φ i je otenciál o i-té rotaci a T i je skutečný čas i-té rotace mortizovaný čas (očet jednoduchých rotací) jedné oerace SPLY: (T i + Φ i Φ i ) + (Φ i() Φ i ()) i-tá rotace i-tá rotace + (Φ konec() Φ 0()) + lo n = O(lo n) mortizovaný čas jedné oerace SPLY je O(lo n) Skutečný čas k oerací SPLY Potenciál vždy slňuje 0 Φ n lo n Rozdíl mezi konečným a očátečním otenciálem je nejvýše n lo n elkový čas k oerací SPLY je O((n + k) lo n) Jirka Fink Datové struktury I Jirka Fink Datové struktury I
6 Časy na nalezení rvku a jeho SPLY jsou stejné, a roto analyzujeme očet rotací ři oeraci SPLY. Neúsěšná oerace FIND dojde až k vrcholu mající NULL v ukazateli, na kterém se vyhledávání zastaví. Na tento oslední vrchol je nutné zavolat SPLY, aby oakovaná neúsěšná vyhledávání měla amortizovanou loaritmickou složitost. T značí skutečný čas rotace, což je očet jednoduchých rotací k rovedení rotace zi, zizi nebo ziza. Zi rotaci oužijeme nejvýše jednou a roto zaočítáme +. Rozdíly Φ () Φ() se teleskoicky odečtou a zůstane nám rozdíl otenciálů vrcholu na konci a na začátku oerace SPLY. Na očátku je otenciál vrcholu nezáorný a na konci je kořenem, a roto jeho otenciál je lo (n). Slay strom: Oerace INSERT Vložení rvku Začneme vyhledáváním klíče, které skončí ve vrcholu u SPLY(u) Vložit nový vrchol s rvkem u u L R L R mortizovaná složitost Oerace FIND a SPLY: O(lo n) Vložením nového vrcholu otenciál Φ vzroste nejvýše o Φ () + Φ (u) lo n mortizovaná složitost oerace INSERT je O(lo n) Jirka Fink Datové struktury I Jirka Fink Datové struktury I u obsahuje klíč, který je největší ze všech uložených klíčů menších než nebo nejmenší ze všech uložených klíčů než. Pokud je menší nebo větší než všechny klíče, ak je u určen jednoznačně, jinak máme volbu ze dvou možných vrcholů. Rozmysleme si, že oslední navštívený vrchol ři oeraci FINDz klasických binárních vyhledávacích stromů slňuje osané ožadavky na vrchol u. Pokud nechceme mít ve stromu dulicitní klíče a klíč vrcholu u je roven, ak vložení nerovedeme. Nicméně je stále nutné zavolat SPLY na vrchol u, jinak by oakované okusy o vložení rvku mohli být hodně drahé. Slay strom: Oerace Delete loritmus Slay() L levý odstrom if L je rázdný then 4 Smazat vrchol 5 else 6 Najít největší rvek a v L 7 Slay(a) 8 L levý odstrom a # a nemá ravého syna 9 Sloučit vrcholy a a Pokud L je nerázdný, tak a L R a R L R L Jirka Fink Datové struktury I Jirka Fink Datové struktury I 4 Další vlastnosti slay stromů Věta (vyhledávání rvků v rostoucím ořadí) Jestliže oslounost vyhledávání S obsahuje rvky v rostoucím ořadí, tak celkový čas na vyhledávání S ve slay stromu je O(n). n je oět očet rvků ve stromu a očáteční slay strom může mít rvky rozmístěné libovolně. Každý rvek uložený ve stromě musíme asoň jednou najít. Počáteční slay strom může mít rvky rozmístěné libovolně. V dynamické otimalitě může T ři vyhledávání rovádět rotace, takže může být rychlejší než staticky otimální strom, naříklad když S často o sobě vyhledává stejný rvek. Věta (statická otimalita) Necht T je statický strom, c T () je očet navštívených vrcholů ři hledání a,..., m je oslounost obsahující všechny rvky. Pak libovolný slay strom rovede O ( m i= ct (i)) oerací ři hledání,..., m. Hyotéza (dynamická otimalita) Necht T je binární vyhledávací strom, který rvek hledá od kořene vrcholu obsahující a řitom rovádí libovolné rotace. ena jednoho vyhledání rvky je očet navštívených vrcholů lus očet rotací a c T (S) je součet cen vyhledání rvků v oslounosti S. Pak cena vyhledání oslounosti S v slay stromu je O(n + c T (S)). Jirka Fink Datové struktury I 5 Jirka Fink Datové struktury I 5 Slay stromy: Výhody a alikace Výhody a nevýhody Slay stromů Červeno-černé stromy otřebují v každém vrcholu jeden bit na barvu, VL stromy jeden bit na rozdíl výšek odstromů synů. Když vyhledáme všechny rvky v rostoucím ořadí, ak strom zdeeneruje na cestu. Proto slay strom není vhodný v real-time systémech. + Neotřebuje amět na seciální říznaky + Efektivně využívají rocesorové cache (Temoral locality) - Rotace zomalují vyhledávání - Vyhledávání nelze jednoduše aralelizovat - Výška stromu může být i lineární likace ache, virtuální amět, sítě, file system, komrese dat,... Windows, cc comiler and GNU ++ library, sed strin editor, Fore Systems network routers, Uni malloc, Linu loadable kernel modules,... Jirka Fink Datové struktury I 6 Jirka Fink Datové struktury I 6
7 . domácí úkol: Slay stromy Stručné zadání Imlementujte Slay strom s oeracemi SPLY, FIND, INSERT Imlementujte naivní Slay strom, který v oeraci SPLY naivně oužívá jen jednoduché rotace místo dvojitých Měřte růměrnou hloubku hledaného rvku ři oeracích FIND nalyzujte závislost růměrné hloubky hledaných rvků na očtu rvků v Slay stromu a velikosti hledané odmnožiny nalyzujte růměrnou hloubku hledaných rvků v několika testech Naište roram, který sočítá růměrnou hloubek rvků ve staticky otimálním stromu ro danou oslounost vyhledávání Srovnejte růměrné hloubky hledaných rvků ve Slay stromu a ve staticky otimálním stromu Termín odevzdání: , ředtermín.0.08 Generátor dat a další odrobnosti: htts://ktiml.mff.cuni.cz/ fink/ mortizovaná analýza Vyhledávací stromy [α]-strom Slay stromy (a,b)-stromy Červeno-černý strom Jirka Fink Datové struktury I 7 Jirka Fink Datové struktury I 8 Vyhledávací strom (a,b)-strom (ayer, Mcreiht []) Vlastnosti Vnitřní vrcholy mají libovolný očet synů (tyicky alesoň dva) Vnitřní vrchol s k syny má k setříděných klíčů V každém vnitřním vrcholu je i-tý klíč větší než všechny klíče v i-tém odstromu a menší než všechny klíče v (i + ) odstromu ro všechny klíče i Prvky mohou být uloženy ouze v listech nebo též ve vnitřních vrcholech (u každého klíče je uložena i hodnota) Vlastnosti a, b jsou celá čísla slňující a a b a (a,b)-strom je vyhledávací strom Všechny vnitřní vrcholy kromě kořene mají alesoň a synů a nejvýše b synů Kořen má nejvýše b synů Všechny listy jsou ve stejné výšce Pro zjednodušení uvažujeme, že rvky jsou jen v listech Příklad 0 Příklad: (,4)-strom Jirka Fink Datové struktury I 9 Jirka Fink Datové struktury I 40 (a,b)-strom: Oerace Insert Vložte rvek s klíčem 4 do následujícího (,4)-stromu Nejrve najdeme srávného otce, jemuž řidáme nový list Oakovaně rozdělujeme vrchol na dva (a,b)-strom: Oerace Insert loritmus Najít otce v, kterému nový rvek atří Přidat nový list do v while de(v) > b do # Najdeme otce u vrcholu v 4 if v je kořen then 5 Vytvořit nový kořen u s jediným synem v 6 else 7 u otec v # Rozdělíme vrchol v na v a v 8 Vytvořit nového syna v otci u a umístit jej vravo vedle v 9 Přesunout nejravějších (b + )/ synů vrcholu v do v 0 Přesunout nejravějších (b + )/ klíčů vrcholu v do v Přesunout oslední klíč vrcholu v do u v u Časová složitost Lineární ve výšce stromu (ředokládáme, že a, b jsou evné arametry) Jirka Fink Datové struktury I 4 Jirka Fink Datové struktury I 4 Musíme ještě dokázat, že o rovedení všech oerací dooravdy dostaneme (a,b)-strom. Ověříme, že rozdělené vrcholy mají alesoň a synů (ostatní ožadavky jsou triviální). Rozdělovaný vrchol má na očátku rávě b + synů a očet synů o rozdělení je b+ a b+. Protože b a, očet synů o rozdělení je alesoň b+ a + = a = a. (a,b)-strom: Oerace Delete Smažte rvek s klíčem 4 z následujícího (,4)-stromu Nalezneme a smažeme list Přesuneme jedno syna od bratra nebo sojíme vrchol s bratrem Jirka Fink Datové struktury I 4 Jirka Fink Datové struktury I 4
8 (a,b)-strom: Oerace Delete Při řesunu je nutné uravit klíče ve vrcholech u, v a jejich otci. Vrchol u měl a, vrchol v měl a synů. Po jejich sjednocení máme vrchol s a b syny. loritmus Najít list l obsahující rvek s daným klíčem v otec l Smazat l 4 while de(v) < a & v není kořen do 5 u sousední bratr v 6 if de(u) > a then 7 Přesunout srávného syna u od v 8 else 9 Přesunout všechny syny u od v 0 Smazat u if v nemá žádného bratra then Smazat kořen (otec v) a nastavit v jako kořen else 4 v otec v Jirka Fink Datové struktury I 44 Jirka Fink Datové struktury I 44 (a,b)-strom: nalýza Výška (a,b)-strom výšky d má alesoň a d a nejvýše b d listů. Výška (a,b)-stromu slňuje lo b n d + lo a n. Při jedné vyvažovací oeraci (štěení vrcholu) je očet modifikovaných vrcholů omezený konstantou (štěený vrchol, otec a synové). symtoticky jsou očty modifikovaných vrcholů a vyvažovacích oerací stejné. Složitost Časová složitost oerací Find, Insert and Delete je O(lo n). Počet modifikovaných vrcholů ři vytvoření stromu oerací Insert Vytváříme (a,b)-strom omocí oerace Insert Zajímá nás celkový očet vyvažovacích oerací Při každém štěení vrcholu vytvoříme nový vnitřní vrchol Po vytvoření má strom nejvýše n vnitřních vrcholů elkový očet štěení je nejvýše n a očet modifikací vrcholů je O(n) mortizovaný očet modifikovaných vrcholů na jednu oeraci Insert je O() Jirka Fink Datové struktury I 45 Jirka Fink Datové struktury I 45 (a,b)-strom: Paralelní řístu (a,b)-strom: Paralelní řístu: Příklad Vložte rvek s klíčem 6 do následujícího (,4)-stromu íl Umožnit efektní aralelizaci oerací Find, Insert a Delete (ředoklad: b a). Nejrve rozdělíme kořen Oerace Insert Preventivně rozdělit každý vrchol na cestě od kořene k hledanému listu s b syny na dva vrcholu Pak okračujeme do levého syna, který taky rozdělíme Oerace Delete Preventivně sloučit každý vrchol na cestě od kořene k hledanému listu s a syny s bratrem nebo řesunout synovce Vrchol s klíčem 8 není třeba rozdělovat a nový klíč můžeme vložit Jirka Fink Datové struktury I 46 Jirka Fink Datové struktury I 47 -sort (Guibas, Mcreiht, Plass, Roberts [0]) -sort: loritmus íl Setřídit skoro setříděné ole Modifikace (a,b)-stromu Máme uložený ukazatel na vrchol s nejmenším klíčem Příklad: Vložte klíč s hodnotou i = 6 Začneme od vrcholu s nejmenším klíčem a ostuujeme ke kořeni, dokud i neatří odstromu aktuálního vrcholu V rámci tohoto odstromu sustíme oeraci Insert Výška odstromu je Θ(lo f i), kde f i je očet klíčů menších než i Prvek i = 6 atří do tohoto odstromu Nejmenší klíč Výška odstromu Inut: Poslounost,,..., n T rázdný (a,b)-strom for i n to # Prvky rocházíme od konce do # Najdeme odstrom, do kterého vložíme i 4 v list s nejmenším klíčem 5 while v není kořen a i je větší než nejmenší klíč v otci vrcholu v do 6 v otec v 7 Vložíme i do odstromu vrcholu v Outut: Projdeme celý strom a vyíšeme všechny klíče (in-order traversal) Jirka Fink Datové struktury I 48 Jirka Fink Datové struktury I 49
9 -sort: Složitost (rown, Tarjan [], Mehlhorn [7]) Nerovnost mezi aritmetickým a eometrickým růměrem Jestliže a,..., a n nezáorná reálná čísla, ak latí n i= ai n n a i. n i= Místo G nerovnosti můžeme oužít Jensenovu nerovnost, ze které římo lyne i lo f i n lo i f i. n Tento aloritmus je bohužel efektivní jen ro hodně skoro setříděné oslounosti. Jestliže očet inverzí je n +ɛ, ak dostáváme složitost třídění O(n lo n), kde ɛ je libovolně malé kladné číslo. Časová složitost Necht f i = {j > i; j < i} je očet klíčů menších než i, které již jsou ve stromu ři vkládání i Necht F = {(i, j); i > j, i < j} = n i= fi je očet inverzí Složitost nalezení odstromu, do kterého i atří: O(lo f i) 4 Nalezení těchto odstromů ro všechny odstromy i lo fi = lo i fi = n lo n i fi n lo i f i n = n lo F n. 5 Rozdělování vrcholů v růběhu všech oerací Insert: O(n) 6 elková složitost: O(n + n lo(f /n)) 7 Složitost v nejhorším říadě: O(n lo n) rotože F ( ) n 8 Jestliže F n lo n, ak složitost je O(n lo lo n) Jirka Fink Datové struktury I 50 Jirka Fink Datové struktury I 50 (a,b)-strom: Závěr Počet modifikovaných vrcholů ři oerací Insert a Delete [] Předoklad: b a Počet modifikovaných vrcholů ři l oeracích Insert a k Delete je O(k + l + lo n) mortizovaný očet modifikovaných vrcholů ři oeracích Insert a Delete je O() Podobné datové struktury -tree, + tree, * tree -4-tree, --4-tree, etc. likace File systems nař. Et4, NTFS, HFS+ Databáze mortizovaná analýza Vyhledávací stromy [α]-strom Slay stromy (a,b)-stromy Červeno-černý strom Jirka Fink Datové struktury I 5 Jirka Fink Datové struktury I 5 Červeno-černé stromy (Guibas, Sedewick []) Definice inární vyhledávací strom s rvky uloženými ve všech vrcholech Každý vrchol je černý nebo červený Všechny cesty od kořene do listů obsahují stejný očet černých vrcholů 4 Otec červeného vrcholu musí být černý Neovinná odmínka, která jen zjednodušuje oerace. V říkladu uvažujeme, že listy jsou rerezentovány NIL/NULL ukazateli, a tedy imainární vrcholy bez rvků. Někdy se též vyžaduje, aby kořen byl černý, ale tato odmínka není nutná, rotože kořen můžeme vždy řebarvit na černo bez orušení ostatních odmínek. 5 Listy jsou černé Příklad NIL NIL 8 NIL NIL NIL 99 NIL NIL NIL NIL NIL NIL Jirka Fink Datové struktury I 5 Jirka Fink Datové struktury I 5 Červeno-černé stromy: Ekvivalence s (,4)-stromy Vrchol bez červených synů Převod mezi červeno-černými stromy a (,4)-stromy není jednoznačný, rotože vrchol (,4)-stromu se třemi syny a rvky < y lze řevést na černý vrchol červeno-černého stromu s rvkem a ravým červeným synem y nebo s rvkem y a levým červeným synem. Vrchol s jedním čevneným synem Vrchol s dvěma červenými syny Jirka Fink Datové struktury I 54 Jirka Fink Datové struktury I 54
10 Červeno-černé stromy: Oerace Insert S využitím symetrií lze očet říadů snížit. Vytvoření nového vrcholu Najít list ro nový rvek n Přidat nový vrchol NIL NIL NIL n NIL NIL Pokud otec je červený, ak je nutné strom vybalancovat alancování Vrchol n a jeho otec jsou červené vrcholy a toto je jediná orušená odmínka Děda vrcholu n je černý Musíme uvažovat tyto říady: Strýc u je černý nebo červený Vrchol n je ravým nebo levým synem (odobně ro vrchol ) Jirka Fink Datové struktury I 55 Jirka Fink Datové struktury I 55 Červeno-černé stromy: Oerace Insert, strýc je černý Červeno-černé stromy: Oerace Insert, strýc je červený n u n u n u 4 5 n u 4 5 n u n u n u Pořadí rvků v (,4)-stromu a výsledný červeno-černý strom závisí na tom, zda vrchol n je ravým nebo levým synem a zda vrchol je ravým nebo levým synem. 4 5 Po rozdělení vrchol (,4)-stromu se rvek řesouvá do otce, a roto je vrchol červený. Jirka Fink Datové struktury I 56 Jirka Fink Datové struktury I 57 Červeno-černé stromy: Vlastnosti Počet černých vrcholů na cestě ke kořeni je stejný jako výška odovídajícího (,4)-stromu, a tedy výška červeno-černého stromu je nejvýše dvojnásobek výšky (,4)-stromu. Důsledky ekvivalence s (,4)-stromy Výška červeno-černého stromu je Θ(lo n) Časová složitost oerací Find, Insert a Delete je O(lo n) mortizovaný očet modifikovaných vrcholů ři oerací Insert a Delete je O() Paralelní řístu (to-down balancování) likace sociativní ole nař. std::ma and std::set v ++, TreeMa v Java The omletely Fair Scheduler in the Linu kernel omutational Geometry Data structures Jirka Fink Datové struktury I 58 Jirka Fink Datové struktury I 58 mortizovaná analýza Vyhledávací stromy Pamět ová hierarchie Příklad velikostí a rychlostí různých tyů amětí Triviální roram velikost rychlost L cache K G/s L cache 56 K 96 G/s L cache 8 M 6 G/s RM G G/s SDD G 448 M/s HDD T M/s # Inicializace ole -bitových čísel velikosti n for (i=0; i+d<n; i+=d) do [i] = i+d # Vezmeme každou d-tou ozici a vytvoříme cyklus [i]=0, i=0 # Měříme dobu růběhu cyklu v závislosti na arametrech n a d # Počet oerací je nezávislý na n a d 4 for (j=0; j< 8 ; j++) do 5 i = [i] # Dokola rocházíme cyklus d-tých ozic Jirka Fink Datové struktury I 59 Jirka Fink Datové struktury I 60
11 Pamět ová hierarchie: Triviální roram ache-oblivious (Frio, Leiserson, Proko, Ramachandran, 999 [9]) Čas [s] d= d= 0 d= 9 d= 8 d= 7 d= 6 d= 5 d= 4 d= d= Zjednodušený model aměti Uvažujme ouze na dvě úrovně aměti: omalý disk a rychlá cache Pamět je rozdělená na bloky (stránky) velikosti Velikost cache je M, takže cache má P = M bloků Procesor může řistuovat ouze k datům uložených v cache Pamět je lně asociativní Data se mezi diskem a cache řesouvají o celých blocích a našim cílem je určit očet bloků načtených do cache ache-aware aloritmus loritmus zná hodnoty M a a odle nich nastavuje arametry (nař. velikost vrcholu -stromu ři ukládání dat na disk) lo n ache-oblivious aloritmus loritmus musí efektivně funovat bez znalostí hodnot M a. Důsledky: Není třeba nastavovat arametry roramu, který je tak řenositelnější loritmus dobře funuje mezi libovolnými úrovněmi aměti (L L L RM) Jirka Fink Datové struktury I 6 Jirka Fink Datové struktury I 6 Pro zjednodušení ředokládáme, že jeden rvek zabírá jednotkový rostor, takže do jednoho bloku se vejde rvků. Předokládáme, že každý blok z disku může být uložený na libovolné ozici v cache. Tento ředoklad výrazně zjednodušuje analýzu, i když na reálných očítačích moc nelatí, viz htts://en.wikiedia.or/wiki/pu_cache#ssociativity. ache-oblivious analýza: Scannin Přečtení souvislého ole (výočet maima, součtu a odobně) Prvek lok Pamět n Minimální možný očet řenesených bloků je n/. Skutečný očet řenesených bloků je nejvýše n/ +. Předokládáme, že máme k disozici O() reistrů k uložení iterátoru a maima. Obrácení ole Počet řenesených bloků je stejný za ředokladu, že P. Jirka Fink Datové struktury I 6 Jirka Fink Datové struktury I 6 ache-oblivious analýza: inární halda a vyhledávání inární halda v oli: Průchod od listu ke kořeni Přesněji Θ(ma {, lo n lo }). Dále ředokládáme, že n. Pro jednoduchost uvažujeme neúsěšné vyhledávání. Začátek haldy Čtené rvky lok esta má Θ(lo n) vrcholů Posledních Θ(lo ) vrcholů leží v nejvýše dvou blocích Ostatní vrcholy jsou uloženy v o dvou různých blocích 4 Θ(lo n lo ) = Θ(lo n ) řenesených bloků inární vyhledávání Porovnáváme Θ(lo n) rvků s hledaným rvkem Posledních Θ(lo ) rvků je uloženo v nejvýše dvou blocích Ostatní rvky jsou uloženy v o dvou různých blocích Θ(lo n lo ) řenesených bloků Jirka Fink Datové struktury I 64 Jirka Fink Datové struktury I 64 ache-oblivious analýza: Meresort Příad n M/ elé ole se vejde do cache, takže řenášíme n/ + O() bloků. Schéma Délka sojovaných olí n n/ n/4 z.. Výška stromu rekurze lo n lo (n/z) lo z Polovina cache je oužita na vstuní ole a druhá olovina na slité ole. Pro jednoduchost ředokládáme, že velikosti olí v jedné úrovni rekurze jsou stejné. z odovídá velikosti ole v úrovni rekurze takové, že dvě ole velikost z/ mohou být slity v jedno ole velikost z. Slití všech olí v jedné úrovni do olovičního očtu olí dvojnásobné délky vyžaduje řečtení všech rvků. Navíc je třeba uvažovat nezarovnání olí a bloků, takže hraniční bloky mohou atřit do dvou olí. 4 Funnelsort řenese O ( n lo P n ) bloků. Příad n > M/ Necht z je maimální velikost ole, která může být setříděná v cache Platí z M < z Slití jedné úrovně vyžaduje n + n + O() = O( ) n z řenosů. 4 Počet řenesených bloků je O ( ) ( ) ( n + n lo z = O n lo ) n M. 4 Jirka Fink Datové struktury I 65 Jirka Fink Datové struktury I 65
12 ache-oblivious analýza: Transozice matic: Triviální řístu ache-oblivious analýza: Transozice matic: Triviální řístu Strateie ro výměnu stránek v cache OPT: Otimální off-line aloritmus ředokládající znalost všech řístuů do aměti FIFO: Z cache smažeme stránku, která je ze všech stránek v cachi nejdelší dobu LRU: Z cache smažeme stránku, která je ze všech stránek v cachi nejdéle neoužitá Triviální aloritmus ro transozici matice velikost k k for i to k do for j i + to k do Swa( ij, ji) Předoklady Uvažujeme ouze říad < k: Do jednoho bloku cache se nevejde celá řádka matice P < k: Do cache se nevejde celý slouec matice Příklad: Reresentace matice 5 5 v aměti LRU a FIFO strateie Při čtení matice o sloucích si cache amatuje osledních P řádků, takže ři čtení rvku, již rvek, není v cache. Počet řenesených bloků je Ω(k ). OPT strateie Transozice rvního řádku/slouce vyžaduje alesoň k řenosů. Nejvýše P rvků z druhého slouce zůstane v cache. Proto transozice druhého řádku/slouce vyžaduje alesoň k P řenosů. 4 Transozice i-tého řádku/slouce vyžaduje alesoň ma {0, k P i} řenosů. 5 elkový očet řenosu je alesoň k P i= k P i = Ω ( (k P) ). Jirka Fink Datové struktury I 66 Jirka Fink Datové struktury I 67 ache-oblivious analýza: Transozice matic: ache-aware řístu ache-oblivious analýza: Transozice matic: Rekurzivní transozice ache-aware aloritmus ro transozici matice velikost k k # Nejrve si rozdělíme danou matici na submatice velikosti z z for (i = 0; i < k; i+ = z) do for (j = i; j < k; j+ = z) do # Transonujeme submatici začínající na ozici (i, j) for (ii = i; ii < min(k, i + z); ii + +) do 4 for (jj = ma(j, ii + ); jj < min(k, j + z); jj + +) do 5 Swa( ii,jj, jj,ii) Idea Rekurzivně rozdělíme na submatice ( = ) ( ) T T = T T T Hodnocení Otimální hodnota z závisí na konkrétním očítači Využíváme jen jednu úroveň cache Při srávně zvolené hodnotě z bývá tento ostu nejrychlejší Matice a se transonují odle stejného schématu, ale a se rohazují. Jirka Fink Datové struktury I 68 Jirka Fink Datové struktury I 69 ache-oblivious analýza: Transozice matic: Rekurzivní transozice Procedure transose on diaonal() if Matice je malá then Transonujeme matici triviálním ostuem 4 else 5,,, souřadnice submatic 6 transose on diaonal( ) 7 transose on diaonal( ) 8 transose and swa(, ) Všimněme si, že matice a musí mít osice symetrické odle hlavní diaonály ůvodní matice, a roto ve skutečnosti funkci transose and swa() stačí ředávat ozice matici. Ve funkci transose on diaonal musí být matice čtvercová a ležet na hlavní diaonále, a roto stačí ředávat -ovou souřadnici a řád matice. 9 Procedure transose and swa(, ) 0 if Matice a jsou malé then Prohodíme a transonujeme matice a triviálním ostuem else,,,,,,, souřadnice submatic 4 transose and swa(, ) 5 transose and swa(, ) 6 transose and swa(, ) 7 transose and swa(, ) Jirka Fink Datové struktury I 70 Jirka Fink Datové struktury I 70 ache-oblivious analýza: Transozice matic: Rekurzivní transozice nalýza očtu řenesených bloků Předoklad Tall cache : M 4, tj. očet bloků je alesoň 4 Necht z je maimální velikost submatice, ve které se jeden řádek vejde do jednoho bloku Platí: z z 4 Jedna submatice z z je uložena v nejvýše z blocích Stačilo by ředokládat, že očet bloků je alesoň Ω(). Máme-li alesoň 4 bloků, ak je ostu alebraicky jednodušší. Pokud začátek řádky není na začátku bloku, tak je jeden řádek submatice uložen ve dvou blocích. Funkce transose and swa racujeme se dvěma submaticemi. 4 elá matice je uložena v alesoň k blocích aměti. 5 Dvě submatice z z se vejdou do cache 6 Transozice matice tyu z z vyžaduje nejvýše 4z řenosů 7 Máme (k/z) submatic velikosti z ( 8 elkový očet řenesených bloků je nejvýše k 4z 8k = O z 9 Tento ostu je otimální až na multilikativní faktor 4 k ) Jirka Fink Datové struktury I 7 Jirka Fink Datové struktury I 7
13 ache-oblivious analýza: Rerezentace binárních stromů Platí ro -reulární haldu. -strom má výšku Θ(lo (n). symtoticky otimální řešení důkaz je založen na Information theory. íl Sestrojit rerezentaci binárního stromu efektivně využívající cache. Počítáme očet načtených bloků ři růchodu cesty z listu do kořene. inární halda Velmi neefektivní: Počet řenesených bloků je Θ(lo n lo ) = Θ(lo n ) -reulární halda, -strom Výška stromu je lo (n) + Θ() Jeden vrchol je uložen v nejvýše dvou blocích Počet načtených bloků je Θ(lo (n)) Nevýhody: cache-aware a chtěli jsme binární strom Převedení na binární strom Každý vrchol -reulární haldy nahradíme binárním stromem. Jirka Fink Datové struktury I 7 Jirka Fink Datové struktury I 7 ache-oblivious analýza: Rerezentace binárních stromů ache-oblivious analýza: Rerezentace binárních stromů f f f b b b a a a c c c d d d e e e... vynecháno... y y y a z z z Rekurzivní bottom-u konstrukce van Emde oas rozložení van Emde oas rozložení ve 0 řádu 0 je jeden vrchol ve k obsahuje jednu horní koii ve k a každému listu horní koie má dvě dolní koie vek V oli jsou nejrve uložena horní koie a ak následují všechny dolní koie a a Pořadí vrcholů v oli odle van Emde oas rozložení b c d e 0 b b c c d d e e f f f... vynecháno... y y y z z z 0 a a a b b b c c c d d d e e e f f f... z z z 6 9 esta z kořene do listu f Jirka Fink Datové struktury I 7 Jirka Fink Datové struktury I 74 ache-oblivious analýza: Rerezentace binárních stromů Rekurzivní to-down konstrukce van Emde oas rozložení h Výočet očtu načtených bloků ři cestě z kořene do listu Necht h = lo n je výška stromu... h h Necht z je maimální výška odstromu, který se vejde do jednoho bloku Platí: z lo z Počet odstromů výšky z na cestě z kořene do listu je = lo n h lo n z lo Počet načtených bloků je Θ(lo n) ache-oblivious analýza: Srovnání OPT a LRU strateií Věta (Sleator, Tarjan [5]) Necht s,..., s k je oslounost řístuů do aměti Necht P OPT a P LRU je očet bloků v cache ro strateie OPT a LRU Necht F OPT a F LRU je očet řenesených bloků P LRU > P OPT Pak F LRU Důsledek P LRU P LRU P OPT F OPT + P OPT Pokud LRU může uložit dvojnásobný očet bloků v cache oroti OPT, ak LRU má nejvýše dvojnásobný očet řenesených bloků oroti OPT (lus P OPT). 4 Zdvojnásobení velikosti cache nemá většinou vliv na asymtotický očet řenesených bloků Scannin: O(n/) Meresort: O ( n lo ) n M Funnelsort: O ( n lo ) P n The van Emde oas layout: O(lo n) Jirka Fink Datové struktury I 75 Jirka Fink Datové struktury I 76 s i značí blok aměti, se kterým roram racuje, a roto musí být načten do cache. Poslounost s,..., s k je ořadí bloků aměti, ve kterém aloritmus racuje s daty. Při oakovaném řístuu do stejného bloku se blok oslounosti oakuje. Představme si, že OPT strateie ustíme na očítači s P OPT bloky v cache a LRU strateie sustíme na očítači s P OPT bloky v cache. Srovnáváme očet řenesených bloků OPT strateie na očítači s P OPT bloky a LRU strateie na očítači s P OPT bloky. 4 Formálně: Jestliže P LRU = P OPT, ak F LRU F OPT + P OPT. ache-oblivious analýza: Srovnání OPT a LRU strateií Důkaz (F LRU PLRU F OPT + P PLRU POPT OPT ) Pokud LRU má f P LRU řenesených bloků v odoslounosti s, ak OPT řenese alesoň f P OPT bloků v odoslonosti s Pokud LRU načte v odoslounost f různých bloků, tak odoslounost obsahuje alesoň f různých bloků Pokud LRU načte v odoslounost jeden blok dvakrát, tak odoslounost obsahuje alesoň P LRU f různých bloků OPT má řed zracováním odoslounosti nejvýše P OPT bloků z odoslounosti v cache a zbylých alesoň f P OPT musí načíst Rozdělíme oslounost s,..., s k na odoslonosti tak, že LRU řenese P LRU bloků v každé odoslounosti (kromě oslední) Jestliže F OPT and F LRU jsou očty řenesených bloků ři zracování libovolné odoslounosti, ak F LRU P LRU P LRU P OPT F OPT (kromě oslední) OPT řenese F OPT P LRU P OPT bloků v každé odoslounosti Tedy F LRU F OPT P LRU P LRU P OPT 4 V oslední oslounosti latí F LRU P LRU P LRU P OPT F OPT + P OPT Platí F OPT F LRU P OPT a P LRU P LRU P OPT Tedy F LRU F OPT + P P OPT LRU F P LRU P OPT OPT + P OPT Jirka Fink Datové struktury I 76 Jirka Fink Datové struktury I 77
14 Srovnání rychlosti čtení a záisu z aměti Srovnání rychlosti čtení a záisu z aměti Čtení z aměti # Inicializace ole -bitových čísel velikosti n for (i=0; i+d<n; i+=d) do [i] = i+d # Vezmeme každou d-tou ozici a vytvoříme cyklus [i=0]=0 # Měříme dobu růběhu cyklu v závislosti na arametrech n a d 4 for (j=0; j< 8 ; j++) do 5 i = [i] # Dokola rocházíme cyklus d-tých ozic Čas [s].5 ma=8s ma=.4s Čtení, d=04 Čtení, d= Záis, d=04 Záis, d= Čtení, d= Záis, d= Záis do aměti 0.5 # Měříme dobu růběhu cyklu v závislosti na arametrech n a d for (j=0; j< 8 ; j++) do [(j*d) % n] = j # Dokola zaisujeme na d-té ozice lo n Jirka Fink Datové struktury I 78 Jirka Fink Datové struktury I 79 Pár triků na závěr Která varianta je rychlejší a o kolik? # Použijeme modulo: for (j=0; j< 8 ; j++) do [(j*d) % n] = j # Použijeme bitovou konjunkci: mask = n # Předokládáme, že n je mocnina dvojky 4 for (j=0; j< 8 ; j++) do 5 [(j*d) & mask] = j Jak dlouho oběží výočet vynecháme-li oslední řádek? for (i=0; i+d<n; i+=d) do [i] = i+d [i=0]=0 # Měříme dobu růběhu cyklu v závislosti na arametrech n a d 4 for (j=0; j< 8 ; j++) do 5 i = [i] 6 rintf( %d\n, i); mortizovaná analýza Vyhledávací stromy d-reulární halda inomiální halda Fibonacciho halda Jirka Fink Datové struktury I 80 Jirka Fink Datové struktury I 8 Halda Halda: likace Základní ojmy Každý rvek obsahuje jednoznačný a neměnný klíč identifikující rvek a rioritu, která nemusí být jednoznačná a může se měnit. Základní oerace INSERT FINDMIN: Nalezení rvku s nejmenší rioritou DELETEMIN: Smazání rvku s nejmenší rioritou DERESE: Snížit hodnotu riority v daném vrcholu Haldový invariant Priorita v každém vrcholu větší nebo rovna rioritě otce. likace Prioritní fronta Hea-sort Dijkstrův aloritmus (nejkratší cesta) Jarníkův (Primův) aloritmus (minimální kostra) Klíč Umístění rvků ve stromu nemusí slňovat odmínku vyhledávání Halda nemusí umět efektivně vyhledávat rvky odle klíče! loritmus využívající haldu si musí amatovat, kde je který rvek uložený. Halda hodnoty klíčů vůbec nevyužívá Jirka Fink Datové struktury I 8 Jirka Fink Datové struktury I 8 Podmínka vyhledávacích stromů (klíč v každém vnitřním vrcholu je větší než všechny klíče v levém odstromu a menší než všechny klíče v ravém odstromu) není v haldě slněna. Přesněji: ozici rvku je nutné si amatovat, okud otřebujeme oeraci DERESE. Oerace INSERT, FINDMIN a DELETEMIN ozice rvků neotřebují. loritmus si naříklad může amatovat ukazatel na vrchol stromu obsahující daný rvek. Oerace FINDMIN vrací rvek i s klíčem, který může být využit v dalším aloritmu. mortizovaná analýza Vyhledávací stromy d-reulární halda inomiální halda Fibonacciho halda Jirka Fink Datové struktury I 8 Jirka Fink Datové struktury I 84
15 d-reulární halda (Johnson []) Definice Každý vrchol má nejvýše d synů Všechny vrstvy kromě oslední jsou úlně zalněné Poslední hladina je zalněná zleva Haldový invariant (riorita v každém vrcholu větší nebo rovna rioritě v otci) Necht h je nejnižší lná hladina. Jelikož h-tá hladina obsahuje d h vrcholů, tak latí n d h, z čehož lyne h lo d n. Tudíž výška d-reulární haldy s n rvky je nejvýše + lo d n. Najděte formuli udávající řesnou výšku d-reulární haldy. Příklad -reulární (binární) haldy vičení Jaká je řesná výška d-reulární haldy s n rvky? Jirka Fink Datové struktury I 85 Jirka Fink Datové struktury I 85 d-reulární halda: Reresentace d-reulární halda: Oerace INSERT inární halda uložená ve stromu Příklad: Vložme rvek s rioritou inární halda uložená v oli vrchol na ozici i má otce na ozici (i )/ a syny na ozici i + a i + : Otec Děti vičení: Určete ozice otce a synů ro obecnou d-reulární haldu Jirka Fink Datové struktury I 86 Jirka Fink Datové struktury I 87 d-ary hea: Oerace INSERT a DERESE Pro řesnější analýzu nás zajímá závislost složitosti na hodnotě d. Později se nám bude hodit nastavovat d odle hodnot na vstuu. INSERT: loritmus Inut: Nový rvek s rioritou v rvní volný blok v oli Nový rvek uložíme na ozici v while v není kořen a otec vrcholu v má riority větší než do 4 Prohodíme rvky na ozicích v a 5 v Oerace DERESE Snížíme rioritu a okračujeme odobně jako ři oeraci INSERT Časová složitost O(lo d n) Jirka Fink Datové struktury I 88 Jirka Fink Datové struktury I 88 Oerace DELETEMIN d-reulární halda: Oerace uild 8 íl Vytvořit haldu z daného ole rvků loritmus Přesuneme oslední rvek do kořene v while Některý ze synů vrcholu v má rioritu menší než v do u syn vrcholu v s menším rioritou 4 Prohodíme rvky ve vrcholech u a v 5 v u Složitost O(d lo d n) loritmus for r oslední ozice to rvní ozice v oli do # Zracujeme vrchol r odobně jako ři oeraci DE L E T EMI N v r while Některý ze synů vrcholu v má rioritu menší než v do 4 u syn vrcholu v s menším rioritu 5 Prohodíme rvky ve vrcholech u a v 6 v u Korektnost Podstromy všech zracovaných vrcholů tvoří haldu Jirka Fink Datové struktury I 89 Jirka Fink Datové struktury I 90
16 d-reulární halda: Oerace uild Podstromem vrcholu u rozumíme vrchol u a všechny vrcholy od u. Člen + zaočítáváme, rotože jeden odstrom může být neúlný. Lemma (vičení) h d = d h (d ) h=0 Složitost Zracování vrcholu s odstromem výšky h: O(dh) Úlný odstrom výšky h má d h listů Každý list atří do nejvýše jednoho úlného odstromu výšky h. Počet vrcholů s odstromy výšky h je nejvýše n + n d h d h elková časová složitost lo d n h=0 n d dh nd h h d = n h Složitost je O(n) ro libovolné d h=0 ( ) d n = O(n) d Jirka Fink Datové struktury I 9 Jirka Fink Datové struktury I 9 inomiální strom mortizovaná analýza Vyhledávací stromy d-reulární halda inomiální halda Fibonacciho halda Definice inomiální strom 0 řádu 0 je jeden vrchol inomiální strom k řádu k má kořen, jehož synové jsou kořeny binomiálních stromů řádu 0,,..., k. lternativně inomální strom řádu k je vytvořen z dvou binomiálních stromů řádu k tak, že se jeden strom řiojí jako nejravější syn kořene druhého stromu. Rekurzivní definice binomiálního stromu... k 0 k k k Jirka Fink Datové struktury I 9 Jirka Fink Datové struktury I 9 inomiální strom: Příklad inomiální strom: Vlastnosti Rekurzivní definice binomiálního stromu Rekurzivní definice binomiálního stromu... k... k 0 k k k 0 k k k inomiální stromy řádu 0,, a Vlastnosti inomiální strom k má k vrcholů, výšku k, k synů v kořeni, maimální stueň k, ( k ) d vrcholů v hloubce d. Podstrom vrcholu s k syny je izomorfní k. Jirka Fink Datové struktury I 94 Jirka Fink Datové struktury I 95 Množina binomiálních stromů Pozorování Pro každé n eistuje (rávě jedna) množina binomiálních stromů různých řádů taková, že celkový očet vrcholů je n. Vztah mezi binárními čísly a binomiálními stromy inární číslo n = inomiální halda (Vuillemin [7]) Definice inomiální halda je množina binomiálních stromů taková, že: Každý rvek je uložen rávě v jednom vrcholu jednoho binomiálního stromu Každý binomiální strom je halda (otec má menší rioritu než syn) Žádné dva binomiální stromy nemají stejný řád inomiální halda obsahuje: 7 4 Příklad ro 00 rvků Příklad Jirka Fink Datové struktury I 96 Jirka Fink Datové struktury I 97
Datové struktury I NTIN066
Datové struktury I NTIN066 Jirka Fink https://ktiml.mff.cuni.cz/ fink/ Katedra teoretické informatiky a matematické logiky Matematicko-fyzikální fakulta Univerzita Karlova v Praze Zimní semestr 2018/19
Dynamické programování
ALG Dynamické rogramování Nejdelší rostoucí odoslounost Otimální ořadí násobení matic Nejdelší rostoucí odoslounost Z dané oslounosti vyberte co nejdelší rostoucí odoslounost. 5 4 9 5 8 6 7 Řešení: 4 5
Datové struktury I NTIN066
Datové struktury I NTIN066 Jirka Fink https://ktiml.mff.cuni.cz/ fink/ Katedra teoretické informatiky a matematické logiky Matematicko-fyzikální fakulta Univerzita Karlova v Praze Zimní semestr 2016/17
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.
Kontakt. Naučit se navrhovat a analyzovat netriviální datové struktury. registrováni na SISu
Základí iformace Datové struktury I NTIN066 Jirka Fik htts://ktiml.mff.cui.cz/ fik/ Kotakt E-mail fik@ktiml.mff.cui.cz Homeae htts://ktiml.mff.cui.cz/ fik/ Kozultace Idividuálí domluva Katedra teoretické
SHANNONOVY VĚTY A JEJICH DŮKAZ
SHANNONOVY VĚTY A JEJICH DŮKAZ JAN ŠŤOVÍČEK Abstrakt. Důkaz Shannonových vět ro binární symetrický kanál tak, jak měl být robrán na řednášce. Číslování vět odovídá řednášce. 1. Značení a obecné ředoklady
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
Laplaceova transformace.
Lalaceova transformace - studijní text ro cvičení v ředmětu Matematika -. Studijní materiál byl řiraven racovníky katedry E. Novákovou, M. Hyánkovou a L. Průchou za odory grantu IG ČVUT č. 300043 a v rámci
Univerzita Pardubice FAKULTA CHEMICKO TECHNOLOGICKÁ
Univerzita Pardubice FAKULA CHEMICKO ECHNOLOGICKÁ MEODY S LAENNÍMI PROMĚNNÝMI A KLASIFIKAČNÍ MEODY SEMINÁRNÍ PRÁCE LICENČNÍHO SUDIA Statistické zracování dat ři kontrole jakosti Ing. Karel Dráela, CSc.
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í
Model tenisového utkání
Model tenisového utkání Jan Šustek Semestrální rojekt do ředmětu Náhodné rocesy 2005 V této ráci se budu zabývat modelem tenisového utkání. Vstuními hodnotami budou úsěšnosti odání jednotlivých hráčů,
Cvičení z termomechaniky Cvičení 5.
Příklad V komresoru je kontinuálně stlačován objemový tok vzduchu *m 3.s- + o telotě 0 * C+ a tlaku 0, *MPa+ na tlak 0,7 *MPa+. Vyočtěte objemový tok vzduchu vystuujícího z komresoru, jeho telotu a říkon
Analytická metoda aneb Využití vektorů v geometrii
KM/GVS Geometrické vidění světa (Design) nalytická metoda aneb Využití vektorů v geometrii Použité značky a symboly R, C, Z obor reálných, komleních, celých čísel geometrický vektor R n aritmetický vektor
Způsobilost. Data a parametry. Menu: QCExpert Způsobilost
Zůsobilost Menu: QExert Zůsobilost Modul očítá na základě dat a zadaných secifikačních mezí hodnoty různých indexů zůsobilosti (caability index, ) a výkonnosti (erformance index, ). Dále jsou vyočítány
7.5.13 Rovnice paraboly
7.5.1 Rovnice arabol Předoklad: 751 Př. 1: Seiš všechn rovnice ro arabol a nakresli k nim odovídající obrázk. Na každém obrázku vznač vzdálenost. = = = = Pedagogická oznámka: Sesání arabol je důležité,
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
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ě
Systémové struktury - základní formy spojování systémů
Systémové struktury - základní formy sojování systémů Základní informace Při řešení ať již analytických nebo syntetických úloh se zravidla setkáváme s komlikovanými systémovými strukturami. Tato lekce
2.3.6 Práce plynu. Předpoklady: 2305
.3.6 Práce lynu Předoklady: 305 Děje v lynech nejčastěji zobrazujeme omocí diagramů grafů závislosti tlaku na objemu. Na x-ovou osu vynášíme objem a na y-ovou osu tlak. Př. : Na obrázku je nakreslen diagram
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í
Algoritmy na ohodnoceném grafu
Algoritmy na ohodnoceném grafu Dvě základní optimalizační úlohy: Jak najít nejkratší cestu mezi dvěma vrcholy? Dijkstrův algoritmus s t Jak najít minimální kostru grafu? Jarníkův a Kruskalův algoritmus
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
Spojitá náhodná veličina
Lekce 3 Sojitá náhodná veličina Příad sojité náhodné veličiny je komlikovanější, než je tomu u veličiny diskrétní Je to dáno ředevším tím, že jednotková ravděodobnost jistého jevu se rozkládá mezi nekonečně
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é
Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace
Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi
Cyklické kódy. Alena Gollová, TIK Cyklické kódy 1/23
Cyklické kódy 5. řednáška z algebraického kódování Alena Gollová, TIK Cyklické kódy 1/23 Obsah 1 Cyklické kódy Generující olynom - kódování Kontrolní olynom - objevování chyb Alena Gollová, TIK Cyklické
PARALELNÍ PROCESY A PROGRAMOVÁNÍ
PARALELNÍ PROCESY A PROGRAMOVÁNÍ 6 Analýza složitosti algoritmů - cena, ráce a efektivita Ing. Michal Bližňák, Ph.D. Zlín 2013 Tento studijní materiál vznikl za finanční odory Evroského sociálního fondu
4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.
4 Stromy a les Jedním ze základních, a patrně nejjednodušším, typem grafů jsou takzvané stromy. Jedná se o souvislé grafy bez kružnic. Přes svou (zdánlivou) jednoduchost mají stromy bohatou strukturu a
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
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
Č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á
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
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ší
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ší
Dynamické programování
Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)
CVIČENÍ Z ELEKTRONIKY
Střední růmyslová škola elektrotechnická Pardubice CVIČENÍ Z ELEKRONIKY Harmonická analýza Příjmení : Česák Číslo úlohy : Jméno : Petr Datum zadání :.1.97 Školní rok : 1997/98 Datum odevzdání : 11.1.97
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
Algoritmus pro generování normálních magických čtverců
1.1 Úvod Algoritmus pro generování normálních magických čtverců Naprogramoval jsem v Matlabu funkci, která dokáže vypočítat magický čtverec libovolného přípustného rozměru. Za pomocí tří algoritmů, které
VEKTOROVÁ POLE VEKTOROVÁ POLE
Je-li A podmnožina roviny a f je zobrazení A do R 2, které je dáno souřadnicemi f 1, f 2, tj., f(x, y) = (f 1 (x, y), f 2 (x, y)) pro (x, y) A, lze chápat dvojici (f 1 (x, y), f 2 (x, y)) jako vektor s
Datová centra a úložiště. Jaroslav G. Křemének g.j.kremenek@gmail.com
Datová centra a úložiště Jaroslav G. Křemének g.j.kremenek@gmail.com České národní datové úložiště Součást rojektu CESNET Rozšíření národní informační infrastruktury ro VaV v regionech (eiger) Náklady
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
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)
TERMIKA VIII. Joule uv a Thompson uv pokus pro reálné plyny
TERMIKA VIII Maxwellova rovnovážná rozdělovací funkce rychlostí Joule uv a Thomson uv okus ro reálné lyny 1 Maxwellova rovnovážná rozdělovací funkce rychlostí Maxwellova rychlostní rozdělovací funkce se
Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika
amortizovaná složitost, Fibonacciho halda, počítačová aritmetika Jiří Vyskočil, Marko Genyg-Berezovskyj 2009 Amortizovaná složitost Asymptotická složitost často dostatečně nevypovídá o složitosti algoritmů,
IB111 Úvod do programování skrze Python
Vyhledávání, řazení, složitost IB111 Úvod do programování skrze Python 2012 Otrávené studny 8 studen, jedna z nich je otrávená laboratorní rozbor dokáže rozpoznat přítomnost jedu ve vodě je drahý (je časově
Grafové algoritmy. Programovací techniky
Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být
1.5.2 Mechanická práce II
.5. Mechanická ráce II Předoklady: 50 Př. : Jakou minimální ráci vykonáš ři řemístění bedny o hmotnosti 50 k o odlaze o vzdálenost 5 m. Příklad sočítej dvakrát, jednou zanedbej třecí sílu mezi bednou a
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é
můžeme toto číslo považovat za pravděpodobnost jevu A.
RAVDĚODOBNOST - matematická discilína, která se zabývá studiem zákonitostí, jimiž se řídí hromadné náhodné jevy - vytváří ravděodobnostní modely, omocí nichž se snaží ostihnout náhodné rocesy. Náhodné
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
1.5.5 Potenciální energie
.5.5 Potenciální energie Předoklady: 504 Pedagogická oznámka: Na dosazování do vzorce E = mg není nic obtížnéo. Problém nastává v situacíc, kdy není zcela jasné, jakou odnotu dosadit za. Hlavním smyslem
Výpočet svislé únosnosti osamělé piloty
Inženýrský manuál č. 13 Aktualizace: 04/2016 Výočet svislé únosnosti osamělé iloty Program: Soubor: Pilota Demo_manual_13.gi Cílem tohoto inženýrského manuálu je vysvětlit oužití rogramu GEO 5 PILOTA ro
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
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,
TGH05 - Problém za milion dolarů.
TGH05 - Problém za milion dolarů. Jan Březina Technical University of Liberec 20. března 2012 Časová složitost algoritmu Závislost doby běhu programu T na velikosti vstupních dat n. O(n) notace, standardní
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
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ěr a úvěrové výpočty 1
Modely analýzy a syntézy lánů MAF/KIV) Přednáška 8 Úvěr a úvěrové výočty 1 1 Rovnice úvěru V minulých řednáškách byla ro stav dluhu oužívána rovnice 1), kde ředokládáme, že N > : d = a b + = k > N. d./
Obvodové rovnice v časové oblasti a v operátorovém (i frekvenčním) tvaru
Obvodové rovnice v časové oblasti a v oerátorovém (i frekvenčním) tvaru EO Přednáška 5 Pavel Máša - 5. řednáška ÚVODEM V ředchozím semestru jsme se seznámili s obvodovými rovnicemi v SUS a HUS Jak se liší,
Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.
Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?
1.3.3 Přímky a polopřímky
1.3.3 římky a olořímky ředoklady: 010302 edagogická oznámka: oslední říklad je oakování řeočtu řes jednotku. okud hodina robíhá dobře, dostanete se k němu řed koncem hodiny. edagogická oznámka: Nakreslím
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
Učební texty k státní bakalářské zkoušce Matematika Posloupnosti a řady funkcí. študenti MFF 15. augusta 2008
Učební texty k státní bakalářské zkoušce Matematika Poslounosti a řady funkcí študenti MFF 15. augusta 2008 1 3 Poslounosti a řady funkcí Požadavky Sojitost za ředokladu stejnoměrné konvergence Mocninné
Slezská univerzita v Opavě Obchodně podnikatelská fakulta v Karviné
Slezská univerzita v Oavě Obchodně odnikatelská fakulta v Karviné Přijímací zkouška do. ročníku OPF z matematiky (00) A Příklad. Určete definiční oboovnice a rovnici řešte. n + n =. + D : n N n = b b +
NPRG030 Programování I, 2018/19 1 / :03:07
NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07 Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování
Výpočet svislé únosnosti osamělé piloty
Inženýrský manuál č. 13 Aktualizace: 06/2018 Výočet svislé únosnosti osamělé iloty Program: Soubor: Pilota Demo_manual_13.gi Cílem tohoto inženýrského manuálu je vysvětlit oužití rogramu GEO 5 PILOTA ro
Ukazatele. Paměť počítače Víte, jak velkou paměť má váš počítač? Ovládací panely/systém Víte, kolik je 1KiB,1kB, 1MB, 1GiB(ČSN IEC , 1998)?
1 Přírava studijního rogramu Informatika je odorována rojektem financovaným z Evroského sociálního fondu a rozočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti roměnná tyu ukazatel
3.2 Metody s latentními proměnnými a klasifikační metody
3. Metody s latentními roměnnými a klasifikační metody Otázka č. Vyočtěte algoritmem IPALS. latentní roměnnou z matice A[řádek,slouec]: A[,]=, A[,]=, A[3,]=3, A[,]=, A[,]=, A[3,]=0, A[,3]=6, A[,3]=4, A[3,3]=.
GONIOMETRICKÉ ROVNICE -
1 GONIOMETRICKÉ ROVNICE - Pois zůsobu oužití: teorie k samostudiu (i- learning) ro 3. ročník střední školy technického zaměření, teorie ke konzultacím dálkového studia Vyracovala: Ivana Klozová Datum vyracování:
3.1.1 Přímka a její části
3.1.1 Přímka a její části Předoklady: Pedagogická oznámka: Úvod do geometrie atří z hlediska výuky mezi nejroblematičtější části středoškolské matematiky. Několik rvních hodin obsahuje oakování ojmů a
Náhodným (stochastickým) procesem nazveme zobrazení, které každé hodnotě náhodnou veličinu X ( t)
MARKOVOVY PROCESY JAKO APARÁT PRO ŘEŠENÍ SPOLEHLIVOSTI VÍCESTAVOVÝCH SYSTÉMŮ Náhodné rocesy Náhodným (stochastckým) rocesem nazveme zobrazení, které každé hodnotě náhodnou velčnu X ( t). Proměnná t má
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é
Obor SOČ: 01. Matematika a statistika. p-adická čísla a jejich aplikace v teorii. p-adic numbers and their applications in number theory
STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST Obor SOČ: 0. Matematika a statistika -adická čísla a jejich alikace v teorii čísel -adic numbers and their alications in number theory Autor: Škola: Konzultant: Vladimír Sedláček
Markovovy řetězce se spojitým časem CTMC (Continuous time Markov Chain)
Markovovy řetězce se soitým časem CTMC (Continuous time Markov Chain) 3 5 1 4 Markovovy rocesy X Diskrétní stavový rostor Soitý obor arametru t { } S e1, e,, en t R t 0 0 t 1 t t 3 t Proces e Markovův
, : (vzor prvku b) q ).
DSM Cv 6 Zobrazení : X Y, X X Y Y Je dána relace, : Obraz množiny X v relaci, ( X ) = { y Y; x X :[ x, y] }; v říadě, že X = { a}, íšeme ( a) (obraz rvku a), Vzor množiny Y v relaci, ; v říadě, že ( Y
ADT prioritní fronta. Haldy. Další operace nad haldou. Binární halda. Binomické stromy. Časová složitost jednotlivých operací.
ADT prioritní fronta Haldy množina M operace Přidej(M,x) přidá prvek x do množiny M Odeber(M) odeber z množiny M prvek, který je na řadě Zásobník (LIFO), Fronta (FIFO) Prioritní fronta: Přidej(M,x) přidá
Pokud světlo prochází prostředím, pak v důsledku elektromagnetické interakce s částicemi obsaženými
1 Pracovní úkoly 1. Změřte závislost indexu lomu vzduchu na tlaku n(). 2. Závislost n() zracujte graficky. Vyneste také závislost závislost vlnové délky sodíkové čáry na indexu lomu vzduchu λ(n). Proveďte
7. Měření dutých objemů pomocí komprese plynu a určení Poissonovy konstanty vzduchu Úkol 1: Určete objem skleněné láhve s kohoutem kompresí plynu.
7. Měření dutých objemů omocí komrese lynu a určení Poissonovy konstanty vzduchu Úkol : Určete objem skleněné láhve s kohoutem komresí lynu. Pomůcky Měřený objem (láhev s kohoutem), seciální lynová byreta
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 p-v diagramu je tento proces znázorněn hyperbolou spojující body obou stavů plynu, je to tzv. izoterma :
Jednoduché vratné děje ideálního lynu ) Děj izoter mický ( = ) Za ředokladu konstantní teloty se stavová rovnice ro zadané množství lynu změní na známý zákon Boylův-Mariottův, která říká, že součin tlaku
a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:
Řešené příklady z lineární algebry - část 1 Typové příklady s řešením Příklady jsou určeny především k zopakování látky před zkouškou, jsou proto řešeny se znalostmi učiva celého semestru. Tento fakt se
Charaktery v teorii čísel, kubický a bikvadratický
UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA K A T E D R A A L G E B R Y A G E O M E T R I E DIPLOMOVÁ PRÁCE Charaktery v teorii čísel, kubický a bikvadratický zákon vzájemnosti Vedoucí dilomové
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
7. VÝROBNÍ ČINNOST PODNIKU
7. Výrobní činnost odniku Ekonomika odniku - 2009 7. VÝROBNÍ ČINNOST PODNIKU 7.1. Produkční funkce teoretický základ ekonomiky výroby 7.2. Výrobní kaacita Výrobní činnost je tou činností odniku, která
Téma 7: Přímý Optimalizovaný Pravděpodobnostní Výpočet POPV
Téma 7: Přímý Otimalizovaný Pravděodobnostní Výočet POPV Přednáška z ředmětu: Pravděodobnostní osuzování konstrukcí 4. ročník bakalářského studia Katedra stavební mechaniky Fakulta stavební Vysoká škola
k-dimenzionálním prostoru. problém: Zkonstruovat strom, který rozděluje prostor polorovinami
kd-stromy (kd-trees) k čemu to je: ukládání vícerozměrných dat (k-dimenzionální data) vstup: Množina bodů (nebo složitějších geometrických objektů) v k-dimenzionálním prostoru. problém: Zkonstruovat strom,
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
Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,
Stromové rozklady Zdeněk Dvořák 25. října 2017 Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom, β je funkce přiřazující každému vrcholu T podmnožinu vrcholů v G, pro každé
Systém adresace paměti
Systém adresace paměti Základní pojmy Adresa fyzická - adresa, která je přenesena na adresní sběrnici a fyzicky adresuje hlavní paměť logická - adresa, kterou má k dispozici proces k adresaci přiděleného
1 Linearní prostory nad komplexními čísly
1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)
NÁVRH A OVĚŘENÍ BETONOVÉ OPŘENÉ PILOTY ZATÍŽENÉ V HLAVĚ KOMBINACÍ SIL
NÁVRH A OVĚŘENÍ BETONOVÉ OPŘENÉ PILOTY ZATÍŽENÉ V HLAVĚ KOMBINACÍ SIL 1. ZADÁNÍ Navrhněte růměr a výztuž vrtané iloty délky L neosuvně ořené o skalní odloží zatížené v hlavě zadanými vnitřními silami (viz
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)
Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout
Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní graf má stromovou šířku nejvýše k, a je-li tomu tak, také vrátí příslušný stromový rozklad. Poznamenejme, že je-li k součástí vstupu,
V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti
Kapitola 5 Vektorové prostory V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti operací sčítání a násobení
KLUZNÁ LOŽISKA. p s. Maximální měrný tlak p Max (MPa) Střední měrný tlak p s (Mpa) Obvodová rychlost v (m/s) Součin p s a v. v 60
KLUZNÁ LOŽIKA U PM oužití ro uložení ojnic, klikovýc a vačkovýc řídelů, vaadel a kol rovodů, Zde dnes výradně kluná ložiska s řívodem tlakovéo maacío oleje. Pro rvní návr se oužívá nejjednoduššíc metod
Kvantová a statistická fyzika 2 (Termodynamika a statistická fyzika)
Kvantová a statistická fyzika 2 (ermodynamika a statistická fyzika) ermodynamika ermodynamika se zabývá zkoumáním obecných vlastností makroskoických systémů v rovnováze, zákonitostmi makroskoických rocesů,
Úlohy domácí části I. kola kategorie C
65. ročník Matematické olymiády Úlohy domácí části I. kola kategorie C. Najděte všechny možné hodnoty součinu rvočísel, q, r, ro která latí (q + r) = 637. Řešení. evou stranu dané rovnice rozložíme na
Jarníkův algoritmus. Obsah. Popis
1 z 6 28/05/2015 11:44 Jarníkův algoritmus Z Wikipedie, otevřené encyklopedie Jarníkův algoritmus (v zahraničí známý jako Primův algoritmus) je v teorii grafů algoritmus hledající minimální kostru ohodnoceného
BH059 Tepelná technika budov Konzultace č. 2
Vysoké učení technické v Brně Fakulta stavební Ústav ozemního stavitelství BH059 Teelná technika budov Konzultace č. 2 Zadání P6 zadáno na 2 konzultaci, P7 bude zadáno Průběh telot v konstrukci Kondenzace
TGH05 - aplikace DFS, průchod do šířky
TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 28. března 2017 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující