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

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

Definice obecné mocniny

Příklady z finanční matematiky I

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

IAJCE Přednáška č. 12

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

Nalezení výchozího základního řešení. Je řešení optimální? ne Změna řešení

3. DIFERENCIÁLNÍ ROVNICE

Metoda datových obalů DEA

Vyhledávání v tabulkách

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

Kapitola 5 - Matice (nad tělesem)

ASYNCHRONNÍ STROJE. Obsah

PRAVDĚPODOBNOST ... m n

Aplikace teorie neuronových sítí

8.2.1 Aritmetická posloupnost

8.2.1 Aritmetická posloupnost I

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

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

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

MATEMATICKÁ INDUKCE. 1. Princip matematické indukce

7. Analytická geometrie

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

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

BRNO UNIVERSITY OF TECHNOLOGY FAKULTA STROJNÍHO INŽENÝRSTVÍ ÚSTAV AUTOMATIZACE A INFORMATIKY

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

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

Základní pojmy kombinatoriky

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

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

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

Jestliže nějaký objekt A můžeme vybrat m způsoby a jiný objekt B lze vybrat n způsoby, potom výběr buď A nebo B je možné provést m+n způsoby.

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

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

Kombinatorika- 3. Základy diskrétní matematiky, BI-ZDM

2.7.5 Racionální a polynomické funkce

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

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

-1- Finanční matematika. Složené úrokování

9. Racionální lomená funkce

Deskriptivní statistika 1

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

1. Přirozená topologie v R n

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

1 POPISNÁ STATISTIKA V PROGRAMU MS EXCEL

Teorie chyb a vyrovnávací počet. Obsah:

6. Posloupnosti a jejich limity, řady

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

Základní pojmy kombinatoriky

8.1.3 Rekurentní zadání posloupnosti I

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

6. FUNKCE A POSLOUPNOSTI

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

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

Dynamické programování

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

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

MATICOVÉ HRY MATICOVÝCH HER

Petr Šedivý Šedivá matematika

DERIVACE FUNKCÍ JEDNÉ REÁLNÉ PROM

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

Matematika I, část II

ODRAZ A LOM SVTLA. Odraz svtla lom svtla index lomu úplný odraz svtla píklady

Formát souboru zahraničních plateb CFA pro MCC 3.20 / HC 4.0 / SMO / MCT 3.20

. viz věty 1.7 a 1.2 (čísla m a M lze vybrat tak, aby nerovnost platila v R n i R m ). Máme m f x h f x l h f x h f x l h M f x h f x l h

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

1. Nakreslete všechny kostry následujících grafů: nemá žádnou kostru, roven. roven n,

7 Obyčejné diferenciální rovnice

A J E J I C H S O U S T A V Y

Pravděpodobnost a aplikovaná statistika

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

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

Sekvenční logické obvody(lso)

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

Spojitost a limita funkcí jedné reálné proměnné

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)

Užití binomické věty

Analytické modely systémů hromadné obsluhy

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

Elektrické přístroje. Přechodné děje při vypínání

FUNKCÍ JEDNÉ REÁLNÉ PROMĚNNÉ PRVNÍ DIFERENCIÁL

Kapitola 12: Zpracování dotazů. Základní kroky ve zpracování dotazů

DISTRIBUČNÍ ÚLOHY (Speciální úlohy LP)

Markovovy řetězce s diskrétním časem (Discrete Time Markov Chain)

Kapitola 4 Euklidovské prostory

ZS 2018/19 Po 10:40 T5

Matematická analýza I

2.3. Fázové rovnováhy

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

1 Trochu o kritériích dělitelnosti

1.1. Definice Reálným vektorovým prostorem nazýváme množinu V, pro jejíž prvky jsou definovány operace sčítání + :V V V a násobení skalárem : R V V

Algebraický výraz je číselný výraz s proměnou. V těchto výrazech se vyskytují vedle reálných čísel také proměnné. Například. 4a 4,5x + 6,78 7t.

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

Matematika NÁRODNÍ SROVNÁVACÍ ZKOUŠKY BŘEZNA 2018

O Jensenově nerovnosti

Či ost katastrál í h úřadů po digitaliza i katastrál í h ap

Datové struktury I NTIN066

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

u, v, w nazýváme číslo u.( v w). Chyba! Chybné propojení.,

7.2.4 Násobení vektoru číslem

Transkript:

Základí iforace Datové struktury I NTIN066 Jirka Fik htts://ktil.ff.cui.cz/ fik/ Kotat E-ail fik@ktil.ff.cui.cz Hoeae htts://ktil.ff.cui.cz/ fik/ Kozultace Idividuálí doluva Katedra teoretické iforatiky a ateatické loiky Mateaticko-fyzikálí fakulta Uiverzita Karlova v Praze Zií seestr 06/7 Posledí zěa. úora 07 Podíky záočtu Bude zadaých ět doácích úkolů o 00 bodech a k záočtu usíte získat iiálě 50 bodů. Licece: Creative Coos BY-NC-SA 4.0 Jirka Fik Datové struktury I Jirka Fik Datové struktury I Literatura Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro 6 Hešováí 8 Dyaizace A. Koubková, V. Koubek: Datové struktury I. MATFYZPRESS, Praha 0. T. H. Core, C.E. Leiserso, R. L. Rivest, C. Stei: Itroductio to Aloriths. MIT Press, 009 K. Mehlhor: Data Structures ad Aloriths I: Sorti ad Searchi. Srier-Verla, Berli, 984 D. P. Mehta, S. Sahi eds.: Hadbook of Data Structures ad Alicatios. Chaa & Hall/CRC, Couter ad Iforatio Series, 005 E. Deaie: Cache-Oblivious Aloriths ad Data Structures. 00. R. Pah: Cuckoo 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 SODA, 655-664, 009. 0 Literatura Jirka Fik Datové struktury I Jirka Fik Datové struktury I 4. doácí úkol: Eterí tříděí Aortizovaá aalýza Ikreetace biárího čítače Dyaické ole BB[α]-stro Stručé zadáí Nasat rora, který setřídí velký soubor čísel Celý vstu se evejde do aěti RAM Všechy datové struktury i alority si usíte aroraovat sai, tj. esíte oužívat std::vector, std::a, std::sort a odobě Počet získaých bodů závisí a době běhu rorau Proray testujte v Uiové laboratoři a Malé Straě, kde se k ostatí chovejte ohledulě! Terí odevzdáí: 0. 0. 06 Podrobosti: htts://ktil.ff.cui.cz/ fik/ Slay stro (a,b)-stro a červeo-čerý stro 6 Hešováí 8 Dyaizace Jirka Fik Datové struktury I 5 0 Literatura Jirka Fik Datové struktury I 6 Aortizovaá aalýza Aortizovaá aalýza V aortizovaé aalýze je čas otřebý k vykoáí oslouosti oerací v datové struktuře růěrová očte vykoaých oerací, ař. ejhorší říad aortizovaá složitost Ikreetace -bitového čítače O() O() Dyaického ole O() O() Aortizovaá aalýza Ikreetace biárího čítače Dyaické ole BB[α]-stro Slay stro (a,b)-stro a červeo-čerý stro Metody Areovaá aalýza Účetí etoda Poteciálí etoda 6 Hešováí 8 Dyaizace Jirka Fik Datové struktury I 7 0 Literatura Jirka Fik Datové struktury I 8

Ikreetace biárího čítače Biárí čítač Máe -bitový čítač Při oeraci Icreet se osledí ulový bit zěí a a všechy ásledující jedičkové bity se zěí a 0 Počet zěěých bitů v ejhorší říadě je Kolik bitů se zěí ři k oeracích Icreet? Areovaá aalýza Posledí bit se zěí ři každé oeraci tedy k-krát Předosledí bit se zěí ři každé druhé oeraci tedy v růěru k/-krát i-tý bit od koce se zěí každých i oerací tedy v růěru k/ i -krát Celkový růěrý očet zě bitů je i=0 k/i k i=0 /i = k Ikreetace biárího čítače Účetí etoda Zěa jedoho bitu stojí jede žeto a a každou oeraci dostaee dva žetoy U každého jedičkového bitu si uschováe jede žeto Při ikreetu áe vyulováí jedičkových bitů ředlaceo Oba žetoy využijee a jediou zěu ulového bitu a jedičku a ředlaceí vyulováí Poteciálí etoda Poteciál i i-tého bitu je 0, jestliže i-tý bit je ulový, jiak i = Poteciál čítače Φ je součet oteciálů všech bitů Poteciál řed rovedeí oerace je Φ a o rovedeí je Φ Chcee dokázat: aortizovaý čas = skutečý čas + (Φ Φ) Necht j je vyulovaých jediček ři jedé oeraci Icreet Skutečý čas oerace (očet zěěých bitů) je j + Φ Φ = j Aortizovaý čas = skutečý čas + (Φ Φ) = j + + ( j) = Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 0 Toto je zásadí fakt aortizovaé aalýzy. Poteciál je jako baka, do které ůžee uložit eíze (čas), jestliže oerace byla levá (rychle rovedeá). Při drahých (dlouho trvajících) oeracích usíe aoak z baky vybrat (sížit oteciál), abycho oeraci zalatili (stihli rovést v aortizovaé čase). V aortizovaé aalýze je cíle 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š oc. Ikreetace biárího čítače Na zayšleí Co řesě zaeá celkový růěrý čas? Co řesě je aortizovaá složitost? Jaká je celková doba a rovedeí k oerací? Areovaá složitost i-tý bit se ři k oerací zěí ejvýše k/ i -krát Celkový očet zě je ejvýše i=0 k/ i i=0 ( + k/i ) + k Účetí etoda Na začátku dostaee čítač a a každý jedičkový bit otřebujee dát žeto Celkový očet sotřebovaých žetoů je ejvýše + k Poteciálí etoda Poteciál o i-té oeraci ozače Φ i a Φ 0 očátečí oteciál Aortizovaý čas i-té oerace = skutečý čas i-té oerace + (Φ i Φ i ) Celkový čas = k i= skutečý čas i-té oerace = k aortizovaý čas + k (Φi Φi) = k aortizovaý čas + Φ0 Φk k + i= Jirka Fik Datové struktury I 0 Jirka Fik Datové struktury I Sečteí suy k i= (Φi Φi) = Φ0 Φk se azývá telescoic cacellatio. Posledí erovost lye z faktů, že Φ 0 a Φ k 0. Aortizovaá aalýza Ikreetace biárího čítače Dyaické ole BB[α]-stro Slay stro (a,b)-stro a červeo-čerý stro 6 Hešováí 8 Dyaizace Jirka Fik Datové struktury I 0 Literatura Jirka Fik Datové struktury I Dyaické ole Dyaické ole Máe ole, do kterého řidáváe i ažee rvky Počet rvků ozačíe a velikost ole Jestliže = a áe řidat další rvek, tak velikost ole zdvojásobíe Jestliže = 4 a áe sazat rvek, tak velikost ole zešíe a oloviu V aalýze očítáe ouze čas a realokaci ole. Všechy ostatí čiost ři oeracích Isert i Delete trvají O() v ejhorší čase. Zajíá ás očet zkoírovaých rvků ři realokaci, rotože ředokládáe, že koírováí jedoho rvku trvá O(). Po realokaci a zkoírováí je ové ole z oloviy lé. Musíe tedy řidat rvků ebo sazat / rvků, aby došlo k dalšíu koírováí. Areovaá aalýza: Aortizovaá složitost Zkoírováí celého ole trvá O() Jestliže o realokaci ole áe rvků, ak další realokace astae ejdříve o / oeracích Isert ebo Delete Aortizovaá složitost je O() Areovaá aalýza: Celkový čas Necht k i je očet oerací ezi (i ) a i-tou realokací i ki = k Při i-té realokaci se koíruje ejvýše k i rvků ro i Po rvé se koíruje ejvýše 0 + k rvků, kde 0 je očátečí očet rvků Celkový očet zkoírovaých rvků je ejvýše 0 + k + i ki 0 + k Jirka Fik Datové struktury I Jirka Fik Datové struktury I

Dyaické ole Poteciálí etoda Uvažuje oteciál 0 okud = Φ = okud = okud = 4 a lieárí iterolaci v ostatích říadech Elicitě Φ = { okud / okud okud řidáváe a Φ okud ažee a Φ = okud řidáváe a okud ažee a Zěa oteciálu ři jedé oeraci bez realokace je Φ Φ Skutečý očet zkoírovaých rvků +(Φ Φ) aortizovaý očet = Celkový očet zkoírovaých rvků ři k oeracích je ejvýše k + Φ 0 Φ k k + 0 Celková čas k oerací je O( 0 + k) Jirka Fik Datové struktury I 4 Jirka Fik Datové struktury I 4 Aortizovaá aalýza Ikreetace biárího čítače Dyaické ole BB[α]-stro Slay stro (a,b)-stro a červeo-čerý stro Biárí vyhledávací stro Vlastosti Příklad Biárí stro (každý vrchol obsahuje ejvýše dva syy) Klíč v každé vitří vrcholu je větší ež všechy klíče v levé odstrou a eší ež všechy klíče v ravé odstrou Prvky ohou 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 6 Hešováí 8 Dyaizace 0 Literatura Jirka Fik Datové struktury I 5 7 4 6 9 Složitost Paět : O() Časová složitost oerace Fid je lieárí ve výšce strou Výška strou ůže být až Jirka Fik Datové struktury I 6 Váhově vyvážeé stroy: BB[α]-stro BB[α]-stro (Nieverelt, Reiold [6]) Biárí vyhledávací stro Počet vrcholů v odstrou vrcholu u ozače s u Pro každý vrchol u latí, že odstroy obou syů u usí ít ejvýše αs u vrcholů Do s u zaočítáváe i vrchol u. V literatuře ůžee ajít růzé variaty této odíky. Podstaté je, aby oba ostroy každého vrcholu ěli zhruba stejý očet vrcholů. Pro α = lze BB[α]-stro sestrojit, ale oerace Isert a Delete by byly časově áročé. Pro α = by výška BB[α]-stro ohla být lieárí. < α < Výška BB[α]-strou Podstroy všech vuků kořee ají ejvýše α vrcholů Podstroy všech vrcholů v i-té vrstvě ají ejvýše α i vrcholů α i je ro i lo α () Výška BB[α]-strou je Θ(lo ) Oerace Build: Vytvořeí BB[α]-strou ze setříděého ole Prostředí rvek dáe do kořee Rekurzivě vytvoříe oba odstroy Časová složitost je O() Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 7 BB[α]-stro: Oerace Isert a Delete Oerace Isert (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í odíku, tak celý jeho odstro zovu vytvoříe oerací Build (složitost: aortizovaá aalýza) Aortizovaá časová složitost oerací Isert a Delete: Areovaá etoda Jestliže odstro vrcholu u o rovedeí oerace Build á s u vrcholů, ak další orušeí vyvažovací odíky ro vrchol u astae ejdříve o Ω(s u) řidáí/sazáí rvků v odstrou vrcholu u (Cvičeí.) Aortizovaý čas vyvažovaí jedoho vrcholu je O() Při jedé oeraci Isert/Delete se rvek řidá/saže v Θ(lo ) odstroech Aortizovaý čas vyvažovaí ři jedé oeraci Isert ebo Delete je O(lo ) Jaký je celkový čas k oerací? 4 Při hledáí listu ro ový vrchol stačí a cestě od kořee k listu kotrolovat, zda se řidáí vrcholu do odstrou sya eoruší vyvažovací odíka. Pokud se v ějaké vrcholu odíka oruší, tak se hledáí ukočí a celý odstro včetě ového rvku zovu vybuduje. Eistují ravidla ro rotováí BB[α]-stroů, ale ta se á des ehodí. Oerace Build odstrou vrcholu u trvá O(s u) a ezi dvěi oeracei Build odstrou u je Ω(s u) oerací Isert ebo Delete do ostrou u. Všiěte si aaloie a dyaický ole. 4 Ituitivě bycho ohli říct, že v ejhorší říadě BB[α]-stro ejrve vyvážíe v čase O() a oté rovádíe jedotlivé oerace, a roto celkový čas je O( + k lo ), ale eí to ravda. Proč? Jirka Fik Datové struktury I 8 Jirka Fik Datové struktury I 8

BB[α]-stro: Oerace Isert a Delete Aortizovaá časová složitost oerací Isert a Delete: Poteciálí etoda V této aalýze uvažujee je čas a ostaveí odstrou, zbytek trvá O(lo ) Necht ostaveí odstrou s s u rvky vyžaduje ejvýše ds u istrukcí Poteciál Φ(u) vrcholu u defiujee { 0 okud s u.left = s u.riht = su Φ(u) = ds u okud a {s u.left, s u.riht} = αs u Poteciál Φ(u) ůže i klesout. Kostata c je závislá je a araetru α. Pokud u eí a cestě z kořee do vložeého/sazaého rvku, tak skutečý čas ve vrcholu u je ula a Φ(u) = Φ (u). Pokud vrcholu u eřestavíe odstro, tak skutečý čas je ula oteciál vrcholu u vzroste ejvýše o cd. Na řestavěí odstrou vrcholu u otřebujee ds u istrukcí a řesě o tolik klese oteciál vrcholu u. Součet oteciálů všech vrcholů v jedé libovolé vrstvě je ejvýše d, rotože každý vrchol atří do ejvýše jedoho odstrou vrcholu z daé vrstvy. Tudíž oteciál strou Φ je vždy ejvýše dh. Též lze ahlédout, že každý vrchol je zaočítá v ejvýše h oteciálech vrcholů. a lieárí iterolací v ostatích říadech Poteciál BB[α]-strou Φ je součet oteciálů vrcholů Při vložeí/sazáí rvku oteciál Φ(u) zvýší ejvýše o cd (Cvičeí.) Pro { každý vrchol u: Skutečý očet istrukcí ve vrcholu u + Φ (u) Φ(u) cd okud u leží a cestě z kořee do vložeého/sazaého rvku 0 jiak Počet istrukcí ro jedu oeraci + Φ Φ cdh, kde h je výška strou 0 Φ dh = O( lo ) Celkový čas a k oerací Isert ebo Delete je O((k + ) lo ) Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 9 Cvičeí:.. Dokažte, že všechy listy v BB[α]-strou jsou v hloubce Θ(lo ). Pokuste se určit co řesěji iiálí a aiálí hloubku listů... Počet vrcholů v odstrou vrcholu u o vybalacováí je s u. Najděte iiálí očet oerací Isert a Delete, který zůsobí orušeí vyvažovací odíky ve vrcholu u... Najděte řesou foruli ro oteciál vrcholu v aortizovaé aalýze BB[α]-strou v oteciálí etodě. Dále řesě sočtěte, o kolik se aiálě zvýší oteciál vrcholu ři vložeí/sazáí vrcholu v odstrou..4. Pokud ejrve BB[α]-stro vybudujee ze setříděého sezau a oté rovedee k oerací, tak celkový čas je O( + k lo ), což je ro k << leší odhad ež O((k + ) lo ). Je tedy celkový čas a k oerací Isert ebo Delete O( + k lo ) začíáe-li z libovolého BB[α]-strou s listy (bez očátečího vyvážeí)?.5. Vyyslete ravidla ro rotováí v BB[α]-stroech ři oeracích Isert a Delete tak, aby složitost v ejhorší říadě byla O(lo ). Pro jaké hodoty araetru α dokážete slit vyvažovací odíku BB[α]-strou? Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro 6 Hešováí 8 Dyaizace 0 Literatura Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 0 Staticky otiálí stro Slay stro (Sleator, Tarja [5]): Oerace Slay rvku Cíl Pro daou oslouost oerací Fid ajít biárí vyhledávací stro iializující celkovou dobu vyhledáváí. Zi ste: Otec rvku je koře C A Forálě Máe rvky,..., s váhai w,..., w. Cea strou je i= wihi, kde hi je hloubka rvku i. Staticky otiálí stro je biárí vyhledávací stro s iiálí ceou. Kostrukce (Cvičeí.) O ( ) triviálě dyaický roraováí O ( ) vylešeé dyaické roraováí (Kuth []) Jak ostuovat, když ezáe váhy řede? Poocí rotací bude udržovat často vyhledávaé rvky blízko kořee Oerací Slay rotujee zadaý rvek až do kořee Oerace Fid vždy volá Slay a hledaý rvek A B B C Zi-zi ste: a jsou oba ravýi ebo oba levýi syy D A C B A B C D Zi-za ste: je ravý sy a je levý sy ebo oačě D A A B C D B C Jirka Fik Datové struktury I Jirka Fik Datové struktury I Slay stro: Oerace Slay rvku Zi-za ste jsou ouze dvě (jedoduché) rotace rvku s aktuálí otce D D Slay stro: Aortizovaá aalýza Lea Jestliže a + b, ak lo (a) + lo (b). A B C A B Zi-zi ste jsou taky dvě rotace, D C A B C A D Důkaz Platí 4ab = (a + b) (a b) Z erovostí (a b) 0 a a + b lye 4ab Zloaritováí dostáváe lo 4 + lo a + lo b 0 C A B C D B A B C D ale dvě rotace rvku s aktuálí otce by vedli ke šatéu výsledku D D A C A D A B B C B C Začeí Necht velikost s() je očet vrcholů v odstrou (včetě ) Poteciál vrcholu je Φ() = lo (s()) Poteciál Φ strou je součet oteciál všech vrcholů s a Φ jsou velikosti a oteciály o jedé rotaci Aalyzujee očet jedoduchých rotací a oteciál je baka rotací Jirka Fik Datové struktury I Jirka Fik Datové struktury I 4

Slay stro: Zi ste Slay stro: Zi-za ste C A A D A B C D A B B C B C Aalýza Φ () = Φ() Φ () < Φ () Φ (u) = Φ(u) ro všechy ostatí vrcholy u Φ Φ = (Φ (u) Φ(u)) u = Φ () Φ() + Φ () Φ() Φ () Φ() Aalýza Φ () = Φ() Φ() < Φ() Φ () + Φ () Φ () s () + s () s () s () s () + s () s () Použijee lea: a + b lo (a) + lo (b) lo s () s () s () + lo s () lo s () + lo s () lo s () 4 Φ Φ = Φ () Φ() + Φ () Φ() + Φ () Φ() (Φ () Φ()) Jirka Fik Datové struktury I 5 Jirka Fik Datové struktury I 6 Slay stro: Zi-zi ste D A C B A B C D Aalýza Φ () = Φ() Φ() < Φ() Φ () < Φ () s() + s () s () Φ() + Φ () Φ () Φ Φ = Φ () Φ() + Φ () Φ() + Φ () Φ() (Φ () Φ()) Slay stro: Aalýza Aortizovaý čas Aortizovaý čas jedé zizi ebo ziza rotace: skutečý čas + Φ Φ + (Φ () Φ()) = (Φ () Φ()) Aortizovaý čas jedé zi rotace: skutečý čas + Φ Φ + Φ () Φ() + (Φ () Φ()) Necht Φ i je oteciál o i-té kroku (zi, zi-za ebo zi-zi ste) Aortizovaý čas (očet jedoduchých rotací) jedé oerace Slay: (skutečý čas + Φ i Φ i ) + (Φ i() Φ i ()) i-tý krok i-tý krok + (Φ koec() Φ 0()) + lo = O(lo ) Aortizovaý čas jedé oerace Slay je O(lo ) Skutečý čas k oerací Slay Poteciál vždy slňuje 0 Φ lo Rozdíl ezi koečý a očátečí oteciále je ejvýše lo Celkový čas k oerací Slay je O(( + k) lo ) Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 8 Zi rotaci oužijee ejvýše jedou a roto zaočítáe +. Rozdíly Φ () Φ() se teleskoicky odečtou a zůstae á rozdíl oteciálů vrcholu a koci a a začátku oerace Slay. Na očátku je oteciál vrcholu ezáorý a a koci je kořee, a roto jeho oteciál je lo (). Slay stro: Oerace Isert Vložeí rvku Najdee vrchol u s klíče, který je ejbližší k Slay(u) Vložit ový vrchol s rvke u u L R R L Aortizovaá složitost Oerace Fid a Slay: O(lo ) Vložeí ového vrcholu oteciál Φ vzroste ejvýše o Φ () + Φ (u) lo Aortizovaá složitost oerace Isert je O(lo ) Jirka Fik Datové struktury I 8 Jirka Fik Datové struktury I 9 Slay stro: Oerace Delete. doácí úkol: Slay stroy Aloritus Slay() L levý odstro if L je rázdý the 4 Sazat vrchol 5 else 6 Najít ejvětší rvek a v L 7 Slay(a) 8 L levý odstro a # a eá ravého sya 9 Sloučit vrcholy a a Pokud L je erázdý, tak L R a R a L R Stručé zadáí Ileetujte Slay stro s oeracei Slay, Fid, Isert Ileetujte aiví Slay stro, který v oeraci Slay aivě oužívá je jedoduché rotace ísto dvojitých Měřte růěrou hloubku hledaého rvku ři oeracích Fid Aalyzujte závislost růěré hloubky hledaých rvků a očtu rvků v Slay strou a velikosti hledaé odožiy Aalyzujte růěrou hloubku hledaých rvků v zákeřé testu Terí odevzdáí:.. 06 Geerátor dat a další odrobosti: htts://ktil.ff.cui.cz/ fik/ L Jirka Fik Datové struktury I 0 Jirka Fik Datové struktury I

Cvičeí:.. Najděte aloritus, který sestrojí staticky otiálí stro v čase O ( )... Necht K [i, j] je rvek v kořei staticky otiálího strou obsahující ouze rvku i,..., j. Dokažte, že K [i, j ] K [i, j] K [i +, j]... Poocí erovosti z ředchozího říkladu ajděte aloritus, který sestrojí staticky otiálí stro v čase O ( )..4. Najděte oslouost oerací Fid, která z libovolého očátečího Slay strou vytvoří cestu (stro výšky )..5. Uvažuje aiví slay stro, který využívá je jedoduché rotace. Najděte oslouost oerací Fid, která á v aiví slay strou složitost Ω(k), kde k je vái zvoleý očet oerací Fid..6. Měje ve slay strou uložeu ožiu rvků S a aalyzuje vyhledáváí odožiy S S. Nejrve každý rvek S jedou vyhledáe (saozřejě s využití oerace Slay). Dokažte, že ásledé (oakovaé) vyhledáí rvků z ožiy S á aortizovaou složitost O(lo S ) a sočtěte celkovou složitost k vyhledáí. Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro (a,b)-stro Červeo-čerý stro 6 Hešováí 8 Dyaizace 0 Literatura Jirka Fik Datové struktury I Jirka Fik Datové struktury I Vyhledávací stro Vlastosti Vitří vrcholy ají libovolý očet syů (tyicky alesoň dva) Vitří vrchol s k syy á k setříděých klíčů V každé vitří vrcholu je i-tý klíč větší ež všechy klíče v i-té odstrou a eší ež všechy klíče v (i + ) odstrou ro všechy klíče i Prvky ohou být uložey ouze v listech ebo též ve vitřích vrcholech (u každého klíče je uložea i hodota) Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro (a,b)-stro Červeo-čerý stro Příklad 0 6 Hešováí 5 8 5 0 5 4 7 9 7 99 8 Dyaizace 0 Literatura Jirka Fik Datové struktury I Jirka Fik Datové struktury I 4 (a,b)-stro (Bayer, McCreiht []) Vlastosti a, b jsou celá čísla slňující a a b a (a,b)-stro je vyhledávací stro Všechy vitří vrcholy kroě kořee ají alesoň a syů a ejvýše b syů Koře á ejvýše b syů Všechy listy jsou ve stejé výšce Pro zjedodušeí uvažujee, že rvky jsou je v listech (a,b)-stro: Oerace Isert Vložte rvek s klíče 4 do ásledujícího (,4)-strou 5 6 7 5 6 7 8 Nejrve ajdee srávého otce, jeuž řidáe ový list Příklad: (,4)-stro 4 5 6 7 4 5 6 7 8 0 Oakovaě rozdělujee vrchol a dva 5 8 0 5 5 4 7 9 99 4 4 5 6 7 6 7 8 Jirka Fik Datové struktury I 5 Jirka Fik Datové struktury I 6 (a,b)-stro: Oerace Isert Aloritus Najít otce v, kteréu ový rvek atří Přidat ový list do v while de(v) > b do # Najdee otce u vrcholu v 4 if v je koře the 5 Vytvořit ový koře u s jediý sye v 6 else 7 u otec v # Rozdělíe vrchol v a v ad v 8 Vytvořit ového sya v utci u a uí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 Musíe ještě dokázat, že o rovedeí všech oerací dooravdy dostaee (a,b)-stro. Ověříe, že rozděleé vrcholy ají alesoň a syů (ostatí ožadavky jsou triviálí). Rozdělovaý vrchol á 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. Časová složitost Lieárí ve výšce strou (ředokládáe, že a, b jsou evé araetry) Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 7

(a,b)-stro: Oerace Delete (a,b)-stro: Oerace Delete Sažte rvek s klíče 4 z ásledujícího (,4)-strou Nalezee a sažee list 5 4 6 7 4 5 6 7 8 5. 6 7 5 6 7 8 Přesuee jedo sya od bratra ebo sojíe vrchol s bratre 6 5 5 7 6 7 Aloritus Najít list l obsahující rvek s daý klíče v otec l Sazat 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 Sazat u if v eá žádého bratra the Sazat koře (otec v) a astavit v jako koře else 4 v otec v 5 6 7 8 5 6 7 8 Jirka Fik Datové struktury I 8 Jirka Fik Datové struktury I 9 Při řesuu je uté uravit klíče ve vrcholech u, v a jejich otci. Vrchol u ěl a, vrchol v ěl a syů. Po jejich sjedoceí áe vrchol s a b syy. (a,b)-stro: Aalýza Výška (a,b)-stro výšky d á alesoň a d a ejvýše b d listů. Výška (a,b)-strou slňuje lo b d + lo a. Složitost Časová složitost oerací Fid, Isert ad Delete je O(lo ). Počet odifikovaých vrcholů ři vytvořeí strou oerací Isert Vytváříe (a,b)-stro oocí oerace Isert Zajíá ás celkový očet vyvažovacích oerací Při každé štěeí vrcholu vytvoříe ový vitří vrchol Po vytvořeí á stro ejvýše vitřích vrcholů Celkový očet štěeí je ejvýše a očet odifikací vrcholů je O() Aortizovaý očet odifikovaých vrcholů a jedu oeraci Isert je O() Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 40 Při jedé vyvažovací oeraci (štěeí vrcholu) je očet odifikovaých vrcholů oezeý kostatou (štěeý vrchol, otec a syové). Asytoticky jsou očty odifikovaých vrcholů a vyvažovacích oerací stejé. (a,b)-stro: Paralelí řístu Cíl Uožit efektí aralelizaci oerací Fid, Isert a Delete (ředoklad: b a). Oerace Isert Prevetivě rozdělit každý vrchol a cestě od kořee k hledaéu listu s b syy a dva vrcholu. Oerace Delete Prevetivě sloučit každý vrchol a cestě od kořee k hledaéu listu s a syy s bratre ebo řesuout syovce. Jirka Fik Datové struktury I 40 Jirka Fik Datové struktury I 4 (a,b)-stro: Paralelí řístu: Příklad Vložte rvek s klíče 6 do ásledujícího (,4)-strou Nejrve rozdělíe koře 0 0 5 5 8 5 8 0 4 4 7 9 4 7 9 40 50 0 0 5 5 8 5 8 0 4 4 7 9 4 7 9 40 50 Pak okračujee do levého sya, který taky rozdělíe 0 5 0 5 8 5 8 0 4 4 7 9 4 7 9 40 50 Vrchol s klíče 8 eí třeba rozdělovat a ový klíč ůžee vložit 0 5 0 5 7 8 5 8 0 4 40 50 4 6 7 9 4 7 9 A-sort (Guibas, McCreiht, Plass, Roberts [9]) Cíl Setřídit skoro setříděé ole Modifikace (a,b)-strou Máe uložeý ukazatel a vrchol s eješí klíče Příklad: Vložte klíč s hodotou i = 6 Začee od vrcholu s eješí klíče a ostuujee ke kořei, dokud i eatří odstrou aktuálího vrcholu V ráci tohoto odstrou sustíe oeraci Isert Výška odstrou je Θ(lo f i), kde f i je očet klíčů eších ež i Prvek i = 6 atří do tohoto odstrou Neješí klíč 8 6 9 5 8 0 40 Výška odstrou Jirka Fik Datové struktury I 4 Jirka Fik Datové struktury I 4

A-sort: Aloritus Iut: Poslouost,,..., T rázdý (a,b)-stro for i to # Prvky rocházíe od koce do # Najdee odstro, do kterého vložíe i 4 v list s eješí klíče 5 while v eí koře a i je větší ež eješí klíč v otci vrcholu v do 6 v otec v 7 Vložíe i do odstrou vrcholu v Outut: Projdee celý stro a vyíšee všechy klíče (i-order traversal) A-sort: Složitost (Brow, Tarja [], Mehlhor [5]) Nerovost ezi aritetický a eoetrický růěre Jestliže a,..., a ezáorá reálá čísla, ak latí i= ai a i. Časová složitost Necht f i = {j > i; j < i} je očet klíčů eších ež i, které již jsou ve strou ři vkládáí i Necht F = {(i, j); i > j, i < j} = i= fi je očet iverzí Složitost alezeí odstrou, do kterého i atří: O(lo f i) 4 Nalezeí těchto odstroů ro všechy odstroy 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 Celková složitost: O( + lo(f/)) 7 Složitost v ejhorší říadě: O( lo ) rotože F 8 Jestliže F lo, ak složitost je O( lo lo ) i= Jirka Fik Datové struktury I 44 Jirka Fik Datové struktury I 45 (a,b)-stro: Závěr Počet odifikovaých vrcholů ři oerací Isert a Delete (Cvičeí 4.8) [] Předoklad: b a Počet odifikovaých vrcholů ři l oeracích Isert a k Delete je O(k + l + lo ) Aortizovaý očet odifikovaých vrcholů ři oeracích Isert a Delete je O() Podobé datové struktury B-tree, B+ tree, B* tree -4-tree, --4-tree, etc. Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro (a,b)-stro Červeo-čerý stro 6 Hešováí Alikace File systes ař. Et4, NTFS, HFS+, FAT Databáze 8 Dyaizace 0 Literatura Jirka Fik Datové struktury I 46 Jirka Fik Datové struktury I 47 Červeo-čeré stroy (Guibas, Sedewick [0]) Defiice Biárí vyhledávací stro s rvky uložeýi 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 usí být čerý Neoviá odíka, která je zjedodušuje oerace. V říkladu uvažujee, že listy jsou rerezetováy NIL/NULL ukazately, a tedy iaiárí vrcholy bez rvků. Někdy se též vyžaduje, aby koře byl čerý, ale tato odíka eí utá, rotože koře ůžee vždy řebarvit a čero bez orušeí ostatích odí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 48 Jirka Fik Datové struktury I 48 Červeo-čeré stroy: Ekvivalece s (,4)-stroy Vrchol bez červeých syů Převod ezi červeo-čerýi stroy a (,4)-stroy eí jedozačý, rotože vrchol (,4)-strou se třei syy a rvky < y lze řevést a čerý vrchol červeo-čerého strou s rvke a ravý červeý sye y ebo s rvke y a levý červeý sye. Vrchol s jedí čeveý sye 0 5 0 0 0 5 5 5 5 5 Vrchol s dvěa červeýi syy 5 5 8 4 8 7 9 4 7 9 Jirka Fik Datové struktury I 49 Jirka Fik Datové struktury I 49

Červeo-čeré stroy: Oerace Isert S využití syetrií 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é stro vybalacovat Balacováí Vrchol a jeho otec jsou červeé vrcholy a toto je jediá orušeá odíka Děda vrcholu je čerý Musíe uvažovat tyto říady: Strýc u je čerý ebo červeý Vrchol je ravý ebo levý sye (odobě ro vrchol ) Jirka Fik Datové struktury I 50 Jirka Fik Datové struktury I 50 Červeo-čeré stroy: Oerace Isert, strýc je čerý Červeo-čeré stroy: Oerace Isert, strýc je červeý u u u 4 5 u 4 5 u u...... 4 5 u Pořadí rvků v (,4)-strou a výsledý červeo-čerý stro závisí a to, zda vrchol je ravý ebo levý sye a zda vrchol je ravý ebo levý sye. 4 5 Po rozděleí vrchol (,4)-strou se rvek řesouvá do otce, a roto je vrchol červeý. Jirka Fik Datové struktury I 5 Jirka Fik Datové struktury I 5 Červeo-čeré stroy: Vlastosti Počet čerých vrcholů a cestě ke kořei je stejý jako výška odovídajícího (,4)-strou, a tedy výška červeo-čerého strou je ejvýše dvojásobek výšky (,4)-strou. Důsledky ekvivalece s (,4)-stroy Výška červeo-čerého strou je Θ(lo ) Časová složitost oerací Fid, Isert a Delete je O(lo ) Aortizovaý očet odifikovaých vrcholů ři oerací Isert a Delete je O() Paralelí řístu (to-dow balacováí) Alikace Associativí ole ař. std::a ad std::set v C++, TreeMa v Java The Coletely Fair Scheduler i the Liu kerel Coutatioal Geoetry Data structures Jirka Fik Datové struktury I 5 Jirka Fik Datové struktury I 5 Cvičeí: 4.. Jak v (a,b)-strou (obecé vyhledávací strou) ajít rvek s eješí/ejvětší klíče? Jak ajít rvek s ejbližší klíče (tj. eješí větší klíč ebo ejvětší eší klíč k daéu klíči)? 4.. Uravte (a,b)-stro (obecý vyhledávací stro) tak, aby bylo ožé efektivě ajít k-tý eješí/ejvětší rvek ro daé řirozeé k. Dokážete v takto odifikovaé strou určit ořadí daého rvku? 4.. V klasické ileetaci (a,b)-strou á každý vrchol alokováo ole velikosti b ro klíče a ukazatele a syy. Toto ole ůže být až z oloviy evyužito, což ůže být výzaý lýtváí aěti. Pokuste se uravit oerace Isert a Delete tak, aby bylo zaručeo efektivější využití tohoto ole. 4.4. Přesě oište ileetaci (a,b)-strou a zaykáí jedotlivých vrcholů v oeracích Isert a Delete tak, aby srávě fuoval aralelí řístu. 4.5. Jak vytvořit (a,b)-stro ze setříděého ole (co ejrychleji)? 4.6. Eistuje asytoticky rychlejší ostu vytvořeí (a,b)-strou z esetříděého ole ež vložeí všech rvků? 4.7. Najděte asytoticky ejrychlejší zůsob sjedoceí dvou (a,b)-stroů, jestliže jede (a,b)-stro eá všechy rvky eší ež je eješí rvek druhého. 4.8. Dokažte, že v (a,b)-strou ro b a je očet odifikovaých vrcholů O(k + l + lo ) ři l oeracích Isert a k oeracích Delete. Pro zjedodušeí ůžete uvažovat (,4)-stro. Dále ukažte, že odíka b a je utá. Jirka Fik Datové struktury I 5 4.9. Vyyslete oerace Isert a Delete v (,5)-strou ro aralelí alikace tak, aby aortizovaý očet odifikovaých vrcholů byl O(). 4.0. Vyyslete ravidla ro oeraci Delete v červeo-čerých stroech oocí ekvivalece s (,4)-stroy. 4.. Uravte oerace Isert a Delete v červeo-čeré strou tak, že tyto oerace rojdou stro je jedou od kořee k listu (bez zětého růchodu od listu ke kořei). Lze tuto odifikaci oužít k aralelizaci? Jirka Fik Datové struktury I 5

Halda Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro d-reulárí halda Bioiálí halda Fiboacciho halda Základí oerace Isert FidMi DeleteMi DecreaseKey: Sížit hodotu klíče v daé vrcholu Haldový ivariat Klíč v každé vrcholu větší ebo rove klíči v otci. 6 Hešováí 8 Dyaizace Alikace Priorití frota Hea-sort Dijkstrův aloritus (ejkratší cesta) Jaríkův (Priův) aloritus (iiálí kostra) 0 Literatura Jirka Fik Datové struktury I 54 Jirka Fik Datové struktury I 55 d-reulárí halda (Johso []) Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro Vlastosti Každý vrchol á ejvýše d syů Všechy vrstvy kroě osledí jsou úlě zalěé Posledí hladia je zalěá zleva d-reulárí halda Bioiálí halda Fiboacciho halda Příklad -reulárí (biárí) haldy 8 6 Hešováí 0 6 5 9 8 Dyaizace 0 Literatura Jirka Fik Datové struktury I 56 Cvičeí 5. Jaká je řesá výška d-reulárí haldy s rvky? Jirka Fik Datové struktury I 57 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í hadly s rvky je ejvýše + lo d. Najděte foruli udávající řesou výšku d-reulárí haldy. d-reulárí halda: Reresetace Biárí halda uložeá ve strou 8 0 6 5 9 Biárí halda uložeá v oli A vrchol a ozici i á otce a ozici (i )/ a syy a ozici i + a i + : 8 0 6 5 9 Paret Childre Cvičeí 5.: Určete ozice otce a syů ro obecou d-reulárí haldu Jirka Fik Datové struktury I 57 Jirka Fik Datové struktury I 58 d-reulárí halda: Oerace Isert d-ary hea: Oerace Isert a DecreaseKey Příklad: Vlože rvek s klíče 5 0 8 6 5 Isert: Aloritus Iut: Nový rvek s klíče v rví volý blok v oli Nový rvek uložíe a ozici v while v eí koře a otec vrcholu v á klíč větší ež do 4 Prohodíe rvky a ozicích v a 5 v 9 5 8 0 6 5 9 5 Oerace DecreaseKey Sižíe hodotu klíče a okračujee odobě jako ři oeraci Isert Časová složitost O(lo d ) Jirka Fik Datové struktury I 59 Jirka Fik Datové struktury I 60

Pro řesější aalýzu ás zajíá závislost složitosti a hodotě d. Později se á bude hodit astavovat d odle hodost a vstuu. Oerace DeleteMi 8 0 6 5 9 Aloritus Přesuee osledí rvek do kořee v while Některý se syů vrcholu v á klíč eší ež v do u sy vrcholu v s eší klíče 4 Prohodíe rvky ve vrcholech u a v 5 v u Složitost O(d lo d ) Jirka Fik Datové struktury I 60 Jirka Fik Datové struktury I 6 d-reulárí halda: Oerace Build d-reulárí halda: Oerace Build Cíl Vytvořit haldu z daého ole rvků Aloritus for r osledí ozice to rví ozice v oli do # Zracujee vrchol r odobě jako ři oeraci Delete v r while Některý se syů vrcholu v á klíč eší ež v do 4 u sy vrcholu v s eší klíče 5 Prohodíe rvky ve vrcholech u a v 6 v u Korektost Podstroy všech zracovaých vrcholů tvoří haldu Lea (Cvičeí 5.5) Složitost h d = d h (d ) h=0 Zracováí vrcholu s odstroe výšky h: O(dh) Úlý odstro výšky h á d h listů Každý list atří do ejvýše jedoho úlého odstrou výšky h. Počet vrcholů s odstroy výšky h je ejvýše + d h d h Celková č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 6 Jirka Fik Datové struktury I 6 Podstroe vrcholu u rozuíe vrchol u a všechy vrcholy od u. Čle + zaočítáváe, rotože jede odstro ůže být eúlý. Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro d-reulárí halda Bioiálí halda Fiboacciho halda 6 Hešováí 8 Dyaizace Jirka Fik Datové struktury I 6 0 Literatura Jirka Fik Datové struktury I 64 Bioiálí stro Bioiálí stro: Příklad Defiice Bioiálí stro B 0 řádu 0 je jede vrchol Bioiálí stro B k řádu k á koře, jehož syové jsou kořey bioiálích stroů řádu 0,,..., k. Rekurziví defiice bioiálího strou... B k Alterativě Bioálí stro řádu k is je vytvoře z dvou bioiálích stroů řádu k tak, že se jede stro řiojí jako ejravější sy kořee druhého strou. B 0 B B k B k B k Rekurziví defiice bioiálího strou Bioiálí stroy řádu 0,, a B 0 B B B... B k B 0 B 0 B B 0 B B B 0 B B k B k B k Jirka Fik Datové struktury I 65 Jirka Fik Datové struktury I 66

Bioiálí stro: Vlastosti Rekurziví defiice bioiálího strou... B k Možia bioiálích stroů Pozorováí Pro každé eistuje (rávě jeda) ožia bioiálích stroů růzých řádů taková, že celkový očet vrcholů je. Vztah ezi biáríi čísly a bioiálíi stroy B 0 B B k B k B k Biárí číslo = 0 0 0 0 Bioiálí halda obsahuje: B 7 B 4 B B Vlastosti Bioiálí stro B k á Příklad ro 00 rvků k vrcholů, výšku k, k syů v kořei, 0 6 5 9 aiálí stueň k, ( k ) d vrcholů v hloubce d. Podstro vrcholu s k syy je izoorfí B k. 8 5 Jirka Fik Datové struktury I 67 Jirka Fik Datové struktury I 68 Bioiálí halda (Vuillei [6]) Bioiálí halda: Výška Defiice Bioiálí halda je ožia bioiálích stroů taková, že: Každý rvek je ulože rávě v jedo vrcholu jedoho bioiálího strou Každý bioiálí stro je halda (otec á eší klíč ež sy) Žádé dva bioiálí stroy eají stejý řád Pozorováí Bioiálí halda obsahuje ejvýše lo ( + ) stroů a každý á výšku ejvýše lo. Příklad 5 Vztah ezi biáríi čísly a bioiálíi stroy 0 6 9 Biárí číslo = 0 0 0 0 8 Bioiálí halda obsahuje: B 7 B 4 B B 5 Jirka Fik Datové struktury I 69 Jirka Fik Datové struktury I 70 Bioiálí halda: Reresetace Struktuta ro vrchol bioiálího strou obsahuje rvek (klíč a hodota), ukazatel a otce, ukazatel a ejlevějšího a ejravějšího sya, Ukazatele tvoří obousěrý sojový seza syů a teto seza udržujee setříděý odle řádu. Bioiálí strou jsou ve sojové sezau taky setříděé odle řádu. ukazatel a levého a ravého bratra a řád ostrou. Bioiálí halda Bioálí stroy jsou uložey ve sojové sezau oocí ukazatelů a bratry. Odstraěí kořee bioiálího strou vzike bioiálí halda v čase O(). Bioiálí halda si udržuje ukazatel a stro s iiálí rvek. Oerace FidMi Triviálě v čase O() Oerace DecreaseKey Stejě jako v reulárí haldě. Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 7 Bioiálí halda: Sojeí dvou bioiálích hald Bioiálí halda: Oerace Isert a DeleteMi Sojeí dvou bioiálích stroů stejého řádu v čase O() u rak+ Oerace Isert Vytvoříe bioiálí stro řádu 0 s ový rvke Joi B 0 B... B k v B k Sojeí dvou bioiálích hald je jako sčítáí biárí čísel: sjedocujee bioiálí stroy od eješích. Složitost je O(lo ), kde je celkový očet rvků Procházíe seza stroů od eješích: Pokud stro B 0 je v haldě, tak jej sjedotíe s ový stroe B 0, číž vytvoříe B Pokud stro B je v haldě, tak jej sjedotíe s ový stroe B, číž vytvoříe B Takto okračujee až k ke strou s eješí řáde, který eí uložeý v haldě, a ový stro vložíe do haldy Složitost v ejhorší říadě je O(lo ) Aortizovaá složitost je O() odobě jako ikreetace biárího čítače Zde je důležité, že erocházíe všechy strou v haldě Příklad Bioiálí stro B 6 B 5 B 4 B B B B 0 Prví halda 0 0 0 Druhá halda 0 0 0 0 Sojeí 0 0 0 Oerace DeleteMi Odstraíe koře s iiálí rvek, číž vzike ová bioiálí halda, kterou sjedotíe se zbytke ůvodí haldy v čase O(lo ). Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 7

Stroy v haldě udržujee setříděé odle řádu. Nový stro je eješí, takže jej vložíe a začátek sezau. Líá bioiálí halda Zěa v octivé bioiálí haldě Líá bioiálí halda ůže obsahovat libovolý očet bioiálích stroů stejého řádu. Oerace Isert a Joi Pouze sojíe sezay stroů Složitost O() v ejhorší říadě Oerace DeleteMi Sažee koře s iiálí rvke Sojíe seza syů sazaého kořee s ostatíi stroy v haldě Zrekostruujee octivou bioiálí haldu Najdee ový iiálí rvek Jirka Fik Datové struktury I 7 Jirka Fik Datové struktury I 74 Líá bioiálí halda: Rekostrukce octivé bioiálí haldy Idea Dokud áe v haldě bioiálí haldy stejého řádu, jak je sojujee Použijee ole ideovaé řáde strou k vyhledáváí stroů stejého řádu Aloritus Iicializujee ole velikosti lo ( + ) ukazatele NIL for ro každý stro h v líé bioiálí haldě do o řád strou h 4 while ole[o] NIL do 5 h sojeí stroů h a ole[o] 6 ole[o] NIL 7 o o + 8 ole[o] h 9 Pole stroů řevedee a sojový seza, číž vytvoříe octivou bioiálí haldu Cvičeí 5.6 Aortizovaá složitost oerace DecreaseKey je O(lo ). Haldy: Přehled Složitosti růzých hald Biárí Bioiálí Líá bioiálí ejhorší ejhorší aortizovaě ejhorší aortizovaě Isert lo lo DecreaseKey lo lo lo lo lo DeleteMi lo lo lo lo Cvičeí 5.7 Je ožé vytvořit haldu, která á aortizovaou složitost oerací Isert a DeleteMi leší ež O(lo )? Další cíl Zrychlit oeraci DecreaseKey Postu V líé bioiálí haldě usí každý stro být izoorfí bioiálíu strou. Ve Fiboacciho haldě teto ožadavek elatí. Jirka Fik Datové struktury I 75 Jirka Fik Datové struktury I 76 Fiboacciho halda (Freda, Tarja [7]) Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro d-reulárí halda Bioiálí halda Fiboacciho halda 6 Hešováí Základí vlastosti a ovoleé oerace Fiboacciho halda je seza haldových stroů Řád strou je očet syů kořee Síe sojit dva stroy stejého řádu 4 Každéu vrcholu kroě kořee síe odojit ejvýše jedoho sya Do rerezetace vrcholu řidáe bitovou iforaci, zda vrchol již o sya řišel Koře ůže řijít o libovolý očet syů Stae-li se vrchol kořee, tak jej odzačíe Je-li koře řioje do jiého strou, tak sí ztratit ejvýše jedoho sya, dokud se estae zovu kořee Síe vytvořit ový stro s jediý rvek 5 Síe sazat koře strou 6 8 Dyaizace Oerace stejé jako v líé bioiálí haldě Isert, FidMi, DeleteMi 0 Literatura Jirka Fik Datové struktury I 77 Jirka Fik Datové struktury I 78 Doosud robíraé datové struktury ají jasě defiovaou strukturu a oerace jsou avržey tak, aby tuto strukturu zachovávaly. Fiboacciho halda je defiovaá ovoleýi oeracei a vlastosti se odvozují z oerací. Podobě jako bioiálí halda, ale stroy eusí být izoorfí s bioiálíi stroy. Podobě jako bioiálí halda, ale vztahy ro očet vrcholů ebo výšku elatí. Tvrzeí, že odstroy vrcholu řádu k ají řád 0,,..., k budee uset uravit. 4 Podobě jako v bioiálí haldě koře jedoho strou říojíe jako sya kořee druhého strou. 5 Nové rvky vkládáe odobě jako v líé bioiálí haldě. 6 Neješí rvek ažee odobě jako v líé bioiálí haldě, a to včetě ásledé rekostrukce, kde sojujee stroy stejého řádu. Fiboacciho halda: Oerace DecreaseKey Idea Daéu vrcholu sížíe hodotu klíče a odojíe jej od otce Pokud otec je ozačeý, tak jej taky odojíe Pokud je děda taky ozačeý, tak jej taky odojíe Takto okračuje, dokud earazíe a eozačeý vrchol ebo koře Příklad 4 7 6 A A C D E 4 B B 7 C 8 D Decrease to 6 F E F Jirka Fik Datové struktury I 78 Jirka Fik Datové struktury I 79

Fiboacciho halda: Oerace DecreaseKey Aloritus Iut: Vrchol u a ový klíč k Sížíe klíč vrcholu u if u je koře ebo otec vrcholu u á klíč ejvýše k the retur # Haldový ivariat je zachovaý 4 otec vrcholu u 5 Odzačit vrchol u 6 Odojit vrcholu u od otce a řiojit u k sezau stroů 7 while eí koře a je ozačeý do 8 u 9 otec u 0 Odzačit vrchol u Odojit vrcholu u od otce a řiojit u k sezau stroů if eí koře the Ozačit vrchol Fiboacciho halda: Ivariat Ivariat Pro každý vrchol a jeho i-tého sya s latí, že s á alesoň Důkaz i syů, okud s je ozačeý, a i syů, okud s eí ozačeý. Všechy ovoleé oerace zachovávají latost ivariatu Iit: Prázdá halda ivariat slňuje Isert: Vytvořeí ového strou s jedí vrchole DeleteMi: Pro esazaé vrcholy se očty syů ai jejich ořadí ezěí Joi: Přiojeí strou u řádu k jako k-tého sya vrcholu 4 Odstraěí i-tého sya z vrcholu u řádu k, který je kořee Pořadí (i + )-tého až k-tého sya vrcholu u se síží o jeda 5 Odstraěí i-tého sya z eozačeého vrcholu u řádu k, který j-tý sye Pořadí (i + )-tého až k-tého sya vrcholu u se síží o jeda Před odstraěí latilo k j a o odstraěí je vrchol u ozačeý a očet syů u slňuje k j 6 Jirka Fik Datové struktury I 80 Jirka Fik Datové struktury I 8 Předokládáe, že syové jsou očíslovaí odle věku, tj. ozději vložeý sy á větší ide Halda eá žádý vrchol, a roto eeistuje vrchol orušující ivariat. Nový vrchol eá žádého sya, a tak eá sya orušující ivariat. 4 Sojujee stroy u a řádu k. Po sojeí je k-tý sy u vrcholu eozačeý a á k syů. Pořadí ostatích syů vrcholu je zachováo. 5 Ivariat je zachová, rotože se iiálí očet ožadovaých syů těchto vrcholů síží o jeda a skutečý očet je zachová. 6 Neozačeý j-tý vrchol u usel ít alesoň j syů. Po odstraěí vrcholu se očet syů vrcholu u sížil o jeda, a roto á alesoň j syů, což je iiálí ožadovaý očet syů j-tého ozačeého sya vrcholu. Fiboacciho halda: Struktura Ivariat Pro každý vrchol a jeho i-tého sya s latí, že s á alesoň i syů, okud s je ozačeý, a i syů, okud s eí ozačeý. Velikost odstrou Necht s k je iiálí očet vrcholů v odstrou vrcholu s k syy. Pak latí s k s k + s k + s k 4 + + s + s + s 0 + s 0 +. Příklad s 4 s 0 s 0 s s M M M M Jirka Fik Datové struktury I 8 Jirka Fik Datové struktury I 8 Fiboacciho halda: Struktura Velikost odstrou Necht s k je iiálí očet vrcholů v odstrou vrcholu s k syy. Pak latí s k s k + s k + s k 4 + + s + s + s 0 + s 0 +. V obecě ůžee ít Fiboacciho halda až stroů, ale o kosolidaci (součást oerace DeleteMi) ají každé dva strou růzý řád a aiálí řád strou je O(lo ). Fiboacciho čísla (Cvičeí 5.9) F 0 = 0 a F = a F k = F k + F k k i= Fi = Fk+ F k = (+ 5) k ( 5) k k 5 k F k + 5 s k F k+ s k + s 0 + k i=0 s i + F + k i=0 F i+ + k i= F i = + F k+ Důsledek ( + Stro řádu k á alesoň s k F k+ ) k+ 5 vrcholů. Proto, koře strou s vrcholy á O(lo ) syů a Fiboacciho halda á O(lo ) stroů o oeraci DeleteMi. Jirka Fik Datové struktury I 8 Jirka Fik Datové struktury I 8 Fiboacciho halda: Složitost Složitost v ejhorší říadě Oerace Isert: O() Oerace Decrease-key: O() (Cvičeí 5.0) Oerace Delete-i: O() Aortizovaá složitost: Poteciál Uvažuje oteciál Φ = t +, kde t je očet stroů v haldě je celkových očet ozačeých vrcholů Aortizovaá složitost: Oerace Isert Skutečý čas: O() Zěa oteciálu Φ Φ = Aortizovaá složitost O() Fiboacciho halda: Aortizovaá složitost oerace DecreaseKey Poteciál Φ = t +, kde t je očet stroů v haldě a je celkových očet ozačeých vrcholů Jeda iterace while-cyklu (odzačeí vrcholu a odojeí od otce) Skutečý čas: O() Zěa oteciálu Φ Φ = Aortizovaá složitost: Ostatí istrukce Skutečý čas: O() Zěa oteciálu Φ Φ = V ejhorší říadě vytvoříe ový stro a jede vrchol ozačíe Aortizovaá složitost: O() Aortizovaá složitost oerace DecreaseKey O() Jirka Fik Datové struktury I 84 Jirka Fik Datové struktury I 85

Fiboacciho halda: Aortizovaá složitost oerace DeleteMi Haldy: Shrutí Sazáí kořee a řiojeí syů k sezau stroů Skutečý čas: O(lo ) Zěa oteciálu Φ Φ = O(lo ) Aortizovaá složitost: O(lo ) Jeda iterace while-cyklu ři rekostrukci (sojeí dvou stroů) Skutečý čas: O() Zěa oteciálu Φ Φ = Aortizovaá složitost: Ostatí istrukce Skutečý čas: O(lo ) Zěa oteciálu Φ Φ = 0 Aortizovaá složitost: O(lo ) Přehled časových složitostí Biárí Bioiálí Líá bioiálí Fiboacciho worst worst aort worst aort worst aort Isert lo lo DecreaseKey lo lo lo lo lo DeleteMi lo lo lo lo lo Aortizovaá složitost oerace DeleteMi O(lo ) Jirka Fik Datové struktury I 86 Jirka Fik Datové struktury I 87 Cvičeí: 5.. Určete řesě výšku d-reulárí haldy s vrcholy. 5.. d-reulárí haldu odobě jako biárí je ožé uložit v oli. Najděte vzorce ro výočet ozice otce a syů ro daý rvek v oli. 5.. Jak byste zvýšili hodotu klíče v d-reulárí haldě? 5.4. Jak byste sazali rvek v daé vrcholu v d-reulárí haldě? 5.5. Pro d > dokažte h h=0 = d. d h (d ) 5.6. Dokažte, že aortizovaá složitost oerace DecreaseKey v líé bioiálí haldě je O(lo ). Dále určete celkovou složitost k I oerací Isert, k M oerací DeleteMi a k D oerací DecreseKey. 5.7. Je ožé vytvořit haldu, která á aortizovaou složitost oerací Isert a DeleteMi leší ež O(lo )? 5.8. Jaký je aiálí ožý očet vrcholů ve strou řádu k ve Fiboacciho haldě? 5.9. Dokažte, že Fiboacciho čísla slňují k k. i= Fi = Fk+ a Fk 5.0. Jaká je aiálí ožá výška strou ve Fiboacciho haldě s rvky? Může se stát, aby složitost oerace DecreaseKey byla Ω()? 5.. Proč Fiboacciho halda ovoluje odstrait ejvýše jedoho sya? Uvažuje eozačující Fiboacciho haldu, která ři oeraci DecreaseKey ouze odebere daý vrchol od otce, ale eozačí otce a ai eokračuje k ředků. Která tvrzeí o Fiboacciho haldě řestaou ro eozačující Fiboacciho haldu latit? Dojde ke zhoršeí časových složitostí studovaých oerací? + 5 Jirka Fik Datové struktury I 87 5.. Zěili by se časové složitost oerací, kdybycho ve Fiboacciho haldě dovolili sazat dva syy (ebo libovolý evý očet syů)? 5.. Jakou časovou složitost á Dijkstrův aloritus ři oužití robíraých hald? Při jaké oěru očtu hra a vrcholů rafu dokážete získat lieárí časovou složitost Dijkstrova aloritu? Jirka Fik Datové struktury I 87 Aortizovaá aalýza Slay stro (a,b)-stro a červeo-čerý stro 6 Hešováí 8 Dyaizace 0 Literatura Paět ová hierarchie Příklad velikostí a rychlostí růzých tyů aětí Triviálí rora size seed L cache KB GB/s L cache 56 KB 96 GB/s L cache 8 MB 6 GB/s RAM GB GB/s SDD GB 448 MB/s HDD TB MB/s Iteret 0 MB/s # Iicializace ole -bitových čísel velikosti for (i=0; i+d<; i+=d) do A[i] = i+d # Vezee každou d-tou ozici a vytvoříe cyklus A[i=0]=0 # Měříe dobu růběhu cyklu v závislosti a araetrech a d 4 for (j=0; j< 8 ; j++) do 5 i = A[i] # Dokola rocházíe cyklus d-tých ozic Jirka Fik Datové struktury I 88 Jirka Fik Datové struktury I 89 Paět ová hierarchie: Triviálí rora Tie [s] 5 0 5 d= d= 0 d= 9 d= 8 d= 7 d= 6 d= 5 d= 4 d= d= d= d= 0 0 0 4 6 8 0 4 6 8 0 lo Cache-oblivious (Frio, Leiserso, Proko, Raachadra, 999 [8]) Zjedodušeý odel aěti Uvažuje ouze a dvě úrově aěti: oalý disk a rychlá cache Paět je rozděleá a bloky (stráky) velikosti B Velikost cache je M, takže cache á P = M bloků B Procesor ůže řistuovat ouze k datů uložeých v cache Paět je lě asociativí Data se ezi diske a cache řesouvají o celých blocích a aši cíle je určit očet bloků ačteých do cache Cache-aware aloritus Aloritus zá hodoty M a B a odle ich astavuje araetry (ař. velikost vrcholu B-strou ři ukládáí dat a disk). Cache-oblivious aloritus Aloritus usí efektivě fuovat bez zalostí hodot M a B. Důsledky: Neí třeba astavovat araetry rorau, který je tak řeositelější Aloritus dobře fuuje ezi libovolýi úrověi aěti (L L L RAM) Jirka Fik Datové struktury I 90 Jirka Fik Datové struktury I 9

Pro zjedodušeí ředokládáe, že jede rvek zabírá jedotkový rostor, takže do jedoho bloku se vejde B rvků. Předokládáe, že každý blok z disku ůž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 oc elatí, viz htts://e.wikiedia.or/wiki/cpu_cache#associativity. Cache-oblivious aalýza: Scai Přečteí souvislého ole (výočet aia, součtu a odobě) Eleet Block Meory B Miiálí ožý očet řeeseých bloků je /B. Skutečý očet řeeseých bloků je ejvýše /B +. Předokládáe, že áe k disozici O() reistrů k uložeí iterátoru a aia. Obráceí ole Počet řeeseých bloků je stejý za ředokladu, že P. Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 9 Cache-oblivious aalýza: Biárí halda a vyhledáváí Biárí halda v oli: Průchod od listu ke kořei Beii of the hea Pae Accessed odes Přesěji Θ(a {, lo lo B}). Dále ředokládáe, že B. Pro jedoduchost uvažujee eúsěšé vyhledáváí. Cesta á Θ(lo ) vrcholů Posledích Θ(lo B) vrcholů leží v ejvýše dvou blocích Ostatí vrcholy jsou uložey v o dvou růzých blocích 4 Θ(lo lo B) = Θ(lo ) řeeseých bloků B Biárí vyhledáváí Porováváe Θ(lo ) rvků s hledaý rvke Posledích Θ(lo B) 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 B) řeeseých bloků Jirka Fik Datové struktury I 9 Jirka Fik Datové struktury I 9 Cache-oblivious aalýza: Meresort Příad M/ Celé ole se vejde do cache, takže řeášíe /B + O() bloků. Schéa Leth of ered array / /4 z.. Heiht of the recursio tree lo lo (/z) lo z Polovia cache je oužita a vstuí ole a druhá olovia a slité ole. Pro jedoduchost ředokládáe, že velikosti olí v jedé úrovi rekurze jsou stejé. z odovídá velikosti ole v úrovi rekurze takové, že dvě ole velikost z/ ohou 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 ohou atřit do dvou olí. 4 Fuelsort řeese O ( lo ) B P B bloků. Příad > M/ Necht z je aiálí velikost ole, která ůže být setříděá v cache Platí z M < z Slití jedé úrově vyžaduje + + O() = O B z B řeosů. 4 Počet řeeseých bloků je O ( B + lo z = O lo ) B M. 4 Jirka Fik Datové struktury I 94 Jirka Fik Datové struktury I 94 Cache-oblivious aalýza: Trasozice atic: Triviálí řístu Cache-oblivious aalýza: Trasozice atic: Triviálí řístu Strateie ro výěu stráek v cache OPT: Otiálí off-lie aloritus ředokládající zalost všech řístuů do aěti FIFO: Z cache sažee stráku, která je ze všech stráek v cachi ejdelší dobu LRU: Z cache sažee stráku, která je ze všech stráek v cachi ejdéle eoužitá Triviálí aloritus ro trasozici atice A velikost k k for i to k do for j i + to k do Swa(A ij, A ji) Předoklady Uvažujee ouze říad B < k: Do jedoho bloku cache se evejde celá řádka atice P < k: Do cache se evejde celý slouec atice Příklad: Reresetace atice 5 5 v aěti 4 5 4 5 4 5 4 4 4 44 45 5 5 5 54 55 LRU a FIFO strateie Při čteí atice o sloucích si cache aatuje osledích P řádků, takže ři čteí rvku A, již rvek A, 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ň a {0, k P i} řeosů. 5 Celkový očet řeosu je alesoň k P i= k P i = Ω ( (k P) ). Jirka Fik Datové struktury I 95 Jirka Fik Datové struktury I 96

Cache-oblivious aalýza: Trasozice atic: Cache-aware řístu Cache-oblivious aalýza: Trasozice atic: Rekurziví trasozice Cache-aware aloritus ro trasozici atice A velikost k k # Nejrve si rozdělíe daou atici a subatice velikosti z z for (i = 0; i < k; i+ = z) do for (j = i; j < k; j+ = z) do # Trasoujee subatici začíající a ozici (i, j) for (ii = i; ii < i(k, i + z); ii + +) do 4 for (jj = a(j, ii + ); jj < i(k, j + z); jj + +) do 5 Swa(A ii,jj, A jj,ii) Idea Rekurzivě rozdělíe a subatice ( A A A = A A ) A T A T = A T A T A T Hodoceí Otiálí hodota z závisí a kokrétí očítači Využíváe je jedu úroveň cache Při srávě zvoleé hodotě z bývá teto ostu ejrychlejší Matice A a A se trasoují odle stejého schéatu, ale A a A se rohazují. Jirka Fik Datové struktury I 97 Jirka Fik Datové struktury I 98 Cache-oblivious aalýza: Trasozice atic: Rekurziví trasozice Cache-oblivious aalýza: Trasozice atic: Rekurziví trasozice Procedure trasose o diaoal(a) if Matice A je alá the Trasoujee atici A triviálí ostue 4 else 5 A, A, A, A souřadice subatic 6 trasose o diaoal(a ) 7 trasose o diaoal(a ) 8 trasose ad swa(a, A ) 9 Procedure trasose ad swa(a, B) 0 if Matice A a B jsou alé the Prohodíe a trasoujee atice A a B triviálí ostue else A, A, A, A, B, B, B, B souřadice subatic 4 trasose ad swa(a, B ) 5 trasose ad swa(a, B ) 6 trasose ad swa(a, B ) 7 trasose ad swa(a, B ) Aalýza očtu řeeseých bloků Předoklad Tall cache : M 4B, tj. očet bloků je alesoň 4B Necht z je aiálí velikost subatice, ve které se jede řádek vejde do jedoho bloku Platí: z B z 4 Jeda subatice z z je uložea v ejvýše z B blocích 5 Dvě subatice z z se vejdou do cache 6 Trasozice atice tyu z z vyžaduje ejvýše 4z řeosů 7 Máe (k/z) subatic velikosti z ( 8 Celkový očet řeeseých bloků je ejvýše k 4z 8k = O z B 9 Teto ostu je otiálí až a ultilikativí faktor 4 k B ) Jirka Fik Datové struktury I 99 Jirka Fik Datové struktury I 00 Stačilo by ředokládat, že očet bloků je alesoň Ω(B). Máe-li alesoň 4B bloků, ak je ostu alebraicky jedodušší. Pokud začátek řádky eí a začátku bloku, tak je jede řádek subatice ulože ve dvou blocích. Fukce trasose ad swa racujee se dvěa subaticei. 4 Celá atice je uložea v alesoň k blocích aěti. B Cache-oblivious aalýza: Rerezetace biárích stroů Cíl Sestrojit rerezetaci biárího strou efektivě využívající cache. Počítae očet ačteých bloků ři růchodu cesty z listu do kořee. Biárí halda Veli eefektiví: Počet řeeseých bloků je Θ(lo lo B) = Θ(lo B ) B-reulárí halda, B-stro Výška strou je lo B () + Θ() Jede vrchol je ulože v ejvýše dvou blocích Počet ačteých bloků je Θ(lo B ()) Nevýhody: cache-aware a chtěli jse biárí stro Převedeí a biárí stro Každý vrchol B-reulárí haldy ahradíe biárí stroe. Jirka Fik Datové struktury I 00 Jirka Fik Datové struktury I 0 Platí ro B-reulárí haldu. B-stro á výšku Θ(lo B (). Asytoticky otiálí řešeí důkaz je založe a Iforatio theory. Cache-oblivious aalýza: Rerezetace biárích stroů a a a b b b c c c d d d e e e f f f... skied... y y y z z z a a a b c d e b b c c d d e e f f f... skied... y y y z z z a a a b b b c c c d d d e e e f f f... z z z Path fro the root to the leaf f Jirka Fik Datové struktury I 0 Jirka Fik Datové struktury I 0