Forén og find. Forén og find. Forén og find. Anvendelser

Relaterede dokumenter
Forén og find. Forén og find. Forén og find. Forén og find

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Mindste udspændende træ

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Mindste udspændende træ

Prioritetskøer og hobe. Philip Bille

Skriftlig Eksamen. Datastrukturer og Algoritmer (DM02) Institut for Matematik og Datalogi. Odense Universitet. Onsdag den 18. juni 1997, kl.

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Danmarks Tekniske Universitet

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Bowlingturnering 2015/ 2016

Danmarks Tekniske Universitet

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Danmarks Tekniske Universitet

Minimum udspændende Træer (MST)

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Sammenhængskomponenter i grafer

TALTEORI Følger og den kinesiske restklassesætning.

Danmarks Tekniske Universitet

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Forberedelse til den obligatoriske selvvalgte opgave

Danmarks Tekniske Universitet

O - en overskuelig matematisk model for vurdering af algoritmers effektivitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Danmarks Tekniske Universitet

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

Algoritmisk geometri

Danmarks Tekniske Universitet

DM02 Kogt ned. Kokken. Januar 2006

FRIE ABELSKE GRUPPER. Hvis X er delmængde af en abelsk gruppe, har vi idet vi som sædvanligt i en abelsk gruppe bruger additiv notation at:

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Datastrukturer (recap)

Datastrukturer (recap)

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Landbrugets efterspørgsel efter Kunstgødning. Angelo Andersen

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Fra patient til patient: Tidlig prostatakræft hvad nu? Aktiv overvågning, operation, bestråling?

DATALOGISK INSTITUT, AARHUS UNIVERSITET

SERVICE BLUEPRINTS KY selvbetjening 2013

Minimum udspændende Træer (MST)

Videregående Algoritmik. David Pisinger, DIKU. Reeksamen, April 2005

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Danmarks Tekniske Universitet

Minimum udspændende Træer (MST)

TO-BE BRUGERREJSE // Tænder

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Introduktion Online Rapport Din skridt-for-skridt guide til den nye Online Rapport (OLR) Online Rapport

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Vægtede grafer. I en vægtet graf har enhver kant tilknyttet en numerisk værdi, kaldet kantens vægt

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Algoritmer på træer og trægennemløb.

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Økonometri 1. Avancerede Paneldata Metoder I 24.november F18: Avancerede Paneldata Metoder I 1

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Introduktion til datastrukturer. Philip Bille

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

HASHI HASH? Vidste du at. pillugu suna. nalunngiliuk? Hvad ved du om. Hvad ved du om hash? Mental sundhed. Love og konsekvenser

Datastrukturer (recap) Datastruktur = data + operationer herpå

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

FOLKEMØDE-ARRANGØR SÅDAN!

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Pas på dig selv, mand

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

DATALOGISK INSTITUT, AARHUS UNIVERSITET

HI-FI-KOMPONENTSYSTEM

Europaudvalget EUU alm. del Bilag 365 Offentligt

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Introduktion til datastrukturer

HVIS FOLK OMKRING DIG IKKE VIL LYTTE, SÅ KNÆL FOR DEM OG BED OM TILGIVELSE, THI SKYLDEN ER DIN. Fjordor Dostojevskij

På nedenstående billede skal du finde den figur som optræder nøjagtig 3 gange.

Referat fra Bestyrelsesmøde

Anvendt Statistik Lektion 10. Regression med både kvantitative og kvalitative forklarende variable Modelsøgning Modelkontrol

DM507 Algoritmer og datastrukturer

- Brugermanual. Indholdsfortegnelse: Sådan opretter du dig som bruger. Side 1. Sådan logger du dig ind i systemet. Side 2

Transkript:

Phlp Blle (unon-fnd). Vedlgehold en dynamsk famle af mængder under operatoner: INIT(n): opret mængder {}, {},, {n} UNION(,): forener de to mængder der ndeholder og. Hvs og er samme mængde skal der ngentng ske. FIND(): returnerer en repræsentant for mængden der ndeholder. INIT() {} {} {} {} {} {} {} {} {} UNION(,) {,, } {,,, } {, } {,,,, } {,,, } Repræsentant kan være et hvlket som helst element mængden. FIND() == FIND() hvs og kun hvs og er samme mængde. Anvendelser. Mndste udspændende træ. Unfcerng logk og oversættere (afgør om udtryk er ens). Nærmeste fælles forfader træer. Hoshen-Kopelman Algortme fysk Spl (Hex og Go) Illustraton af snedge teknkker tl desgn af datastrukturer.

Hurtg fnd d[]. Vedlgehold en tabel d[..n] så d[] er repræsentant for. INIT(n): sæt alle elementer tl at være deres egen repræsentant UNION(,): opdater repræsentant for alle elementer den ene mængde. FIND(): returner repræsentant. d[] UNION(,) {,, } {,,, } {, } {,,,, } {,,, } INIT() {} {} {} {} {} {} {} {} {} Hurtg fnd Hurtg fnd INIT(n): for k = to n d[k] = k FIND(): return r[] UNION(,): ID = FIND() ID = FIND() f (ID ID) for k = to n f (d[k] == ID) d[k] = ID Theorem. V kan løse forén og fnd med n elementer O(n) td for INIT O() td for FIND O(n) td for UNION d[] UNION(,) {,, } {,,, } {, } {,,,, } {,,, }

Hurtg forenng. Vedlgehold hver mængde som et rodfæstet træ repræsenteret ved tabel p[..n] af forældrepegere. Roden af træ er repræsentant for mængde og p[rod] = rod. INIT(n): lav n træer med et element hver. UNION(,): hvs FIND() FIND(), gør rod af det ene træ tl barn af roden af det andet træ. FIND(): følg st tl rod og returner den. UNION(,) p[] Hurtg forenng Hurtg forenng INIT(n): lav n træer med et element hver. UNION(,): hvs FIND() FIND(), gør rod af det ene træ tl barn af roden af det andet træ. FIND(): følg st tl rod og returner den. Opgave. Vs datastruktur efter hver operaton følgende sekvens. INIT(), UNION(,), UNION(,), UNION(,), UNION(,), UNION(,), UNION(,), UNION(,), UNION(,). INIT(n): for k = to n p[k] = k FIND(): whle ( = p[]) = p[] return UNION(,) UNION(,): r = FIND() r = FIND() f (r r ) p[r ] = r

Hurtg forenng Theorem. V kan løse forén og fnd med n elementer O(n) td for INIT O(d) td for FIND O(d) td for UNION Dybden d af T er den maksmale længde af en st fra rod tl blad. Dårlg nyhed. Dybden kan være n-. Udfordrng. Kan v sætte sammen træerne snedgt sammen så v begrænser dybden? d = d = n- Vægtet forenng Vægtet forenng. Udvdelse af hurtg forenng. Vedlgehold tabel sz[..n] med størrelse af hver knude = antallet af knuder deltræ. INIT: (næsten) som før. FIND: som før. UNION(,): hvs FIND() FIND(), gør rod af det mndste træ tl barn af roden af det største træ. Intuton. Vægtet forenng balancerer træerne. r r UNION(,) r r UNION(,): r = FIND() r = FIND() f (r r ) f (sz[r ] < sz[r ]) p[r ] = r sz[r ] = sz[r ] + sz[r ] else p[r ] = r sz[r ] = sz[r ] + sz[r ] r r UNION(,) r r sz[r] = sz[r] + sz[r]

Vægtet forenng Lemma. Med vægtet forenng er dybden af en knude høst log n. Bevs. Kg på en knude med dybde d. Intelt er d = 0. d øges med når træet med forenes med et større træ. Det forenede træ er mndst dobbelt så stort. V kan fordoble størrelse af træer høst log n gange. d log n. Vægtet forenng Theorem. V kan løse forén og fnd med n elementer O(n) td for INIT O(log n) td for FIND O(log n) td for UNION Datastruktur hurtg fnd hurtg forenng vægtet forenng UNION O(n) O(n) O(log n) FIND O() O(n) O(log n) Udfordrng. Kan v gøre det endnu bedre? Hvad er den bedste man kan håbe på?

Stkompresson. Komprmer sten ved FIND = alle knuder på st blver barn af rod. Ændrer kke på td for en FIND operaton. Efterfølgende FIND operatoner blver hurtgere. Vrker både med hurtg forenng og vægtet forenng. Stkompresson Theorem [Taran ]. Med stkompresson tager enhver sekvens af m FIND og UNION operatoner over n elementer O(n + m α(m,n)) td. α(m,n) er den nverse tl Ackermanns funkton. α(m,n) for ethvert praktsk nput. Theorem [Fredman-Saks ]. Det er kke mulgt at understøtte m FIND og UNION operatoner O(n + m) td. FIND() FIND() 0 0 0 0 Datastruktur hurtg fnd hurtg forenng m UNION og FIND O(mn) O(mn) vægtet forenng O(n + mlog n) vægtet forenng + stkompresson O(n + m α(m,n)) umulgt O(n + m)

Dynamske sammenhængskomponenter. Vedlgehold en dynamsk graf under operatoner. INIT(n): opret en graf G med n knuder og ngen kanter. CONNECTED(u,v): afgør om u og v er sammenhængende. INSERT(u, v): tlfø kant (u,v). V antager (u,v) kke allerede fndes. Dynamske sammenhængskomponenter Implementaton med forén og fnd. INIT(n): ntalser en forén og fnd datastruktur med n elementer. CONNECTED(u,v): FIND(u) == FIND(v). INSERT(u, v): UNION(u,v) INSERT(,) INSERT(,) Dynamske sammenhængskomponenter Theorem. V kan løse dynamske sammenhængskomponenter en graf med n knuder O(n) td for INIT O(log n) td for CONNECTED O(log n) td for INSERT