Kontakt. Naučit se navrhovat a analyzovat netriviální datové struktury. registrováni na SISu

Podobné dokumenty
Kontakt. Naučit se navrhovat a analyzovat netriviální datové struktury. registrováni na SISu

Definice obecné mocniny

Datové struktury I NTIN066. Literatura. Obsah. Obsah. Obsah. Kontant. Metody

Příklady z finanční matematiky I

8.3.1 Vklady, jednoduché a složené úrokování

c) Pomocí Liouvillovy věty dokažte, že Liouvillovo číslo je transcendentí. xp 1 (p 1)! (x 1)p (x 2) p... (x d) p e x t f(t) d t = F (0)e x F (x),

PRAVDĚPODOBNOST ... m n

IAJCE Přednáška č. 12

Vícekanálové čekací systémy

Kapitola 5 - Matice (nad tělesem)

Národní informační středisko pro podporu kvality

základním prvkem teorie křivek v počítačové grafice křivky polynomiální n

3. Lineární diferenciální rovnice úvod do teorie

Přednáška č. 10 Analýza rozptylu při jednoduchém třídění

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Algoritmus

8.2.1 Aritmetická posloupnost I

Matematika 1. Katedra matematiky, Fakulta stavební ČVUT v Praze. středa 10-11:40 posluchárna D / 13. Posloupnosti

MATEMATICKÁ INDUKCE. 1. Princip matematické indukce

Komplexní čísla. Definice komplexních čísel

Vyhledávání v tabulkách

MATICOVÉ HRY MATICOVÝCH HER

je konvergentní, právě když existuje číslo a R tak, že pro všechna přirozená <. Číslu a říkáme limita posloupnosti ( ) n n 1 n n n

Sekvenční logické obvody(lso)

je konvergentní, právě když existuje číslo a R tak, že pro všechna přirozená <. Číslu a říkáme limita posloupnosti ( ) n n 1 n n n

Deskriptivní statistika 1

8.1.3 Rekurentní zadání posloupnosti I

můžeme toto číslo považovat za pravděpodobnost jevu A.

jako konstanta nula. Obsahem centrálních limitních vět je tvrzení, že distribuční funkce i=1 X i konvergují za určitých

3. Decibelové veličiny v akustice, kmitočtová pásma

8.2.1 Aritmetická posloupnost

OKRUŽNÍ A ROZVOZNÍ ÚLOHY: OBCHODNÍ CESTUJÍCÍ. FORMULACE PŘI RESPEKTOVÁNÍ ČASOVÝCH OKEN

Petr Šedivý Šedivá matematika

Tento materiál vznikl díky Operačnímu programu Praha Adaptabilita CZ.2.17/3.1.00/33254

Iterační výpočty projekt č. 2

1 POPISNÁ STATISTIKA V PROGRAMU MS EXCEL

O Jensenově nerovnosti

Přednáška 7, 14. listopadu 2014

Princip paralelního řazení vkládáním (menší propadává doprava)

Znegujte následující výroky a rozhodněte, jestli platí výrok, nebo jeho negace:

TECHNICKÝ POPIS STRUKTURY FORMÁTU VÝPISU MT940 PRO SLUŽBU BUSINESS 24

1.3. POLYNOMY. V této kapitole se dozvíte:

ASYNCHRONNÍ STROJE. Obsah

Dynamické programování

Matematika I, část II

12. N á h o d n ý v ý b ě r

Užití binomické věty

6. Posloupnosti a jejich limity, řady

DERIVACE FUNKCÍ JEDNÉ REÁLNÉ PROM

Úloha III.S... limitní

Matematika 1. Ivana Pultarová Katedra matematiky, Fakulta stavební ČVUT v Praze. středa 10-11:40 posluchárna D Posloupnosti

6 Intervalové odhady. spočteme aritmetický průměr, pak tyto průměry se budou chovat jako by pocházely z normálního. nekonečna.

Datové struktury I NTIN066

Cvičení 6.: Výpočet střední hodnoty a rozptylu, bodové a intervalové odhady střední hodnoty a rozptylu

Entropie, relativní entropie a sdílená (vazební) informace

f x a x DSM2 Cv 9 Vytvořující funkce Vytvořující funkcí nekonečné posloupnosti a0, a1,, a n , reálných čísel míníme formální nekonečnou řadu ( )

5.5. KOMPLEXNÍ ODMOCNINA A ŘEŠENÍ KVADRATICKÝCH A BINOMICKÝCH ROVNIC

6. FUNKCE A POSLOUPNOSTI

PRAVDĚPODOBNOST A STATISTIKA. Náhodná proměnná vybraná rozdělení

Abstrakt. Co jsou to komplexní čísla? K čemu se používají? Dá se s nimi dělat

Matematická analýza I

Obsah. 1 Mocninné řady Definice a vlastnosti mocninných řad Rozvoj funkce do mocninné řady Aplikace mocninných řad...

6.2. ČÍSELNÉ ŘADY. V této kapitole se dozvíte:

11. přednáška 16. prosince Úvod do komplexní analýzy.

Popis formátu importu tuzemských a zahraničních plateb

Cvičení 6.: Bodové a intervalové odhady střední hodnoty, rozptylu a koeficientu korelace, test hypotézy o střední hodnotě při známém rozptylu

Pravděpodobnost a aplikovaná statistika

1. Číselné obory, dělitelnost, výrazy

2. Úvod do indexní analýzy

2,3 ČTYŘI STANDARDNÍ METODY I, ČTYŘI STANDARDNÍ METODY II

8. Analýza rozptylu.

1. ZÁKLADY VEKTOROVÉ ALGEBRY 1.1. VEKTOROVÝ PROSTOR A JEHO BÁZE

je číselná posloupnost. Pro všechna n položme s n = ak. Posloupnost

Mod(x) = 2, Med(x) = = 2

procesy II Zuzana 1 Katedra pravděpodobnosti a matematické statistiky Univerzita Karlova v Praze

NEPARAMETRICKÉ METODY

Analýza a zpracování signálů. 4. Diskrétní systémy,výpočet impulsní odezvy, konvoluce, korelace

1 Trochu o kritériích dělitelnosti

Kvantová a statistická fyzika 2 (Termodynamika a statistická fyzika)

8.3.2 Inflace, spoření

DISKRÉTNÍ MATEMATIKA PRO INFORMATIKY

Přijímací řízení akademický rok 2012/2013 Kompletní znění testových otázek matematické myšlení

7 Obyčejné diferenciální rovnice

Intervalové odhady parametrů

i 1 n 1 výběrový rozptyl, pro libovolné, ale pevně dané x Roznačme n 1 Téma 6.: Základní pojmy matematické statistiky

Aritmetická posloupnost, posloupnost rostoucí a klesající Posloupnosti

Úloha II.S... odhadnutelná

Geometrická optika. Zákon odrazu a lomu světla

Budeme pokračovat v nahrazování funkce f(x) v okolí bodu a polynomy, tj. hledat vhodné konstanty c n tak, aby bylo pro malá x a. = f (a), f(x) f(a)

Náhodný výběr 1. Náhodný výběr

S polynomy jste se seznámili již v Matematice 1. Připomeňme definici polynomické

jsou reálná a m, n jsou čísla přirozená.

M - Posloupnosti VARIACE

6 VYBRANÁ ROZDLENÍ DISKRÉTNÍ NÁHODNÉ VELIINY

5. Posloupnosti a řady

13 Popisná statistika

Přijímací řízení akademický rok 2013/2014 Bc. studium Kompletní znění testových otázek matematika

1 Uzavřená Gaussova rovina a její topologie

Lineární programování

Diskrétní matematika

Odhady parametrů 1. Odhady parametrů

Transkript:

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é iformatiky a matematické loiky Matematicko-fyzikálí fakulta Uiverzita Karlova v Praze Zimí semestr 08/9 Posledí změa 6. úora 09 Licece: reative ommos Y-N-S 4.0 íle ředmětu Naučit se avrhovat a aalyzovat etriviálí datové struktury Porozumět jejich chováí jak asymtoticky, tak a reálém očítači Zajímá ás eje chováí v ejhorším říadě, ale i růměrě/amortizovaě Nebudujeme obecou teorii všech DS ai erobíráme všechy variaty DS, ale ukazujeme a říkladech růzé ostuy a riciy Jirka Fik Datové struktury I Jirka Fik Datové struktury I Záočet: Domácí úkoly Podmíky ude zadáo ět domácích úkolů o 0 bodech K získáí záočtu je uté získat alesoň 0 bodů Úkol = imlemetace DS + měřeí + rafy + zdůvoděí výsledků Úkol musí být odevzdá včas a DS musí být fukčí Důrazě dooručujeme oužívat /++, i když ovolujeme i Javu a # Neoužívejte cizí kód ai kihovy třetích stra K imlemetaci DS eoužívejte ai stadardí kihovy (ai std::list, std::vector, etc.) Úkoly jsou zadáváy cetrálě, ale oravuje je vyučující, u kterého jste reistrovái a SISu Při odevzdáí v ředtermíu můžete avíc získat 0 bodů ebo oslat oraveé řešeí Přesá ravidla a vzorový říklad jsou a webu ředášky Jirka Fik Datové struktury I Jirka Fik Datové struktury I 4 Nové ředměty Motivace Na cvičeích se ředevším rozebírají domácí úkoly Nezbývá moho času a rocvičeí Řada studetů eumí imlemetovat datové struktury v rozumém čase bez zdlouhavého hledáí chyb alýza datových struktur (NTIN05) Návrh a aalýza datových struktur, které zazěly a ředášce, ale a jejich zkoumáí eí a klasickém cvičeí čas Vyučující: Marti Mareš Rozvrh bude umluve o emailu (mares+ds@kam.mff.cui.cz) Nové ředměty Imlemetace datových struktur (NTIN06) Naučit studety efektivě imlemetovat datové struktury v rozumém čase bez úavého hledáí chyb Vyučující: Jirka Fik Rozvrh: středa, 7:0, S4 Návrh imlemetace datových struktur licatio rorammi iterface Uit a iterity testy Imlemetace bez rekurze (a zásobíku) Sojový sezam, stromy,... Sráva aměti Paralelí roramováí bez zámků Imlemetace ástrojů vyšších roramovacích jazyků v /RM Diskuze růzých imlemetací domácích úkolů, testováí a zkušeostí Záočet: receze řešeí domácích úkolů ostatích studetů (code review) Jirka Fik Datové struktury I 5 Jirka Fik Datové struktury I 6 Literatura. Koubková, V. Koubek: Datové struktury I. MTFYZPRESS, Praha 0. T. H. orme,.e. Leiserso, R. L. Rivest,. Stei: Itroductio to lorithms. MIT Press, 009 K. Mehlhor: Data Structures ad lorithms I: Sorti ad Searchi. Srier-Verla, erli, 984 D. P. Mehta, S. Sahi eds.: Hadbook of Data Structures ad licatios. hama & Hall/R, omuter ad Iformatio Series, 005 E. Demaie: ache-oblivious lorithms ad Data Structures. 00. R. Pah: uckoo Hashi for Uderraduates. Lecture ote, 006. M. Thoru: Hih Seed Hashi for Iteers ad Stris. Lecture otes, 04. M. Thoru: Stri hashi for liear robi (Sectios 5.-5.4). I Proc. 0th SOD, 655-664, 009. Ikremetace biárího čítače Dyamické ole Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 8

mortizovaá aalýza Motivace Uvažujme datovou struktury, která zvládá ějakou oeraci většiou velmi rychle. le občas otřebuje reoraizovat svoji vitří struktury, což oeraci v těchto výjimečých říadech začě zomaluje. Tudíž je časová složitost v ejhorším říadě velmi šatá. Představme si, že aše datová struktura je oužita v ějakém aloritmu, který oeraci zavolá mohokrát. V této situaci složitost aloritmu ovlivňuje celkový čas moha oerací, ikoliv složitost oerace v ejhorším říadě. íl: hceme zjistit růměrou hodotu časových složitostí oslouosti oerací, říadě celkovou složitost oslouosti oerací. Metody výočtu amortizovaé složitosti reovaá aalýza Účetí metoda Poteciálí metoda Ikremetace biárího čítače Dyamické ole Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 0 Ikremetace biárího čítače: reovaá aalýza Ikremetace biárího čítače: Účetí metoda iárí čítač Máme -bitový čítač iicializovaý libovolou hodotou Při oeraci INREMENT se osledí ulový bit změí a a všechy ásledující jedičkové bity se změí a 0 Počet změěých bitů v ejhorším říadě je Kolik bitů se změí ři k oeracích INREMENT? reovaá aalýza Posledí bit se změí ři každé oeraci tedy k-krát Předosledí bit se změí ři každé druhé oeraci ejvýše k/ -krát i-tý bit od koce se změí každých i oerací ejvýše k/ i -krát elkový očet změ bitů je ejvýše i=0 k/ i i=0 ( + k/i ) + k i=0 /i + k Časová složitost k oerací INREMENT ad -bitovým čítačem je O( + k) Jestliže k = Ω(), ak amortizovaá složitost a jedu oerace je O() Účetí metoda Změa jedoho bitu stojí jede žeto a a každou oeraci dostaeme dva žetoy Ivariat: U každého jedičkového bitu si uschováme jede žeto Při ikremetu máme vyulováí jedičkových bitů ředlaceo Oba žetoy oskytuté k vykoáí oerace využijeme a jediou změu ulového bitu a jedičku a ředlaceí jeho vyulováí Na začátku otřebujeme dostat ejvýše žetoů elkově dostaeme a k oerací + k žetoů mortizovaý očet změěých bitů ři jedé oeraci je O() za ředokladu k = Ω() Jirka Fik Datové struktury I Jirka Fik Datové struktury I Ikremetace biárího čítače: Poteciálí metoda Poteciálí metoda Poteciál ulového bitu je 0 a oteciál jedičkového bitu je Poteciál čítače je součet oteciálů všech bitů Poteciál o rovedeí j-té oerace ozačme Φ j skutečý očet změěých bitů ři j-té oeraci ozačme T j hceme sočítat amortizovaý očet změěých bitů, který ozačíme Pro každou oeraci j musí latit T j + (Φ j Φ j) ro libovolou oeraci j Podobě jako v účetí metodě dostáváme T j + (Φ j Φ j ) elkový očet změěých bitů ři k oeracích je V tomto triviálím říkladu je oteciál řesě očet žetoů v účetí metodě. Φ 0 je oteciál řed rovedeí rví oerace a Φ k je oteciál o osledí oeraci. Toto je zásadí fakt amortizovaé aalýzy. Poteciál je jako baka, do které můžeme uložit eíze (čas), jestliže oerace byla levá (rychle rovedeá). Při drahých (dlouho trvajících) oeracích musíme aoak z baky vybrat (sížit oteciál), abychom oeraci zalatili (stihli rovést v amortizovaém čase). V amortizovaé aalýze je cílem ajít takovou oteciálí fukci, že ři rychle rovedeé oeraci oteciál dostatečě vzroste a aoak ři dlouho trvajících oerací oteciál eklese říliš moc. 4 Součtu k j= (Φj Φj) = Φ0 Φk se říká teleskoická suma a teto ástroj budeme často oužívat. k k T j ( + Φ j Φ j) k + Φ 0 Φ k k +, j= j= rotože 0 Φ j 4 Jirka Fik Datové struktury I Jirka Fik Datové struktury I Poteciálí metoda Defiice Poteciál Φ je fukce, která každý stav datové struktury ohodotí ezáorým reálým číslem. Oerace ad datovou strukturou má amortizovaou složitost, jestliže libovolé vykoáí oerace slňuje T + ( Φ(S) Φ(S ) ), kde T je skutečý čas utý k vykoáí oerace, S je stav řed jejím vykoáím a S je stav o vykoáí oerace. Příklad: Ikremetace biárího čítače Poteciál Φ je defiová jako očet jedičkových bitů v čítači Skutečý čas T je očet změěých bitů ři jedé oeraci INREMENT mortizovaý čas je Platí T + (Φ(S) Φ(S )) Ikremetace biárího čítače Dyamické ole Jirka Fik Datové struktury I 4 Jirka Fik Datové struktury I 5

Dyamické ole Dyamické ole Máme ole, do kterého řidáváme i mažeme rvky Počet rvků ozačíme a velikost ole Jestliže = a máme řidat další rvek, tak velikost ole zdvojásobíme Jestliže = 4 a máme smazat rvek, tak velikost ole zmešíme a oloviu Ituitiví řístu Zkoírováí celého ole trvá O() Jestliže o realokaci ole máme rvků, ak další realokace astae ejdříve o / oeracích INSERT ebo DELETE mortizovaá složitost je O() Přesěji: Uvažujeme řidáváí a mazáí rvků ze zásobíku. V aalýze očítáme ouze čas a realokaci ole. Všechy ostatí čiost ři oeracích INSERT i DELETE trvají O() v ejhorším čase. Zajímá ás očet zkoírovaých rvků ři realokaci, rotože ředokládáme, že koírováí jedoho rvku trvá O(). Po realokaci a zkoírováí je ové ole z oloviy lé. Musíme tedy řidat rvků ebo smazat / rvků, aby došlo k další realokaci. 4 Nejhorším říadem je oslouost INSERT, kdy zdvojásobíme očet rvků, které oté musíme realokovat. reovaá aalýza: elkový čas Necht k i je očet oerací mezi (i ) a i-tou realokací i ki = k Při rví realokaci se koíruje ejvýše 0 + k rvků, kde 0 je očátečí očet Při i-té realokaci se koíruje ejvýše k i rvků, kde i 4 elkový očet zkoírovaých rvků je ejvýše 0 + k + i ki 0 + k Jirka Fik Datové struktury I 6 Jirka Fik Datové struktury I 6 Dyamické ole Poteciálí metoda Uvažujme oteciál 0 okud = Φ = okud = okud = 4 a tyto tři body rozšíříme o částech lieárí fukcí Elicitě Φ = { okud / okud okud řidáváme a Φ okud mažeme a Φ = okud řidáváme a okud mažeme a Změa oteciálu ři jedé oeraci bez realokace je Φ Φ Skutečý očet zkoírovaých rvků T vždy slňuje T + (Φ Φ) elkový očet zkoírovaých rvků ři k oeracích je ejvýše k + Φ 0 Φ k k + 0 elkový čas k oerací je O( 0 + k) mortizovaý čas jedé oerace je O() Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 7 [α]-strom Slay stromy (a,b)-stromy Červeo-čerý strom iárí vyhledávací strom Vlastosti Příklad iárí strom (každý vrchol obsahuje ejvýše dva syy) Klíč v každém vitřím vrcholu je větší ež všechy klíče v levém odstromu a meší ež všechy klíče v ravém odstromu Prvky mohou být uložey ouze v listech ebo též ve vitřích vrcholech (u každého klíče je uložea i hodota) 0 5 7 4 6 9 Složitost Pamět : O() Časová složitost oerace Fid je lieárí ve výšce stromu Výška stromu může být až Jirka Fik Datové struktury I 8 Jirka Fik Datové struktury I 9 Váhově vyvážeé stromy: [α]-strom [α]-strom (Nieverelt, Reiold [8]) [α]-strom Slay stromy (a,b)-stromy Červeo-čerý strom iárí vyhledávací strom Počet vrcholů v odstromu vrcholu u ozačme s u Pro každý vrchol u latí, že odstromy obou syů u musí mít ejvýše αs u vrcholů Zřejmě musí latit < α < 4 Výška [α]-stromu Podstromy všech vuků kořee mají ejvýše α vrcholů Podstromy všech vrcholů v i-té vrstvě mají ejvýše α i vrcholů α i je ro i lo () α Výška [α]-stromu je Θ(lo ) Oerace UILD: Vytvořeí [α]-stromu ze setříděého ole Prostředí rvek dáme do kořee Rekurzivě vytvoříme oba odstromy Časová složitost je O() Jirka Fik Datové struktury I 0 Jirka Fik Datové struktury I

V ředášce budeme ředokládat, že rvky jsou uložey ve všech vrcholech, i když eistuje variata [α]-stromů mající rvky je v listech. Do s u zaočítáváme i vrchol u. V literatuře můžeme ajít růzé variaty této odmíky. Podstaté je, aby oba odstromy každého vrcholu měli zhruba stejý očet vrcholů. 4 Pro α = lze [α]-strom sestrojit, ale oerace INSERT a DELETE by byly časově áročé. Pro α = by výška [α]-strom mohla být lieárí. [α]-strom: Oerace INSERT a DELETE Oerace INSERT (DELETE je aaloický) Najít list ro ový rvek a uložit do ěho ový rvek (složitost: O(lo )) Jestliže ěkterý vrchol orušuje vyvažovací odmíku, tak celý jeho odstrom zovu vytvoříme oerací UILD (složitost: amortizovaá aalýza) mortizovaá časová složitost oerací INSERT a DELETE: reovaá metoda Jestliže odstrom vrcholu u o rovedeí oerace UILD má s u vrcholů, ak další orušeí vyvažovací odmíky ro vrchol u astae ejdříve o Ω(s u) řidáí/smazáí rvků v odstromu vrcholu u (cvičeí) Rebuild odstromu vrcholu u trvá O(s u) mortizovaý čas vyvažovaí jedoho vrcholu je O() Při jedé oeraci INSERT/DELETE se rvek řidá/smaže v Θ(lo ) odstromech mortizovaý čas vyvažovaí ři jedé oeraci INSERT ebo DELETE je O(lo ) Jaký je celkový čas k oerací? 4 Jirka Fik Datové struktury I Jirka Fik Datové struktury I Při hledáí listu ro ový vrchol stačí a cestě od kořee k listu kotrolovat, zda se řidáím vrcholu do odstromu sya eoruší vyvažovací odmíka. Pokud se v ějakém vrcholu odmíka oruší, tak se hledáí ukočí a celý odstrom včetě ového rvku zovu vybuduje. Eistují ravidla ro rotováí [α]-stromů, ale ta se ám des ehodí. Oerace UILD odstromu vrcholu u trvá O(s u) a mezi dvěma oeracemi UILD odstromu u je Ω(s u) oerací INSERT ebo DELETE do odstromu u. Všiměte si aaloie a dyamickým olem. 4 Ituitivě bychom mohli říct, že v ejhorším říadě [α]-strom ejrve vyvážíme v čase O() a oté rovádíme jedotlivé oerace, a roto celkový čas je O( + k lo ), ale eí to ravda. Proč? [α]-strom: Oerace INSERT a DELETE mortizovaá časová složitost oerací INSERT a DELETE: Poteciálí metoda V této aalýze uvažujeme je čas a ostaveí odstromu, zbytek trvá O(lo ) Poteciál vrcholu u defiová { 0 okud s l(u) s r(u) Φ(u) = s l(u) s r(u) jiak, kde l(u) a r(u) jsou levý a ravý syové u. Poteciál [α]-stromu Φ je součet oteciálů vrcholů Při vložeí/smazáí rvku se oteciál Φ(u) jedoho vrcholu zvýší ejvýše o Pokud eastae Rebuild, ak se oteciál stromu zvýší ejvýše o O(lo()) Pokud astae Rebuild vrcholu u, ak Φ(u) αs u ( α)s u (α )s u Po rekostrukci mají všechy vrcholy v odstromu u ulový oteciál Při rekostrukci oklese oteciál Φ alesoň o Ω(s u), což zalatí čas a rekostrukci Dále latí 0 Φ h = O( lo ), kde h je výška stromu 4 elkový čas a k oerací INSERT ebo DELETE je O((k + ) lo ) Jirka Fik Datové struktury I Jirka Fik Datové struktury I Poteciál se změí rávě o, jestli rozdíl velikostí odstromů se změí z a ebo oačě. Jiak se oteciál změí rávě o. Poteciál se může změit ouze vrcholům a cestě z kořee do ového/smazaého vrcholu a těch je O(lo ). Právě zde otřebujeme, aby oteciál vrcholu byl ulový, i když se velikosti odstromů jeho syů liší o jeda. 4 Součet oteciálů všech vrcholů v jedé libovolé vrstvě je ejvýše, rotože každý vrchol atří do ejvýše jedoho odstromu vrcholu z daé vrstvy. Tudíž oteciál stromu Φ je vždy ejvýše h. Též lze ahlédout, že každý vrchol je zaočítá v ejvýše h oteciálech vrcholů. [α]-strom Slay stromy (a,b)-stromy Červeo-čerý strom Jirka Fik Datové struktury I Jirka Fik Datové struktury I 4 Staticky otimálí strom Slay strom (Sleator, Tarja [6]): Oerace SPLY rvku íl Pro daou oslouost oerací FIND ajít biárí vyhledávací strom miimalizující celkovou dobu vyhledáváí. Zi rotace: Otec rvku je koře Formálě Máme rvky,..., s váhami w,..., w. ea stromu je i= wihi, kde hi je hloubka rvku i. Staticky otimálí strom je biárí vyhledávací strom s miimálí ceou. Kostrukce (cvičeí) O ( ) triviálě dyamickým roramováím O ( ) vylešeé dyamické roramováí (Kuth [4]) Jak ostuovat, když ezáme váhy ředem? Pomocí rotací bude udržovat často vyhledávaé rvky blízko kořee Oerací SPLY rotujeme zadaý rvek až do kořee Oerace FIND vždy volá SPLY a hledaý rvek Zi-zi rotace: a jsou oba ravými ebo oba levými syy D D Zi-za rotace: je ravý sy a je levý sy ebo oačě D D Jirka Fik Datové struktury I 5 Jirka Fik Datové struktury I 6

Uvažujeme buttom-u verzi, tj. rvek ejrve ajdeme a oté jej ostuě rotujeme ahoru, což zameá, že vždy začí stejý vrchol ostuě se řesouvající ke kořei a ostatí vrcholy stromu jsou sousedé odovídající daé rotaci. Eistuje též to-dow verze [6], která vždy rotuje vuka kořee, jehož odstrom obsahuje rvek. Tato verze je sice v rai rychlejší, ale ostu a aalýza jsou složitější. Slay strom: Oerace SPLY rvku Zi-za rotace jsou ouze dvě jedoduché rotace rvku s aktuálím otcem D D D Zi-zi rotace jsou taky dvě rotace, D D D ale dvě rotace rvku s aktuálím otcem by vedli ke šatému výsledku D D D Jirka Fik Datové struktury I 6 Jirka Fik Datové struktury I 7 Slay strom: mortizovaá aalý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 erovostí (a b) 0 a a + b c lye 4ab c Zloaritmováím dostáváme lo (4) + lo (a) + lo (b) lo (c ) Lemma můžeme též dokázat omocí Jeseovy erovosti, která tvrdí: Jestliže f je koveí fukce,,..., jsou čísla z defiičího oboru f a w,..., w jsou kladé váhy, ak latí erovost f ( i= wii i= wi ) i= wif (i). i= wi Jelikož fukce lo je rostoucí a kokáví, dostáváme lo(a) + lo(b) a + b lo lo(c), z čehož lye zěí lemmatu. Začeí Necht velikost s() je očet vrcholů v odstromu (včetě ) Poteciál vrcholu je Φ() = lo (s()) Poteciál Φ stromu je součet oteciálů všech vrcholů s a Φ jsou velikosti a oteciály o jedé rotaci Předkládáme, že jedoduchou rotaci zvládeme v jedotkovém čase Jirka Fik Datové struktury I 8 Jirka Fik Datové struktury I 8 Slay strom: Zi rotace Slay strom: Zi-za rotace D D alýza Φ () = Φ() Φ () < Φ () Φ (u) = Φ(u) ro všechy ostatí vrcholy u Φ Φ = (Φ (u) Φ(u)) u = Φ () Φ() + Φ () Φ() Φ () Φ() alýza Φ () = Φ() Φ() < Φ() Φ () + Φ () Φ () s () + s () s () Z lemmatu lye lo (s ()) + lo (s ()) lo (s ()) 4 Φ Φ = Φ () Φ() + Φ () Φ() + Φ () Φ() (Φ () Φ()) Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 0 Slay strom: Zi-zi rotace D D alýza Φ () = Φ() Φ() < Φ() Φ () < Φ () s() + s () s () Φ() + Φ () Φ () Φ Φ = Φ () Φ() + Φ () Φ() + Φ () Φ() (Φ () Φ()) Slay strom: alýza mortizovaý čas mortizovaý čas jedé zizi ebo ziza rotace: T + Φ Φ + (Φ () Φ()) = (Φ () Φ()) mortizovaý čas jedé zi rotace: T + Φ Φ + Φ () Φ() + (Φ () Φ()) Necht Φ i je oteciál o i-tém kroku a T i je skutečý čas i-tého kroku mortizovaý čas (očet jedoduchých rotací) jedé oerace SPLY: (T i + Φ i Φ i ) + (Φ i() Φ i ()) i-tá rotace i-tá rotace + (Φ koec() Φ 0()) + lo = O(lo ) mortizovaý čas jedé oerace SPLY je O(lo ) Skutečý čas k oerací SPLY Poteciál vždy slňuje 0 Φ lo Rozdíl mezi koečým a očátečím oteciálem je ejvýše lo elkový čas k oerací SPLY je O(( + k) lo ) 4 Jirka Fik Datové struktury I Jirka Fik Datové struktury I

Časy a alezeí rvku a jeho SPLY jsou stejé, a roto aalyzujeme očet rotací ři oeraci SPLY. Neúsěšá oerace FIND dojde až k vrcholu mající NULL v ukazateli, a kterém se vyhledáváí zastaví. Na teto osledí vrchol je uté zavolat SPLY, aby oakovaá eúsěšá vyhledáváí měla amortizovaou loaritmickou složitost. T začí skutečý čas rotace, což je očet jedoduchých rotací k rovedeí rotace zi, zizi ebo ziza. Jedím krokem rozumíme rovedeí jedé zi, ziza ebo zizi rotace. 4 Zi rotaci oužijeme ejvýše jedou a roto zaočítáme +. Rozdíly Φ () Φ() se teleskoicky odečtou a zůstae ám rozdíl oteciálů vrcholu a koci a a začátku oerace SPLY. Na očátku je oteciál vrcholu ezáorý a a koci je kořeem, a roto jeho oteciál je lo (). Slay strom: Oerace INSERT Vložeí rvku Začeme vyhledáváím klíče, které skočí ve vrcholu u SPLY(u) Vložit ový vrchol s rvkem u u L R L R mortizovaá složitost Oerace FIND a SPLY: O(lo ) Vložeím ového vrcholu oteciál Φ vzroste ejvýše o Φ () + Φ (u) lo mortizovaá složitost oerace INSERT je O(lo ) Jirka Fik Datové struktury I Jirka Fik Datové struktury I u obsahuje klíč, který je ejvětší ze všech uložeých klíčů meších ež ebo ejmeší ze všech uložeých klíčů ež. Pokud je meší ebo větší ež všechy klíče, ak je u urče jedozačě, jiak máme volbu ze dvou možých vrcholů. Rozmysleme si, že osledí avštíveý vrchol ři oeraci FINDz klasických biárích vyhledávacích stromů slňuje osaé ožadavky a vrchol u. Pokud echceme mít ve stromu dulicití klíče a klíč vrcholu u je rove, ak vložeí erovedeme. Nicméě je stále uté zavolat SPLY a vrchol u, jiak by oakovaé okusy o vložeí rvku mohli být hodě drahé. Slay strom: Oerace Delete loritmus Slay() L levý odstrom if L je rázdý the 4 Smazat vrchol 5 else 6 Najít ejvětší rvek a v L 7 Slay(a) 8 L levý odstrom a # a emá ravého sya 9 Sloučit vrcholy a a Pokud L je erázdý, tak a L R a R L R L Jirka Fik Datové struktury I Jirka Fik Datové struktury I 4 Další vlastosti slay stromů Věta (vyhledáváí rvků v rostoucím ořadí) Jestliže oslouost vyhledáváí S obsahuje rvky v rostoucím ořadí, tak celkový čas a vyhledáváí S ve slay stromu je O(). je oět očet rvků ve stromu a očátečí slay strom může mít rvky rozmístěé libovolě. Každý rvek uložeý ve stromě musíme asoň jedou ajít. Počátečí slay strom může mít rvky rozmístěé libovolě. V dyamické otimalitě může T ři vyhledáváí rovádět rotace, takže může být rychlejší ež staticky otimálí strom, aříklad když S často o sobě vyhledává stejý rvek. Věta (statická otimalita) Necht T je statický strom, c T () je očet avštíveých vrcholů ři hledáí a,..., m je oslouost obsahující všechy rvky. Pak libovolý slay strom rovede O ( m i= ct (i)) oerací ři hledáí,..., m. Hyotéza (dyamická otimalita) Necht T je biárí vyhledávací strom, který rvek hledá od kořee vrcholu obsahující a řitom rovádí libovolé rotace. ea jedoho vyhledáí rvky je očet avštíveých vrcholů lus očet rotací a c T (S) je součet ce vyhledáí rvků v oslouosti S. Pak cea vyhledáí oslouosti S v slay stromu je O( + c T (S)). Jirka Fik Datové struktury I 5 Jirka Fik Datové struktury I 5 Slay stromy: Výhody a alikace Výhody a evýhody Slay stromů Červeo-čeré stromy otřebují v každém vrcholu jede bit a barvu, VL stromy jede bit a rozdíl výšek odstromů syů. Když vyhledáme všechy rvky v rostoucím ořadí, ak strom zdeeeruje a cestu. Proto slay strom eí vhodý v real-time systémech. + Neotřebuje amět a seciálí řízaky + Efektivě využívají rocesorové cache (Temoral locality) - Rotace zomalují vyhledáváí - Vyhledáváí elze jedoduše aralelizovat - Výška stromu může být i lieárí likace ache, virtuálí amět, sítě, file system, komrese dat,... Widows, cc comiler ad GNU ++ library, sed stri editor, Fore Systems etwork routers, Ui malloc, Liu loadable kerel modules,... Jirka Fik Datové struktury I 6 Jirka Fik Datové struktury I 6

. domácí úkol: Slay stromy Stručé zadáí Imlemetujte Slay strom s oeracemi SPLY, FIND, INSERT Imlemetujte aiví Slay strom, který v oeraci SPLY aivě oužívá je jedoduché rotace místo dvojitých Měřte růměrou hloubku hledaého rvku ři oeracích FIND alyzujte závislost růměré hloubky hledaých rvků a očtu rvků v Slay stromu a velikosti hledaé odmožiy alyzujte růměrou hloubku hledaých rvků v ěkolika testech Naište roram, který sočítá růměrou hloubek rvků ve staticky otimálím stromu ro daou oslouost vyhledáváí Srovejte růměré hloubky hledaých rvků ve Slay stromu a ve staticky otimálím stromu Termí odevzdáí: 8. 0. 08, ředtermí.0.08 Geerátor dat a další odrobosti: htts://ktiml.mff.cui.cz/ fik/ [α]-strom Slay stromy (a,b)-stromy Červeo-čerý strom Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 8 Vyhledávací strom (a,b)-strom (ayer, Mcreiht []) Vlastosti Vitří vrcholy mají libovolý očet syů (tyicky alesoň dva) Vitří vrchol s k syy má k setříděých klíčů V každém vitřím vrcholu je i-tý klíč větší ež všechy klíče v i-tém odstromu a meší ež všechy klíče v (i + ) odstromu ro všechy klíče i Prvky mohou být uložey ouze v listech ebo též ve vitřích vrcholech (u každého klíče je uložea i hodota) Vlastosti a, b jsou celá čísla slňující a a b a (a,b)-strom je vyhledávací strom Všechy vitří vrcholy kromě kořee mají alesoň a syů a ejvýše b syů Koře má ejvýše b syů Všechy listy jsou ve stejé výšce Pro zjedodušeí uvažujeme, že rvky jsou je v listech Příklad 0 Příklad: (,4)-strom 5 8 5 0 5 0 4 7 9 7 99 5 8 0 5 4 7 9 99 Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 40 (a,b)-strom: Oerace Isert Vložte rvek s klíčem 4 do ásledujícího (,4)-stromu 5 6 7 5 6 7 8 Nejrve ajdeme srávého otce, jemuž řidáme ový list Oakovaě rozdělujeme vrchol a dva 4 5 6 7 4 5 6 7 8 5 (a,b)-strom: Oerace Isert loritmus Najít otce v, kterému ový rvek atří Přidat ový list do v while de(v) > b do # Najdeme otce u vrcholu v 4 if v je koře the 5 Vytvořit ový koře u s jediým syem v 6 else 7 u otec v # Rozdělíme vrchol v a v a v 8 Vytvořit ového sya v otci u a umístit jej vravo vedle v 9 Přesuout ejravějších (b + )/ syů vrcholu v do v 0 Přesuout ejravějších (b + )/ klíčů vrcholu v do v Přesuout osledí klíč vrcholu v do u v u 4 4 5 6 7 6 7 8 Časová složitost Lieárí ve výšce stromu (ředokládáme, že a, b jsou evé arametry) Jirka Fik Datové struktury I 4 Jirka Fik Datové struktury I 4 Musíme ještě dokázat, že o rovedeí všech oerací dooravdy dostaeme (a,b)-strom. Ověříme, že rozděleé vrcholy mají alesoň a syů (ostatí ožadavky jsou triviálí). Rozdělovaý vrchol má a očátku rávě b + syů a očet syů o rozděleí je b+ a b+. Protože b a, očet syů o rozděleí je alesoň b+ a + = a = a. (a,b)-strom: Oerace Delete Smažte rvek s klíčem 4 z ásledujícího (,4)-stromu 5 4 4 5 6 7 6 7 8 Nalezeme a smažeme list 5. 5 6 7 6 7 8 Přesueme jedo sya od bratra ebo sojíme vrchol s bratrem 6 5 5 7 6 7 5 6 7 8 5 6 7 8 Jirka Fik Datové struktury I 4 Jirka Fik Datové struktury I 4

(a,b)-strom: Oerace Delete Při řesuu je uté uravit klíče ve vrcholech u, v a jejich otci. Vrchol u měl a, vrchol v měl a syů. Po jejich sjedoceí máme vrchol s a b syy. loritmus Najít list l obsahující rvek s daým klíčem v otec l Smazat l 4 while de(v) < a & v eí koře do 5 u sousedí bratr v 6 if de(u) > a the 7 Přesuout srávého sya u od v 8 else 9 Přesuout všechy syy u od v 0 Smazat u if v emá žádého bratra the Smazat koře (otec v) a astavit v jako koře else 4 v otec v Jirka Fik Datové struktury I 44 Jirka Fik Datové struktury I 44 (a,b)-strom: alýza Výška (a,b)-strom výšky d má alesoň a d a ejvýše b d listů. Výška (a,b)-stromu slňuje lo b d + lo a. Při jedé vyvažovací oeraci (štěeí vrcholu) je očet modifikovaých vrcholů omezeý kostatou (štěeý vrchol, otec a syové). symtoticky jsou očty modifikovaých vrcholů a vyvažovacích oerací stejé. Složitost Časová složitost oerací Fid, Isert ad Delete je O(lo ). Počet modifikovaých vrcholů ři vytvořeí stromu oerací Isert Vytváříme (a,b)-strom omocí oerace Isert Zajímá ás celkový očet vyvažovacích oerací Při každém štěeí vrcholu vytvoříme ový vitří vrchol Po vytvořeí má strom ejvýše vitřích vrcholů elkový očet štěeí je ejvýše a očet modifikací vrcholů je O() mortizovaý očet modifikovaých vrcholů a jedu oeraci Isert je O() Jirka Fik Datové struktury I 45 Jirka Fik Datové struktury I 45 (a,b)-strom: Paralelí řístu (a,b)-strom: Paralelí řístu: Příklad Vložte rvek s klíčem 6 do ásledujícího (,4)-stromu 0 0 5 íl Umožit efektí aralelizaci oerací Fid, Isert a Delete (ředoklad: b a). Nejrve rozdělíme koře 5 8 4 7 9 5 8 4 7 9 0 4 40 50 0 0 5 Oerace Isert Prevetivě rozdělit každý vrchol a cestě od kořee k hledaému listu s b syy a dva vrcholu. 5 8 5 8 0 4 7 9 4 7 9 Pak okračujeme do levého sya, který taky rozdělíme 0 4 40 50 5 0 5 8 5 8 0 4 Oerace Delete Prevetivě sloučit každý vrchol a cestě od kořee k hledaému listu s a syy s bratrem ebo řesuout syovce. 4 7 9 4 7 9 40 50 Vrchol s klíčem 8 eí třeba rozdělovat a ový klíč můžeme vložit 0 5 0 5 7 8 5 8 0 4 4 6 7 9 4 7 9 40 50 Jirka Fik Datové struktury I 46 Jirka Fik Datové struktury I 47 -sort (Guibas, Mcreiht, Plass, Roberts [0]) -sort: loritmus íl Setřídit skoro setříděé ole Modifikace (a,b)-stromu Máme uložeý ukazatel a vrchol s ejmeším klíčem Příklad: Vložte klíč s hodotou i = 6 Začeme od vrcholu s ejmeším klíčem a ostuujeme ke kořei, dokud i eatří odstromu aktuálího vrcholu V rámci tohoto odstromu sustíme oeraci Isert Výška odstromu je Θ(lo f i), kde f i je očet klíčů meších ež i Prvek i = 6 atří do tohoto odstromu Nejmeší klíč 8 6 9 5 8 0 40 Výška odstromu Iut: Poslouost,,..., T rázdý (a,b)-strom for i to # Prvky rocházíme od koce do # Najdeme odstrom, do kterého vložíme i 4 v list s ejmeším klíčem 5 while v eí koře a i je větší ež ejmeší 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šechy klíče (i-order traversal) Jirka Fik Datové struktury I 48 Jirka Fik Datové struktury I 49

-sort: Složitost (row, Tarja [], Mehlhor [7]) Nerovost mezi aritmetickým a eometrickým růměrem Jestliže a,..., a ezáorá reálá čísla, ak latí i= ai a i. i= Místo G erovosti můžeme oužít Jeseovu erovost, ze které římo lye i lo f i lo i f i. Teto aloritmus je bohužel efektiví je ro hodě skoro setříděé oslouosti. Jestliže očet iverzí je +ɛ, ak dostáváme složitost tříděí O( lo ), kde ɛ je libovolě malé kladé číslo. Časová složitost Necht f i = {j > i; j < i} je očet klíčů meších ež i, které již jsou ve stromu ři vkládáí i Necht F = {(i, j); i > j, i < j} = i= fi je očet iverzí Složitost alezeí odstromu, do kterého i atří: O(lo f i) 4 Nalezeí těchto odstromů ro všechy odstromy i lo fi = lo i fi = lo i fi lo i f i = lo F. 5 Rozdělováí vrcholů v růběhu všech oerací Isert: O() 6 elková složitost: O( + lo(f/)) 7 Složitost v ejhorším říadě: O( lo ) rotože F 8 Jestliže F lo, ak složitost je O( lo lo ) Jirka Fik Datové struktury I 50 Jirka Fik Datové struktury I 50 (a,b)-strom: Závěr Počet modifikovaých vrcholů ři oerací Isert a Delete [] Předoklad: b a Počet modifikovaých vrcholů ři l oeracích Isert a k Delete je O(k + l + lo ) mortizovaý očet modifikovaých vrcholů ři oeracích Isert a Delete je O() Podobé datové struktury -tree, + tree, * tree -4-tree, --4-tree, etc. likace File systems ař. Et4, NTFS, HFS+ Databáze [α]-strom Slay stromy (a,b)-stromy Červeo-čerý strom Jirka Fik Datové struktury I 5 Jirka Fik Datové struktury I 5 Červeo-čeré stromy (Guibas, Sedewick []) Defiice iárí vyhledávací strom s rvky uložeými ve všech vrcholech Každý vrchol je čerý ebo červeý Všechy cesty od kořee do listů obsahují stejý očet čerých vrcholů 4 Otec červeého vrcholu musí být čerý Neoviá odmíka, která je zjedodušuje oerace. V říkladu uvažujeme, že listy jsou rerezetováy NIL/NULL ukazateli, a tedy imaiárí vrcholy bez rvků. Někdy se též vyžaduje, aby koře byl čerý, ale tato odmíka eí utá, rotože koře můžeme vždy řebarvit a čero bez orušeí ostatích odmíek. 5 Listy jsou čeré Příklad 50 0 80 0 5 66 97 NIL NIL 8 NIL NIL NIL 99 NIL NIL NIL NIL NIL NIL Jirka Fik Datové struktury I 5 Jirka Fik Datové struktury I 5 Červeo-čeré stromy: Ekvivalece s (,4)-stromy Vrchol bez červeých syů Převod mezi červeo-čerými stromy a (,4)-stromy eí jedozačý, rotože vrchol (,4)-stromu se třemi syy a rvky < y lze řevést a čerý vrchol červeo-čerého stromu s rvkem a ravým červeým syem y ebo s rvkem y a levým červeým syem. Vrchol s jedím čeveým syem 0 5 0 0 0 5 5 5 5 5 Vrchol s dvěma červeými syy 5 5 8 4 8 7 9 4 7 9 Jirka Fik Datové struktury I 54 Jirka Fik Datové struktury I 54

Červeo-čeré stromy: Oerace Isert S využitím symetrií lze očet říadů sížit. Vytvořeí ového vrcholu Najít list ro ový rvek Přidat ový vrchol NIL NIL NIL NIL NIL Pokud otec je červeý, ak je uté strom vybalacovat alacováí Vrchol a jeho otec jsou červeé vrcholy a toto je jediá orušeá odmíka Děda vrcholu je čerý Musíme uvažovat tyto říady: Strýc u je čerý ebo červeý Vrchol je ravým ebo levým syem (odobě ro vrchol ) Jirka Fik Datové struktury I 55 Jirka Fik Datové struktury I 55 Červeo-čeré stromy: Oerace Isert, strýc je čerý Červeo-čeré stromy: Oerace Isert, strýc je červeý u u u 4 5 u 4 5 u u...... 4 5 u Pořadí rvků v (,4)-stromu a výsledý červeo-čerý strom závisí a tom, zda vrchol je ravým ebo levým syem a zda vrchol je ravým ebo levým syem. 4 5 Po rozděleí vrchol (,4)-stromu se rvek řesouvá do otce, a roto je vrchol červeý. Jirka Fik Datové struktury I 56 Jirka Fik Datové struktury I 57 Červeo-čeré stromy: Vlastosti Počet čerých vrcholů a cestě ke kořei je stejý jako výška odovídajícího (,4)-stromu, a tedy výška červeo-čerého stromu je ejvýše dvojásobek výšky (,4)-stromu. Důsledky ekvivalece s (,4)-stromy Výška červeo-čerého stromu je Θ(lo ) Časová složitost oerací Fid, Isert a Delete je O(lo ) mortizovaý očet modifikovaých vrcholů ři oerací Isert a Delete je O() Paralelí řístu (to-dow balacováí) likace sociativí ole ař. std::ma ad std::set v ++, TreeMa v Java The omletely Fair Scheduler i the Liu kerel omutatioal Geometry Data structures Jirka Fik Datové struktury I 58 Jirka Fik Datové struktury I 58 Pamět ová hierarchie Příklad velikostí a rychlostí růzých tyů amětí Triviálí 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 # Iicializace ole -bitových čísel velikosti for (i=0; i+d<; 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 a arametrech a d # Počet oerací je ezávislý a a d 4 for (j=0; j< 8 ; j++) do 5 i = [i] # Dokola rocházíme cyklus d-tých ozic Jirka Fik Datové struktury I 59 Jirka Fik Datové struktury I 60

Pamět ová hierarchie: Triviálí roram ache-oblivious (Frio, Leiserso, Proko, Ramachadra, 999 [9]) Čas [s] 5 0 5 d= d= 0 d= 9 d= 8 d= 7 d= 6 d= 5 d= 4 d= d= Zjedodušeý model aměti Uvažujme ouze a dvě úrově aměti: omalý disk a rychlá cache Pamět je rozděleá a bloky (stráky) velikosti Velikost cache je M, takže cache má P = M bloků Procesor může řistuovat ouze k datům uložeých v cache Pamět je lě asociativí Data se mezi diskem a cache řesouvají o celých blocích a ašim cílem je určit očet bloků ačteých do cache ache-aware aloritmus loritmus zá hodoty M a a odle ich astavuje arametry (ař. velikost vrcholu -stromu ři ukládáí dat a disk). 0 0 4 6 8 0 4 6 8 0 lo ache-oblivious aloritmus loritmus musí efektivě fuovat bez zalostí hodot M a. Důsledky: Neí třeba astavovat arametry roramu, který je tak řeositelější loritmus dobře fuuje mezi libovolými úrověmi aměti (L L L RM) Jirka Fik Datové struktury I 6 Jirka Fik Datové struktury I 6 Pro zjedodušeí ředokládáme, že jede rvek zabírá jedotkový rostor, takže do jedoho bloku se vejde rvků. Předokládáme, že každý blok z disku může být uložeý a libovolé ozici v cache. Teto ředoklad výrazě zjedodušuje aalýzu, i když a reálých očítačích moc elatí, viz htts://e.wikiedia.or/wiki/pu_cache#ssociativity. ache-oblivious aalýza: Scai Přečteí souvislého ole (výočet maima, součtu a odobě) Prvek lok Pamět Miimálí možý očet řeeseých bloků je /. Skutečý očet řeeseých bloků je ejvýše / +. Předokládáme, že máme k disozici O() reistrů k uložeí iterátoru a maima. Obráceí ole Počet řeeseých bloků je stejý za ředokladu, že P. Jirka Fik Datové struktury I 6 Jirka Fik Datové struktury I 6 ache-oblivious aalýza: iárí halda a vyhledáváí iárí halda v oli: Průchod od listu ke kořei Přesěji Θ(ma {, lo lo }). Dále ředokládáme, že. Pro jedoduchost uvažujeme eúsěšé vyhledáváí. Začátek haldy Čteé rvky lok esta má Θ(lo ) vrcholů Posledích Θ(lo ) vrcholů leží v ejvýše dvou blocích Ostatí vrcholy jsou uložey v o dvou růzých blocích 4 Θ(lo lo ) = Θ(lo ) řeeseých bloků iárí vyhledáváí Porováváme Θ(lo ) rvků s hledaým rvkem Posledích Θ(lo ) rvků je uložeo v ejvýše dvou blocích Ostatí rvky jsou uložey v o dvou růzých blocích Θ(lo lo ) řeeseých bloků Jirka Fik Datové struktury I 64 Jirka Fik Datové struktury I 64 ache-oblivious aalýza: Meresort Příad M/ elé ole se vejde do cache, takže řeášíme / + O() bloků. Schéma Délka sojovaých olí / /4 z.. Výška stromu rekurze lo lo (/z) lo z Polovia cache je oužita a vstuí ole a druhá olovia a slité ole. Pro jedoduchost ředokládáme, že velikosti olí v jedé úrovi rekurze jsou stejé. z odovídá velikosti ole v úrovi rekurze takové, že dvě ole velikost z/ mohou být slity v jedo ole velikost z. Slití všech olí v jedé úrovi do olovičího očtu olí dvojásobé délky vyžaduje řečteí všech rvků. Navíc je třeba uvažovat ezarováí olí a bloků, takže hraičí bloky mohou atřit do dvou olí. 4 Fuelsort řeese O ( lo ) P bloků. Příad > M/ Necht z je maimálí velikost ole, která může být setříděá v cache Platí z M < z Slití jedé úrově vyžaduje + + O() = O z řeosů. 4 Počet řeeseých bloků je O ( + lo z = O lo ) M. 4 Jirka Fik Datové struktury I 65 Jirka Fik Datové struktury I 65

ache-oblivious aalýza: Trasozice matic: Triviálí řístu ache-oblivious aalýza: Trasozice matic: Triviálí řístu Strateie ro výměu stráek v cache OPT: Otimálí off-lie aloritmus ředokládající zalost všech řístuů do aměti FIFO: Z cache smažeme stráku, která je ze všech stráek v cachi ejdelší dobu LRU: Z cache smažeme stráku, která je ze všech stráek v cachi ejdéle eoužitá Triviálí aloritmus ro trasozici 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 jedoho bloku cache se evejde celá řádka matice P < k: Do cache se evejde celý slouec matice Příklad: Reresetace matice 5 5 v aměti 4 5 4 5 4 5 4 4 4 44 45 5 5 5 54 55 LRU a FIFO strateie Při čteí matice o sloucích si cache amatuje osledích P řádků, takže ři čteí rvku, již rvek, eí v cache. Počet řeeseých bloků je Ω(k ). OPT strateie Trasozice rvího řádku/slouce vyžaduje alesoň k řeosů. Nejvýše P rvků z druhého slouce zůstae v cache. Proto trasozice druhého řádku/slouce vyžaduje alesoň k P řeosů. 4 Trasozice i-tého řádku/slouce vyžaduje alesoň ma {0, k P i} řeosů. 5 elkový očet řeosu je alesoň k P i= k P i = Ω ( (k P) ). Jirka Fik Datové struktury I 66 Jirka Fik Datové struktury I 67 ache-oblivious aalýza: Trasozice matic: ache-aware řístu ache-oblivious aalýza: Trasozice matic: Rekurziví trasozice ache-aware aloritmus ro trasozici matice velikost k k # Nejrve si rozdělíme daou matici a submatice velikosti z z for (i = 0; i < k; i+ = z) do for (j = i; j < k; j+ = z) do # Trasoujeme submatici začíající a ozici (i, j) for (ii = i; ii < mi(k, i + z); ii + +) do 4 for (jj = ma(j, ii + ); jj < mi(k, j + z); jj + +) do 5 Swa( ii,jj, jj,ii) Idea Rekurzivě rozdělíme a submatice ( = ) T T = T T T Hodoceí Otimálí hodota z závisí a kokrétím očítači Využíváme je jedu úroveň cache Při srávě zvoleé hodotě z bývá teto ostu ejrychlejší Matice a se trasoují odle stejého schématu, ale a se rohazují. Jirka Fik Datové struktury I 68 Jirka Fik Datové struktury I 69 ache-oblivious aalýza: Trasozice matic: Rekurziví trasozice Procedure trasose o diaoal() if Matice je malá the Trasoujeme matici triviálím ostuem 4 else 5,,, souřadice submatic 6 trasose o diaoal 7 trasose o diaoal 8 trasose ad swa(, ) Všiměme si, že matice a musí mít osice symetrické odle hlaví diaoály ůvodí matice, a roto ve skutečosti fukci trasose ad swa() stačí ředávat ozice matici. Ve fukci trasose o diaoal musí být matice čtvercová a ležet a hlaví diaoále, a roto stačí ředávat -ovou souřadici a řád matice. 9 Procedure trasose ad swa(, ) 0 if Matice a jsou malé the Prohodíme a trasoujeme matice a triviálím ostuem else,,,,,,, souřadice submatic 4 trasose ad swa(, ) 5 trasose ad swa(, ) 6 trasose ad swa(, ) 7 trasose ad swa(, ) Jirka Fik Datové struktury I 70 Jirka Fik Datové struktury I 70 ache-oblivious aalýza: Trasozice matic: Rekurziví trasozice alýza očtu řeeseých bloků Předoklad Tall cache : M 4, tj. očet bloků je alesoň 4 Necht z je maimálí velikost submatice, ve které se jede řádek vejde do jedoho bloku Platí: z z 4 Jeda submatice z z je uložea v ejvýš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 jedodušší. Pokud začátek řádky eí a začátku bloku, tak je jede řádek submatice ulože ve dvou blocích. Fukce trasose ad swa racujeme se dvěma submaticemi. 4 elá matice je uložea v alesoň k blocích aměti. 5 Dvě submatice z z se vejdou do cache 6 Trasozice matice tyu z z vyžaduje ejvýše 4z řeosů 7 Máme (k/z) submatic velikosti z ( 8 elkový očet řeeseých bloků je ejvýše k 4z 8k = O z 9 Teto ostu je otimálí až a multilikativí faktor 4 k ) Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 7

ache-oblivious aalýza: Rerezetace biárích stromů Platí ro -reulárí haldu. -strom má výšku Θ(lo (). symtoticky otimálí řešeí důkaz je založe a Iformatio theory. íl Sestrojit rerezetaci biárího stromu efektivě využívající cache. Počítáme očet ačteých bloků ři růchodu cesty z listu do kořee. iárí halda Velmi eefektiví: Počet řeeseých bloků je Θ(lo lo ) = Θ(lo ) -reulárí halda, -strom Výška stromu je lo () + Θ() Jede vrchol je ulože v ejvýše dvou blocích Počet ačteých bloků je Θ(lo ()) Nevýhody: cache-aware a chtěli jsme biárí strom Převedeí a biárí strom Každý vrchol -reulárí haldy ahradíme biárím stromem. Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 7 ache-oblivious aalýza: Rerezetace biárích stromů ache-oblivious aalýza: Rerezetace biárích stromů f f f b b b a a a c c c d d d e e e... vyecháo... y y y a z z z Rekurziví bottom-u kostrukce va Emde oas rozložeí va Emde oas rozložeí ve 0 řádu 0 je jede vrchol ve k obsahuje jedu horí koii ve k a každému listu horí koie má dvě dolí koie vek V oli jsou ejrve uložea horí koie a ak ásledují všechy dolí koie a a Pořadí vrcholů v oli odle va Emde oas rozložeí b c d e 0 b b c c d d e e f f f... vyecháo... 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řee do listu f 4 5 7 8 0 4 Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 74 ache-oblivious aalýza: Rerezetace biárích stromů Rekurziví to-dow kostrukce va Emde oas rozložeí h Výočet očtu ačteých bloků ři cestě z kořee do listu Necht h = lo je výška stromu... h h Necht z je maimálí výška odstromu, který se vejde do jedoho bloku Platí: z lo z Počet odstromů výšky z a cestě z kořee do listu je = lo h lo z lo Počet ačteých bloků je Θ(lo ) ache-oblivious aalýza: Srováí OPT a LRU strateií Věta (Sleator, Tarja [5]) Necht s,..., s k je oslouost ří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 řeeseý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 dvojásobý očet bloků v cache oroti OPT, ak LRU má ejvýše dvojásobý očet řeeseých bloků oroti OPT (lus P OPT). 4 Zdvojásobeí velikosti cache emá většiou vliv a asymtotický očet řeeseých bloků Scai: O(/) Meresort: O ( lo ) M Fuelsort: O ( lo ) P The va Emde oas layout: O(lo ) Jirka Fik Datové struktury I 75 Jirka Fik Datové struktury I 76 s i začí blok aměti, se kterým roram racuje, a roto musí být ačte do cache. Poslouost s,..., s k je ořadí bloků aměti, ve kterém aloritmus racuje s daty. Při oakovaém řístuu do stejého bloku se blok oslouosti oakuje. Představme si, že OPT strateie ustíme a očítači s P OPT bloky v cache a LRU strateie sustíme a očítači s P OPT bloky v cache. Srováváme očet řeeseých bloků OPT strateie a očítači s P OPT bloky a LRU strateie a očítači s P OPT bloky. 4 Formálě: Jestliže P LRU = P OPT, ak F LRU F OPT + P OPT. ache-oblivious aalýza: Srováí OPT a LRU strateií Důkaz (F LRU PLRU PLRU P OPT F OPT + P OPT ) Pokud LRU má f P LRU řeeseých bloků v odoslouosti s, ak OPT řeese alesoň f P OPT bloků v odosloosti s Pokud LRU ačte v odoslouost f růzých bloků, tak odoslouost obsahuje alesoň f růzých bloků Pokud LRU ačte v odoslouost jede blok dvakrát, tak odoslouost obsahuje alesoň P LRU f růzých bloků OPT má řed zracováím odoslouosti ejvýše P OPT bloků z odoslouosti v cache a zbylých alesoň f P OPT musí ačíst Rozdělíme oslouost s,..., s k a odosloosti tak, že LRU řeese P LRU bloků v každé odoslouosti (kromě osledí) Jestliže F OPT ad F LRU jsou očty řeeseých bloků ři zracováí libovolé odoslouosti, ak F LRU P LRU F P LRU P OPT OPT (kromě osledí) OPT řeese F OPT P LRU P OPT bloků v každé odoslouosti Tedy F LRU F OPT P LRU P LRU P OPT 4 V osledí oslouosti latí F LRU P LRU F P LRU P OPT 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 Fik Datové struktury I 76 Jirka Fik Datové struktury I 77

Srováí rychlosti čteí a záisu z aměti Srováí rychlosti čteí a záisu z aměti Čteí z aměti # Iicializace ole -bitových čísel velikosti for (i=0; i+d<; 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 a arametrech 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 Čteí, d=04 Čteí, d= Záis, d=04 Záis, d= Čteí, d= Záis, d= Záis do aměti 0.5 # Měříme dobu růběhu cyklu v závislosti a arametrech a d for (j=0; j< 8 ; j++) do [(j*d) % ] = j # Dokola zaisujeme a d-té ozice 0 0 4 6 8 0 4 6 8 0 lo Jirka Fik Datové struktury I 78 Jirka Fik Datové struktury I 79 Pár triků a závěr Která variata je rychlejší a o kolik? # Použijeme modulo: for (j=0; j< 8 ; j++) do [(j*d) % ] = j # Použijeme bitovou kojukci: mask = # Předokládáme, že je mocia dvojky 4 for (j=0; j< 8 ; j++) do 5 [(j*d) & mask] = j Jak dlouho oběží výočet vyecháme-li osledí řádek? for (i=0; i+d<; i+=d) do [i] = i+d [i=0]=0 # Měříme dobu růběhu cyklu v závislosti a arametrech a d 4 for (j=0; j< 8 ; j++) do 5 i = [i] 6 ritf( %d\, i); d-reulárí halda iomiálí halda Fiboacciho halda Jirka Fik Datové struktury I 80 Jirka Fik Datové struktury I 8 Halda Halda: likace Základí ojmy Každý rvek obsahuje jedozačý a eměý klíč idetifikující rvek a rioritu, která emusí být jedozačá a může se měit. Základí oerace INSERT FINDMIN: Nalezeí rvku s ejmeší rioritou DELETEMIN: Smazáí rvku s ejmeší rioritou DERESE: Sížit hodotu riority v daém vrcholu Haldový ivariat Priorita v každém vrcholu větší ebo rova rioritě otce. likace Priorití frota Hea-sort Dijkstrův aloritmus (ejkratší cesta) Jaríkův (Primův) aloritmus (miimálí kostra) Klíč Umístěí rvků ve stromu emusí slňovat odmíku vyhledáváí Halda emusí umět efektivě vyhledávat rvky odle klíče! loritmus využívající haldu si musí amatovat, kde je který rvek uložeý. Halda hodoty klíčů vůbec evyužívá Jirka Fik Datové struktury I 8 Jirka Fik Datové struktury I 8 Podmíka vyhledávacích stromů (klíč v každém vitřím vrcholu je větší ež všechy klíče v levém odstromu a meší ež všechy klíče v ravém odstromu) eí v haldě slěa. Přesěji: ozici rvku je uté si amatovat, okud otřebujeme oeraci DERESE. Oerace INSERT, FINDMIN a DELETEMIN ozice rvků eotřebují. loritmus si aříklad může amatovat ukazatel a vrchol stromu obsahující daý rvek. Oerace FINDMIN vrací rvek i s klíčem, který může být využit v dalším aloritmu. d-reulárí halda iomiálí halda Fiboacciho halda Jirka Fik Datové struktury I 8 Jirka Fik Datové struktury I 84

d-reulárí halda (Johso []) Defiice Každý vrchol má ejvýše d syů Všechy vrstvy kromě osledí jsou úlě zalěé Posledí hladia je zalěá zleva Haldový ivariat (riorita v každém vrcholu větší ebo rova rioritě v otci) Necht h je ejižší lá hladia. Jelikož h-tá hladia obsahuje d h vrcholů, tak latí d h, z čehož lye h lo d. Tudíž výška d-reulárí haldy s rvky je ejvýše + lo d. Najděte formuli udávající řesou výšku d-reulárí haldy. Příklad -reulárí (biárí) haldy 8 0 6 5 9 vičeí Jaká je řesá výška d-reulárí haldy s rvky? Jirka Fik Datové struktury I 85 Jirka Fik Datové struktury I 85 d-reulárí halda: Reresetace d-reulárí halda: Oerace INSERT iárí halda uložeá ve stromu Příklad: Vložme rvek s rioritou 5 8 0 6 5 8 9 0 6 5 iárí halda uložeá v oli vrchol a ozici i má otce a ozici (i )/ a syy a ozici i + a i + : 9 5 8 0 6 5 9 8 0 6 5 9 5 Otec Děti vičeí: Určete ozice otce a syů ro obecou d-reulárí haldu Jirka Fik Datové struktury I 86 Jirka Fik Datové struktury I 87 d-ary hea: Oerace INSERT a DERESE Pro řesější aalýzu ás zajímá závislost složitosti a hodotě d. Později se ám bude hodit astavovat d odle hodot a vstuu. INSERT: loritmus Iut: Nový rvek s rioritou v rví volý blok v oli Nový rvek uložíme a ozici v while v eí koře a otec vrcholu v má riority větší ež do 4 Prohodíme rvky a ozicích v a 5 v Oerace DERESE Sížíme rioritu a okračujeme odobě jako ři oeraci INSERT Časová složitost O(lo d ) Jirka Fik Datové struktury I 88 Jirka Fik Datové struktury I 88 Oerace DELETEMIN d-reulárí halda: Oerace uild 8 íl Vytvořit haldu z daého ole rvků loritmus 0 9 6 5 Přesueme osledí rvek do kořee v while Některý ze syů vrcholu v má rioritu meší ež v do u sy vrcholu v s ejmeší rioritou 4 Prohodíme rvky ve vrcholech u a v 5 v u Složitost O(d lo d ) loritmus for r osledí ozice to rví ozice v oli do # Zracujeme vrchol r odobě jako ři oeraci DE L E T EMI N v r while Některý ze syů vrcholu v má rioritu meší ež v do 4 u sy vrcholu v s meším rioritu 5 Prohodíme rvky ve vrcholech u a v 6 v u Korektost Podstromy všech zracovaých vrcholů tvoří haldu Jirka Fik Datové struktury I 89 Jirka Fik Datové struktury I 90

d-reulárí halda: Oerace uild Podstromem vrcholu u rozumíme vrchol u a všechy vrcholy od u. Čle + zaočítáváme, rotože jede odstrom může být eúlý. Lemma (vičeí) h d = d h (d ) h=0 Složitost Zracováí vrcholu s odstromem výšky h: O(dh) Úlý odstrom výšky h má d h listů Každý list atří do ejvýše jedoho úlého odstromu výšky h. Počet vrcholů s odstromy výšky h je ejvýše + d h d h elková časová složitost lo d h=0 d dh d h h d = h Složitost je O() ro libovolé d h=0 d = O() d Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 9 iomiálí strom d-reulárí halda iomiálí halda Fiboacciho halda Defiice iomiálí strom 0 řádu 0 je jede vrchol iomiálí strom k řádu k má koře, jehož syové jsou kořey biomiálích stromů řádu 0,,..., k. lterativě iomálí strom řádu k je vytvoře z dvou biomiálích stromů řádu k tak, že se jede strom řiojí jako ejravější sy kořee druhého stromu. Rekurziví defiice biomiálího stromu... k 0 k k k Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 9 iomiálí strom: Příklad iomiálí strom: Vlastosti Rekurziví defiice biomiálího stromu Rekurziví defiice biomiálího stromu... k... k 0 k k k 0 k k k iomiálí stromy řádu 0,, a 0 0 0 0 Vlastosti iomiálí strom k má k vrcholů, výšku k, k syů v kořei, maimálí stueň k, ( k ) d vrcholů v hloubce d. Podstrom vrcholu s k syy je izomorfí k. Jirka Fik Datové struktury I 94 Jirka Fik Datové struktury I 95 Možia biomiálích stromů Pozorováí Pro každé eistuje (rávě jeda) možia biomiálích stromů růzých řádů taková, že celkový očet vrcholů je. Vztah mezi biárími čísly a biomiálími stromy iárí číslo = 0 0 0 0 iomiálí halda (Vuillemi [7]) Defiice iomiálí halda je možia biomiálích stromů taková, že: Každý rvek je ulože rávě v jedom vrcholu jedoho biomiálího stromu Každý biomiálí strom je halda (otec má meší rioritu ež sy) Žádé dva biomiálí stromy emají stejý řád iomiálí halda obsahuje: 7 4 Příklad ro 00 rvků 0 6 8 5 5 9 Příklad 0 6 8 5 5 9 Jirka Fik Datové struktury I 96 Jirka Fik Datové struktury I 97

iomiálí halda: Výška Pozorováí iomiálí halda obsahuje ejvýše lo ( + ) stromů a každý má výšku ejvýše lo. iomiálí halda: Reresetace Struktura ro vrchol biomiálího stromu obsahuje rvek (klíč a riorita), ukazatel a otce, ukazatel a ejlevějšího a ejravějšího sya, ukazatel a levého a ravého bratra a řád ostromu. iomiálí halda iomálí stromy jsou uložey ve sojovém sezamu omocí ukazatelů a bratry. Vztah mezi biárími čísly a biomiálími stromy iárí číslo = 0 0 0 0 Odstraěím kořee biomiálího stromu vzike biomiálí halda v čase O(). iomiálí halda si udržuje ukazatel a strom s rvkem s miimálí rioritou. Oerace FINDMIN iomiálí halda obsahuje: 7 4 Triviálě v čase O() Oerace DERESE Stejě jako v reulárí haldě. Jirka Fik Datové struktury I 98 Jirka Fik Datové struktury I 99 Ukazatele tvoří obousměrý sojový sezam syů a teto sezam udržujeme setříděý odle řádu. iomiálí stromy jsou ve sojovém sezamu taky setříděé odle řádu. iomiálí halda: Sojeí dvou biomiálích hald Sojeí dvou biomiálích stromů stejého řádu v čase O() u rak+... v 0 k k Sojeí biomiálích hald Sojeí dvou biomiálích hald je jako sčítáí biárí čísel: sjedocujeme biomiálí stromy od ejmeších. Složitost je O(lo ), kde je celkový očet rvků. Příklad iomiálí strom 6 5 4 0 Prví halda 0 0 0 Druhá halda 0 0 0 0 Sojeí 0 0 0 Jirka Fik Datové struktury I 99 Jirka Fik Datové struktury I 00 iomiálí halda: Oerace INSERT a DELETEMIN Stromy v haldě udržujeme setříděé odle řádu. Nový strom je ejmeší, takže jej vložíme a začátek sezamu. Oerace INSERT Vytvoříme biomiálí strom řádu 0 s ovým rvkem Procházíme sezam stromů od ejmeších: Pokud strom 0 je v haldě, tak jej sjedotíme s ovým stromem 0, čímž vytvoříme Pokud strom je v haldě, tak jej sjedotíme s ovým stromem, čímž vytvoříme Takto okračujeme až k ke stromu s ejmeším řádem, který eí uložeý v haldě, a ový strom vložíme do haldy Složitost v ejhorším říadě je O(lo ) mortizovaá složitost je O() odobě jako ikremetace biárího čítače Zde je důležité, že erocházíme všechy stromu v haldě Oerace DELETEMIN Odstraíme koře s miimálím rvkem, čímž vzike ová biomiálí halda, kterou sjedotíme se zbytkem ůvodí haldy v čase O(lo ). Jirka Fik Datové struktury I 0 Jirka Fik Datové struktury I 0 Líá biomiálí halda Změa v octivé biomiálí haldě Líá biomiálí halda může obsahovat libovolý očet biomiálích stromů stejého řádu. Oerace INSERT a sojeí dvou líých biomiálích hald Pouze sojíme sezamy stromů Složitost O() v ejhorším říadě Oerace DELETEMIN Smažeme koře s miimálím rvkem Sojíme sezam syů smazaého kořee s ostatími stromy v haldě Zrekostruujeme octivou biomiálí haldu Najdeme ový miimálí rvek Líá biomiálí halda: Rekostrukce octivé biomiálí haldy Idea Dokud máme v haldě biomiálí haldy stejého řádu, tak je sojujeme Použijeme ole ideovaé řádem stromu k vyhledáváí stromů stejého řádu loritmus Iicializujeme ole velikosti lo ( + ) ukazatelem NIL for ro každý strom h v líé biomiálí haldě do o řád stromu h 4 while ole[o] NIL do 5 h sojeí stromů h a ole[o] 6 ole[o] NIL 7 o o + 8 ole[o] h 9 Pole stromů řevedeme a sojový sezam, čímž vytvoříme octivou biomiálí haldu vičeí mortizovaá složitost oerace DELETEMIN je O(lo ). Jirka Fik Datové struktury I 0 Jirka Fik Datové struktury I 0