Minimum udspændende Træer (MST)



Relaterede dokumenter
Minimum udspændende Træer (MST)

Minimum udspændende Træer (MST)

Mindste udspændende træ

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

Mindste udspændende træ

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

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

Grafer / Otto Knudsen

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

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

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Sammenhængskomponenter i grafer

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

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

Grafer og graf-gennemløb

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

DM02 Kogt ned. Kokken. Januar 2006

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

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2.

.. if L(u) + w(u, v) < L(v) then.. begin... L(v) := L(u) + w(u, v)... F (v) := u.. end. med længde L(z)}

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

Datastrukturer (recap)

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

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

Prioritetskøer og hobe. Philip Bille

Mm6: More sorting algorithms: Heap sort and quick sort - October 29, 2008

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

DMG Bachelor Maj/Juni 2002

DM507 Algoritmer og datastrukturer

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

P2-projektforslag Kombinatorik: grafteori og optimering.

Datastrukturer (recap)

Sommeren 2001, opgave 1

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

M=3 kunde forbindelse. oprettet lokation Steinerkant

Oplæg og øvelser, herunder frugt og vand Gerth Stølting Brodal

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Danmarks Tekniske Universitet

Opgave 2 è20èè Det er velkendt, at f lgende algoritme er gyldig og korrekt. Algoritme: Heltalskvadratr Stimulans: n: nç0 Respons: r: r 2 ç n é èr +1è

DATALOGISK INSTITUT, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

1 Program for forelæsningen

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Opgave 2 è20èè En tekst er som bekendt et palindrom, hvis den er lig med sin spejling. Fx er den tomme tekst og teksterne "a", "cc", "pip" og "abba" a

Skriftlig eksamen i Datalogi

Danmarks Tekniske Universitet

DM02 opgaver ugeseddel 2

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n

Divisorer. Introduktion. Divisorer og delelighed. Divisionsalgoritmen. Definition (Divisor) Lad d og n være hele tal. Hvis der findes et helt tal q så

Danmarks Tekniske Universitet

Et udtrykstrç med de ære regnearter, heltalskonstanter og variabler beskrives. Type Expr = Sumèplus, minus, times, div: Args, const: Int, name: Textè

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

DM507 - Algoritmer og datastrukturer

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Kapitel 9: Netværksmodeller

Divide-and-Conquer algoritmer

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Grafteori, Kirsten Rosenkilde, september Grafteori

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

Algoritmer og Datastrukturer 2 (Sommer 2004)

Kapitel 9: Netværksmodeller

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Datastrukturer (recap) Datastruktur = data + operationer herpå

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

Transkript:

Minimum udspændende Træer (MST)

Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen lukket kreds af kanter (med 3 knuder, alle forskellige).

Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen lukket kreds af kanter (med 3 knuder, alle forskellige). Træ Skov Graf med kreds

Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen lukket kreds af kanter (med 3 knuder, alle forskellige). Træ Skov Graf med kreds Uorienteret, sammenhængende graf: skov af træer.

Træer Sætning (B.2): For uorienteret graf G = (V, E) er flg. ækvivalent: G er et træ. G er sammenhængende, men er det ikke hvis en vilkårlig kant fjernes. G er acyklisk, men er det ikke hvis en vilkårlig kant tilføjes. G er sammenhængende og m = n 1. G er acyklisk og m = n 1. Mellem alle par af knuder er der præcis een vej.

Træer Sætning (B.2): For uorienteret graf G = (V, E) er flg. ækvivalent: G er et træ. G er sammenhængende, men er det ikke hvis en vilkårlig kant fjernes. G er acyklisk, men er det ikke hvis en vilkårlig kant tilføjes. G er sammenhængende og m = n 1. G er acyklisk og m = n 1. Mellem alle par af knuder er der præcis een vej. Bevis (ikke pensum): se appendix B.5. Læs (pensum) appendix B.4 og B.5 for basale definitioner for grafer.

Minimum Spanning Tree (MST) Udspændende træ for sammenhængende graf G = (V, E): En delgraf T = (V, E ), E E, som er et træ.

Minimum Spanning Tree (MST) Udspændende træ for sammenhængende graf G = (V, E): En delgraf T = (V, E ), E E, som er et træ.

Minimum Spanning Tree (MST) Udspændende træ for sammenhængende graf G = (V, E): En delgraf T = (V, E ), E E, som er et træ. Iflg. sætning ovenfor har alle udspændende træer samme antal kanter (m = n 1).

Minimum Spanning Tree (MST) Udspændende træ for sammenhængende graf G = (V, E): En delgraf T = (V, E ), E E, som er et træ. Iflg. sætning ovenfor har alle udspændende træer samme antal kanter (m = n 1). Minimum udspændende Træ (MST) for en vægtet sammenhængende graf G: et udspændende træ for G som har minimal sum af kantvægte.

Minimum Spanning Tree (MST) Udspændende træ for sammenhængende graf G = (V, E): En delgraf T = (V, E ), E E, som er et træ. Iflg. sætning ovenfor har alle udspændende træer samme antal kanter (m = n 1). Minimum udspændende Træ (MST) for en vægtet sammenhængende graf G: et udspændende træ for G som har minimal sum af kantvægte. Motivation: forbind punkter i et forsyningsnetværk (elektricitet, olie,... ) billigst muligt (kant = mulig forbindelse, vægt = pris for at etablere forbindelse).

Algoritmer for MST Grundidé: Byg MST ved at vælge kanterne een efter een. I alt n 1 skridt (m = n 1 for træer).

Algoritmer for MST Grundidé: Byg MST ved at vælge kanterne een efter een. I alt n 1 skridt (m = n 1 for træer). Invariant: Der eksisterer et MST som indeholder kanterne i A. Safe kant for A: kant som kan tilføjes uden at ødelægge invarianten (mindst een må findes når invarianten gælder og A < n 1).

Algoritmer for MST Grundidé: Byg MST ved at vælge kanterne een efter een. I alt n 1 skridt (m = n 1 for træer). Invariant: Der eksisterer et MST som indeholder kanterne i A. Safe kant for A: kant som kan tilføjes uden at ødelægge invarianten (mindst een må findes når invarianten gælder og A < n 1). Initialisering: Enhver sammenhængende graf har et ST (via sætning ovenfor, andet punkt), derfor et MST.

Algoritmer for MST Grundidé: Byg MST ved at vælge kanterne een efter een. I alt n 1 skridt (m = n 1 for træer). Invariant: Der eksisterer et MST som indeholder kanterne i A. Safe kant for A: kant som kan tilføjes uden at ødelægge invarianten (mindst een må findes når invarianten gælder og A < n 1). Initialisering: Enhver sammenhængende graf har et ST (via sætning ovenfor, andet punkt), derfor et MST. Vedligeholdelse: OK per definition af safe.

Algoritmer for MST Grundidé: Byg MST ved at vælge kanterne een efter een. I alt n 1 skridt (m = n 1 for træer). Invariant: Der eksisterer et MST som indeholder kanterne i A. Safe kant for A: kant som kan tilføjes uden at ødelægge invarianten (mindst een må findes når invarianten gælder og A < n 1). Initialisering: Enhver sammenhængende graf har et ST (via sætning ovenfor, andet punkt), derfor et MST. Vedligeholdelse: OK per definition af safe. Terminering: ethvert (MS)T indeholder præcis n 1 kanter (se sætning ovenfor). Da A vokser med een kant per iteration, giver invarianten at algoritmen terminerer, og at A er et MST.

Cut-sætning Cut: en to-deling af knuderne i S og V S.

Cut-sætning Sætning: Hvis så der eksisterer et MST som indeholder A, S er et cut som A ikke har kanter henover (dvs. A S (V S) = ), e S (V S) er en letteste kant blandt kanterne S (V S) henover cuttet, er e safe for A (dvs. der der eksisterer et MST som indeholder A {e}).

Cut-sætning Bevis: Der findes et MST T som indeholder A. Vi skal lave et MST T som indeholder A {e}.

Cut-sætning Bevis: Der findes et MST T som indeholder A. Vi skal lave et MST T som indeholder A {e}. T = T med en kant udskiftet:

Cut-sætning Bevis: Der findes et MST T som indeholder A. Vi skal lave et MST T som indeholder A {e}. T = T med en kant udskiftet: Som T er T stadig sammenhængende og har T n 1 kanter. Det er derfor et træ (pga. sætning tidligere). Det er klart stadig udspændende. Det kan kun være lettere end T. Det indeholder A {e} (da fjernede kant ikke er i A).

Prim-Jarnik MST-algoritmen (Prim 1957, Jarnik 1930) A er eet træ. Bruger cut-sætningen med S = alle knuder i A.

Prim-Jarnik MST-algoritmen (Prim 1957, Jarnik 1930) A er eet træ. Bruger cut-sætningen med S = alle knuder i A. Invariant: En knude v V S opbevarer information om sin korteste kant henover cut i v.key og v.π. V S opbevares i en (min-)prioritetskø.

Prim-Jarnik MST-algoritmen (Prim 1957, Jarnik 1930) A er eet træ. Bruger cut-sætningen med S = alle knuder i A. Invariant: En knude v V S opbevarer information om sin korteste kant henover cut i v.key og v.π. V S opbevares i en (min-)prioritetskø.

Prim-Jarnik MST-algoritmen (Prim 1957, Jarnik 1930) A er eet træ. Bruger cut-sætningen med S = alle knuder i A. Invariant: En knude v V S opbevarer information om sin korteste kant henover cut i v.key og v.π. V S opbevares i en (min-)prioritetskø. Korrekthed: via cut-sætningen og invarianten. Køretid: n Insert, n ExtractMin, m DecreaseKey på prioritetskø af størrelse O(n), i alt O(m log n).

Kruskal MST-algoritmen (1956) A er en skov. Bruger cut-sætningen med S = knuderne i eet af træerne i A.

Kruskal MST-algoritmen (1956) A er en skov. Bruger cut-sætningen med S = knuderne i eet af træerne i A. Forsøger at tilføje kanter til A i letteste-først-orden.

Kruskal MST-algoritmen (1956) A er en skov. Bruger cut-sætningen med S = knuderne i eet af træerne i A. Forsøger at tilføje kanter til A i letteste-først-orden. Tilføjer kun kant (u, v) til A hvis der ikke laves en kreds, dvs. hvis u og v ligger i forskellige træer. Hvis (u, v) tilføjes, vil disse to træer blive til eet bagefter.

Kruskal MST-algoritmen (1956)

Kruskal MST-algoritmen (1956)

Kruskal MST-algoritmen (1956) Tilføjer kun kant (u, v) til A hvis der ikke laves en kreds, dvs. hvis u og v ligger i forskellige træer. Hvis (u, v) tilføjes, vil disse to træer blive til eet bagefter. Vedligeholder opdelingen i træer i A ved hjælp af en disjoint-set datastruktur på V : Make-Set(x), Union(x, y) Find-Set(x)

Kruskal MST-algoritmen (1956) Lemma: der findes en datastruktur for disjoint-sets hvor n Make-Set(x) n 1 Union(x, y) m Find-Set(x) tager i alt O(m + n log n) tid.

Kruskal MST-algoritmen (1956) Invariant: Når en kant forsøges tilføjet A, har enhver tidligere forsøgt kant begge sine endepunkter i samme træ i A.

Kruskal MST-algoritmen (1956) Invariant: Når en kant forsøges tilføjet A, har enhver tidligere forsøgt kant begge sine endepunkter i samme træ i A.

Kruskal MST-algoritmen (1956) Invariant: Når en kant forsøges tilføjet A, har enhver tidligere forsøgt kant begge sine endepunkter i samme træ i A. Korrekthed: via cut-sætningen og invarianten. Køretid: Sortér m kanter, lav n Make-Set, n 1 Union, m Find-Set. I alt O(m log m).