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æ. Mindste udspændende træ. Introduktion. Introduktion

Sammenhængskomponenter i grafer

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

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

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

Mindste udspændende træ

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

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

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

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Grafer og graf-gennemløb

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

DM02 Kogt ned. Kokken. Januar 2006

Prioritetskøer og hobe. Philip Bille

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Datastrukturer (recap)

.. 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)}

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

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

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

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

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

Datastrukturer (recap) Datastruktur = data + operationer herpå

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

Datastrukturer (recap)

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Grafer / Otto Knudsen

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.

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Grafteori. 1 Terminologi. Grafteori, Kirsten Rosenkilde, august fra V. (Engelsk: subgraph, spanning subgraph, the subgraph

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

Grafteori. 1 Terminologi. Indhold

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Reeksamen i Diskret Matematik

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

DM507 Algoritmer og datastrukturer

DM507 - Algoritmer og datastrukturer

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

DM507 Algoritmer og datastrukturer

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Sommeren 2001, opgave 1

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

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

Kapitel 9: Netværksmodeller

Danmarks Tekniske Universitet

Invarianter. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen.

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Eksamen i Diskret Matematik

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Kapitel 9: Netværksmodeller

Divide-and-Conquer algoritmer

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Sortering i lineær tid

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

K 7 - og K 4,4 -minors i grafer

Divide-and-Conquer algoritmer

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse

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

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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 kreds af kanter.

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 kreds af kanter. Træ Skov Graf med kreds (ikke træ) (Uorienteret, acyklisk graf = skov af træer.).

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

Træer Sætning (B.2): For uorienteret graf G = (V, E) er flg. ækvivalent (gælder det ene, gælder det andet): G er et træ (dvs. sammenhængende og acyklisk). G er sammenhængende, men er det ikke hvis nogen kant fjernes. G er sammenhængende og m = n 1. G er acyklisk, men er det ikke hvis nogen kant tilføjes. G er acyklisk og m = n 1. Mellem alle par af knuder er der præcis én 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æ. NB: samme knudemængde V.

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æ. NB: samme knudemængde V.

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æ. NB: samme knudemængde V. 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æ. NB: samme knudemængde V. 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 mindst mulig sum af kantvægte (intet udspændende træ har mindre sum).

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æ. NB: samme knudemængde V. 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 mindst mulig sum af kantvægte (intet udspændende træ har mindre sum). Motivation: forbind punkter i et forsyningsnetværk (elektricitet, olie,... ) billigst muligt. Kant i G: mulig forbindelse, vægt: pris for at etablere forbindelse. Dette var motivationen for den første algoritme for problemet (Bor uvka, 1926, Østrig-Ungarn, nu Tjekkiet).

Algoritmer for MST Grundidé (grådig algoritme): Byg MST ved at vælge kanterne én efter én. Vedligehold følgende Invariant: Der findes et MST som indeholder de valgte kanter A.

Algoritmer for MST Grundidé (grådig algoritme): Byg MST ved at vælge kanterne én efter én. Vedligehold følgende Invariant: Der findes et MST som indeholder de valgte kanter A. Safe kant for A: kant som kan tilføjes uden at ødelægge invarianten (mindst én må findes når invarianten gælder og A < n 1).

Algoritmer for MST Grundidé (grådig algoritme): Byg MST ved at vælge kanterne én efter én. Vedligehold følgende Invariant: Der findes et MST som indeholder de valgte kanter A. Safe kant for A: kant som kan tilføjes uden at ødelægge invarianten (mindst én må findes når invarianten gælder og A < n 1). Initialisering: Enhver sammenhængende graf har et mindst ét ST (via sætningen fra B.5, punkt 2 - fjern kanter til betingelsen nås), og har derfor et MST. Dette indeholder kantmængden.

Algoritmer for MST Grundidé (grådig algoritme): Byg MST ved at vælge kanterne én efter én. Vedligehold følgende Invariant: Der findes et MST som indeholder de valgte kanter A. Safe kant for A: kant som kan tilføjes uden at ødelægge invarianten (mindst én må findes når invarianten gælder og A < n 1). Initialisering: Enhver sammenhængende graf har et mindst ét ST (via sætningen fra B.5, punkt 2 - fjern kanter til betingelsen nås), og har derfor et MST. Dette indeholder kantmængden. Vedligeholdelse: Per definition af safe.

Algoritmer for MST Grundidé (grådig algoritme): Byg MST ved at vælge kanterne én efter én. Vedligehold følgende Invariant: Der findes et MST som indeholder de valgte kanter A. Safe kant for A: kant som kan tilføjes uden at ødelægge invarianten (mindst én må findes når invarianten gælder og A < n 1). Initialisering: Enhver sammenhængende graf har et mindst ét ST (via sætningen fra B.5, punkt 2 - fjern kanter til betingelsen nås), og har derfor et MST. Dette indeholder kantmængden. Vedligeholdelse: Per definition af safe. Terminering: ethvert (M)ST indeholder præcis n 1 kanter. Da A vokser med én kant per iteration, giver invarianten at algoritmen terminerer, og at A da er et MST (A er indeholdt i et MST, og har samme antal kanter som dette, er derfor lig dette).

Cuts Hvordan finde en safe kant?

Cuts Hvordan finde en safe kant? Cut: En delmængde S af knuderne. Kan ses som en to-deling af knuderne i to mængder S og V S.

Cuts Hvordan finde en safe kant? Cut: En delmængde S af knuderne. Kan ses som en to-deling af knuderne i to mængder S og V S. Kant henover cut: en kant i S (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, e er en letteste kant blandt kanterne 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}. Lad e = (u, v) være en letteste kant henover cuttet S. Da T er sammenhængdende, må der være en sti i T mellem u og v, hvorpå der er mindst én kant (x, y) henover cuttet S. Lad T være T med (x, y) udskiftet til e = (u, v): (Kanter = T, fede kanter = A, cut er angivet med knudefarver.)

Cut-sætning Lad T være T med (x, y) udskiftet til e = (u, v):

Cut-sætning Lad T være T med (x, y) udskiftet til e = (u, v): Som T er T stadig sammenhængende (i alle stier kan (x, y) erstattes af resten af stien fra u til v, samt kanten (u, v)), og har n knuder og n 1 kanter. Det er derfor et træ (pga. sætning tidligere). Det kan kun være lettere end T. Det indeholder A {e} (da fjernede kant (x, y) ikke er i A).

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

Prim-Jarnik MST-algoritmen (Prim 1957, Jarnik 1930) A er ét 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 ét 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 ét 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.

Prim-Jarnik MST-algoritmen (Prim 1957, Jarnik 1930) A er ét 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:

Prim-Jarnik MST-algoritmen (Prim 1957, Jarnik 1930) A er ét 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

Prim-Jarnik MST-algoritmen (Prim 1957, Jarnik 1930) A er ét 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),

Prim-Jarnik MST-algoritmen (Prim 1957, Jarnik 1930) A er ét 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 et af træerne i A.

Kruskal MST-algoritmen (1956) A er en skov. Bruger cut-sætningen med S = knuderne i et 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 et 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 ét bagefter.

Kruskal MST-algoritmen (1956)

Kruskal MST-algoritmen (1956)

Kruskal MST-algoritmen (1956) 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) Vedligeholder opdelingen i træer i A ved hjælp af en disjoint-set datastruktur på V : Mere præcist: Make-Set(x), Union(x, y) Find-Set(x)

Kruskal MST-algoritmen (1956) Fra tidligere kendes: 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)

Kruskal MST-algoritmen (1956) Invariant for enhver for-løkke som ovenfor (uanset kanternes orden): Lad E være de hidtil undersøgte kanter i for-løkken. 1. u og v ligger i samme mængde i Disjoint-Set datastrukturen der er en sti mellem v og u af kanter i A. 2. Alle kanter i E har begge sine endepunkter i samme mængde i Disjoint-Set datastrukturen.

Kruskal MST-algoritmen (1956) Invariant for enhver for-løkke som ovenfor (uanset kanternes orden): Lad E være de hidtil undersøgte kanter i for-løkken. 1. u og v ligger i samme mængde i Disjoint-Set datastrukturen der er en sti mellem v og u af kanter i A. 2. Alle kanter i E har begge sine endepunkter i samme mængde i Disjoint-Set datastrukturen. Bevis: nemt via induktion på E.

Kruskal MST-algoritmen (1956) Invariant for enhver for-løkke som ovenfor (uanset kanternes orden): Lad E være de hidtil undersøgte kanter i for-løkken. 1. u og v ligger i samme mængde i Disjoint-Set datastrukturen der er en sti mellem v og u af kanter i A. 2. Alle kanter i E har begge sine endepunkter i samme mængde i Disjoint-Set datastrukturen. Bevis: nemt via induktion på E. Af 1) og 2) følger 3): Mængderne i Disjoint-Set datastrukturen er præcis sammenhængskomponenterne i grafen (V, E ).

Kruskal MST-algoritmen (1956) Korrekthed: Når algoritmen tilføjer en kant (u, v) til A ser vi på cuttet givet ved knudemængden Find-Set(u)). Del 2) af invarianten viser at A ikke har kanter hen over dette cut, da A E. Algoritmens sortering af kanterne viser sammen med del 2) af invarianten at (u, v) er en letteste kant henover dette cut. Derfor kan cutsætningen bruges, og A ligger derfor hele tiden inde i et MST.

Kruskal MST-algoritmen (1956) Korrekthed: Når algoritmen tilføjer en kant (u, v) til A ser vi på cuttet givet ved knudemængden Find-Set(u)). Del 2) af invarianten viser at A ikke har kanter hen over dette cut, da A E. Algoritmens sortering af kanterne viser sammen med del 2) af invarianten at (u, v) er en letteste kant henover dette cut. Derfor kan cutsætningen bruges, og A ligger derfor hele tiden inde i et MST. Når algoritmen stopper, er E = E. Da den oprindelige graf (V, E) er sammenhængende, giver 3) at der én mængde i Disjoint-Set datastrukturen. Derfor er der lavet præcis n 1 unions, og dermed er A = n 1. Så A er selv dette MST.

Kruskal MST-algoritmen (1956) Korrekthed: Når algoritmen tilføjer en kant (u, v) til A ser vi på cuttet givet ved knudemængden Find-Set(u)). Del 2) af invarianten viser at A ikke har kanter hen over dette cut, da A E. Algoritmens sortering af kanterne viser sammen med del 2) af invarianten at (u, v) er en letteste kant henover dette cut. Derfor kan cutsætningen bruges, og A ligger derfor hele tiden inde i et MST. Når algoritmen stopper, er E = E. Da den oprindelige graf (V, E) er sammenhængende, giver 3) at der én mængde i Disjoint-Set datastrukturen. Derfor er der lavet præcis n 1 unions, og dermed er A = n 1. Så A er selv dette MST. Køretid:

Kruskal MST-algoritmen (1956) Korrekthed: Når algoritmen tilføjer en kant (u, v) til A ser vi på cuttet givet ved knudemængden Find-Set(u)). Del 2) af invarianten viser at A ikke har kanter hen over dette cut, da A E. Algoritmens sortering af kanterne viser sammen med del 2) af invarianten at (u, v) er en letteste kant henover dette cut. Derfor kan cutsætningen bruges, og A ligger derfor hele tiden inde i et MST. Når algoritmen stopper, er E = E. Da den oprindelige graf (V, E) er sammenhængende, giver 3) at der én mængde i Disjoint-Set datastrukturen. Derfor er der lavet præcis n 1 unions, og dermed er A = n 1. Så A er selv dette MST. Køretid: Sortér m kanter, lav n Make-Set, n 1 Union, m Find-Set.

Kruskal MST-algoritmen (1956) Korrekthed: Når algoritmen tilføjer en kant (u, v) til A ser vi på cuttet givet ved knudemængden Find-Set(u)). Del 2) af invarianten viser at A ikke har kanter hen over dette cut, da A E. Algoritmens sortering af kanterne viser sammen med del 2) af invarianten at (u, v) er en letteste kant henover dette cut. Derfor kan cutsætningen bruges, og A ligger derfor hele tiden inde i et MST. Når algoritmen stopper, er E = E. Da den oprindelige graf (V, E) er sammenhængende, giver 3) at der én mængde i Disjoint-Set datastrukturen. Derfor er der lavet præcis n 1 unions, og dermed er A = n 1. Så A er selv dette MST. Køretid: Sortér m kanter, lav n Make-Set, n 1 Union, m Find-Set. I alt O(m log m) [eftersom m n 1, da grafen er sammenhængende].