Sammenhængskomponenter i grafer

Relaterede dokumenter
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

Minimum udspændende Træer (MST)

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

Danmarks Tekniske Universitet

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

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte 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.

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer 2 (2003-ordning)

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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

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

Danmarks Tekniske Universitet

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

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.

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

Danmarks Tekniske Universitet

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Minimum udspændende Træer (MST)

Mindste udspændende træ

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

GEOMETRI-TØ, UGE 8. X = U xi = {x i } = {x 1,..., x n }, U α, U α = α. (X \ U α )

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

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

Eksamen i Diskret Matematik

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Minimum udspændende Træer (MST)

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

Danmarks Tekniske Universitet

Reeksamen i Diskret Matematik

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Divide-and-Conquer algoritmer

Sortering. Eksempel: De n tal i sorteret orden

Divide-and-Conquer algoritmer

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

DM507 Algoritmer og datastrukturer

Sortering. Eksempel: De n tal i sorteret orden

Sortering af information er en fundamental og central opgave.

Divide-and-Conquer algoritmer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Eksamen i Diskret Matematik

Sortering af information er en fundamental og central opgave.

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

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Reeksamen i Diskret Matematik

Grafteori. 1 Terminologi. Indhold

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Nogle grundlæggende begreber

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

DM507 Algoritmer og datastrukturer

Algoritmer og invarianter

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

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

Dynamisk programmering

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Divide-and-Conquer algoritmer

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

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

Transkript:

Sammenhængskomponenter i grafer

Ækvivalensrelationer Repetition: En relation R på en mængde S er en delmængde af S S. Når (x, y) R siges x at stå i relation til y. Ofte skrives x y, og relationen selv betegnes.

Ækvivalensrelationer Repetition: En relation R på en mængde S er en delmængde af S S. Når (x, y) R siges x at stå i relation til y. Ofte skrives x y, og relationen selv betegnes. Relation kaldes en ækvivalensrelation hvis der for alle x, y, z S gælder: x x. x y y x. x y y z x z.

Ækvivalensrelationer Repetition: En relation R på en mængde S er en delmængde af S S. Når (x, y) R siges x at stå i relation til y. Ofte skrives x y, og relationen selv betegnes. Relation kaldes en ækvivalensrelation hvis der for alle x, y, z S gælder: x x. x y y x. x y y z x z. En ækvivalensrelation deler S i disjunkte delmængder (hver bestående af elementer som er i relation til hinanden, men ikke til andre elementer), og kaldes derfor også en partition.

Ækvivalensrelationer på en grafs knuder Uorienterede grafer: For v, u V : v u der er en (uorienteret) sti mellem u og v

Ækvivalensrelationer på en grafs knuder Uorienterede grafer: For v, u V : v u der er en (uorienteret) sti mellem u og v Giver en partition af grafens knuder V : De kaldes grafens sammenhængskomponenter (CC er).

Ækvivalensrelationer på en grafs knuder Uorienterede grafer: For v, u V : v u der er en (uorienteret) sti mellem u og v Giver en partition af grafens knuder V : De kaldes grafens sammenhængskomponenter (CC er). Finde dem?

Ækvivalensrelationer på en grafs knuder Uorienterede grafer: For v, u V : v u der er en (uorienteret) sti mellem u og v Giver en partition af grafens knuder V : De kaldes grafens sammenhængskomponenter (CC er). Finde dem? Via DFS eller BFS (med ydre driver, som i DFS). Knuderne i hvert genereret træ er en CC, da alle knuder, som kan nås fra en startknude s, vil blive nået, og ingen andre knuder kan nås (jvf. punkt 1 og 2 i sætning om BFS).

Ækvivalensrelationer på en grafs knuder Uorienterede grafer: For v, u V : v u der er en (uorienteret) sti mellem u og v Giver en partition af grafens knuder V : De kaldes grafens sammenhængskomponenter (CC er). Finde dem? Via DFS eller BFS (med ydre driver, som i DFS). Knuderne i hvert genereret træ er en CC, da alle knuder, som kan nås fra en startknude s, vil blive nået, og ingen andre knuder kan nås (jvf. punkt 1 og 2 i sætning om BFS). Tid?

Ækvivalensrelationer på en grafs knuder Uorienterede grafer: For v, u V : v u der er en (uorienteret) sti mellem u og v Giver en partition af grafens knuder V : De kaldes grafens sammenhængskomponenter (CC er). Finde dem? Via DFS eller BFS (med ydre driver, som i DFS). Knuderne i hvert genereret træ er en CC, da alle knuder, som kan nås fra en startknude s, vil blive nået, og ingen andre knuder kan nås (jvf. punkt 1 og 2 i sætning om BFS). Tid? O(n + m).

Ækvivalensrelationer på en grafs knuder Orienterede grafer: For v, u V : v u der er en (orienteret) sti fra u til v og der er en (orienteret) sti fra v til u

Ækvivalensrelationer på en grafs knuder Orienterede grafer: For v, u V : v u der er en (orienteret) sti fra u til v og der er en (orienteret) sti fra v til u Giver en partition af grafens knuder V : De kaldes grafens stærke sammenhængskomponenter (SCC er). Finde dem?

Finde stærke sammenhængskomponenter Algoritme: Her er G T grafen G med alle kanter vendt.

Finde stærke sammenhængskomponenter Algoritme: Her er G T grafen G med alle kanter vendt. Tid?

Finde stærke sammenhængskomponenter Algoritme: Her er G T grafen G med alle kanter vendt. Tid? O(n + m).

Finde stærke sammenhængskomponenter Algoritme: Her er G T grafen G med alle kanter vendt. Tid? O(n + m). Korrekthed?

Finde stærke sammenhængskomponenter Algoritme: Her er G T grafen G med alle kanter vendt. Tid? O(n + m). Korrekthed? De næste sider...

Sætning: Algoritmen SCC ovenfor er korrekt, dvs. træerne returneret fra det andet kald til DFS repræsenterer præcis G s SCC er.

Sætning: Bevis: Algoritmen SCC ovenfor er korrekt, dvs. træerne returneret fra det andet kald til DFS repræsenterer præcis G s SCC er.

Sætning: Bevis: Algoritmen SCC ovenfor er korrekt, dvs. træerne returneret fra det andet kald til DFS repræsenterer præcis G s SCC er. Bemærk først at: Der er en sti u v i G Der er en sti v u i G T

Sætning: Bevis: Algoritmen SCC ovenfor er korrekt, dvs. træerne returneret fra det andet kald til DFS repræsenterer præcis G s SCC er. Bemærk først at: Heraf følger: Der er en sti u v i G Der er en sti v u i G T u og v i samme SCC i G u og v i samme SCC i G T

Sætning: Bevis: Algoritmen SCC ovenfor er korrekt, dvs. træerne returneret fra det andet kald til DFS repræsenterer præcis G s SCC er. Bemærk først at: Heraf følger: Der er en sti u v i G Der er en sti v u i G T u og v i samme SCC i G u og v i samme SCC i G T Så G og G T har de samme SCC er.

Hvid-sti lemma: Hvis findes en sti af hvide knuder fra u til w når u kommer på stakken (dvs. til tid u.d), da kommer w på stakken inden u kommer af.

Hvid-sti lemma: Hvis findes en sti af hvide knuder fra u til w når u kommer på stakken (dvs. til tid u.d), da kommer w på stakken inden u kommer af. Bevis (lemma): Antag at der findes knuder på stien som ikke kommer på stakken før u kommer af, og lad y være den første (set fra u). Dvs. y s forgænger x kom på stakken inden u kom af. Men så kan u ikke komme af inden x gør, og x kan ikke komme af før y har været på stakken (da y er nabo til x vil y blive opdaget/sat på stakken af x, hvis det ikke er sket tidligere). Da w kommer på stakken efter at u kommer på stakken fås: Korollar: I situationen ovenfor haves u.d < w.d < w.f < u.f.

For en knudemængde C V defineres f (C) = max v C v.f (hvor f angiver tiden fra første DFS i SCC-algoritmen). Lemma: Hvis C, C er to forskellige SCC er i G, og (x, y) er en kant i G med x C og y C, da gælder f (C) > f (C ).

For en knudemængde C V defineres f (C) = max v C v.f (hvor f angiver tiden fra første DFS i SCC-algoritmen). Lemma: Hvis C, C er to forskellige SCC er i G, og (x, y) er en kant i G med x C og y C, da gælder f (C) > f (C ). Da G T er G med alle kanter vendt, og da SCC erne er de samme i G T og G, haves: Korollar: Hvis C, C er to forskellige SCC er i G T, og (x, y) er en kant i G T med x C og y C, da gælder f (C) < f (C ).

Bevis (lemma): Lad u være den første knude i C C som opdages.

Bevis (lemma): Lad u være den første knude i C C som opdages. Case 1: u C. Her er der en sti fra u til w for alle w C C, så udsagnet følger af korollar til hvid-sti lemma.

Bevis (lemma): Lad u være den første knude i C C som opdages. Case 1: u C. Her er der en sti fra u til w for alle w C C, så udsagnet følger af korollar til hvid-sti lemma. Case 2: u C. Her er der en sti fra u til w for alle w C, så af samme korollar haves f (C ) = u.f.

Bevis (lemma): Lad u være den første knude i C C som opdages. Case 1: u C. Her er der en sti fra u til w for alle w C C, så udsagnet følger af korollar til hvid-sti lemma. Case 2: u C. Her er der en sti fra u til w for alle w C, så af samme korollar haves f (C ) = u.f. Hvis der fandtes en knude v C med v.d < u.f, ville der være et tidpunkt hvor v og u var på stakken samtidig (da u.d < v.d, eftersom u var den først opdagede i C C ). Da det er en invariant under DFS at der i grafen findes en sti mellem knuderne på stakken (fra tidligere til senere push ede knuder), ville dette betyde en sti fra u C til v C. Sammen med kanten (x, y) ville dette medføre at alle knuder i C C var i samme SCC, i modstrid med at C og C er to forskellige SCC er.

Bevis (lemma): Lad u være den første knude i C C som opdages. Case 1: u C. Her er der en sti fra u til w for alle w C C, så udsagnet følger af korollar til hvid-sti lemma. Case 2: u C. Her er der en sti fra u til w for alle w C, så af samme korollar haves f (C ) = u.f. Hvis der fandtes en knude v C med v.d < u.f, ville der være et tidpunkt hvor v og u var på stakken samtidig (da u.d < v.d, eftersom u var den først opdagede i C C ). Da det er en invariant under DFS at der i grafen findes en sti mellem knuderne på stakken (fra tidligere til senere push ede knuder), ville dette betyde en sti fra u C til v C. Sammen med kanten (x, y) ville dette medføre at alle knuder i C C var i samme SCC, i modstrid med at C og C er to forskellige SCC er. Derfor haves v.d > u.f for alle v C, så f (C) > u.f = f (C ).

Vi viser nu sætningen om korrekthed af SCC-algoritmen ved at vise at for alle k gælder: Knuderne i de k første træer genereret under den anden DFS i SCC-algoritmen udgør hver især en SCC i G T. Da SCC erne i G og G T er de samme, og da alle knuder i grafen er i et af træerne, viser dette korrektheden.

Vi viser nu sætningen om korrekthed af SCC-algoritmen ved at vise at for alle k gælder: Knuderne i de k første træer genereret under den anden DFS i SCC-algoritmen udgør hver især en SCC i G T. Da SCC erne i G og G T er de samme, og da alle knuder i grafen er i et af træerne, viser dette korrektheden. Vi viser ovenstående udsagn via induktion på k.

Vi viser nu sætningen om korrekthed af SCC-algoritmen ved at vise at for alle k gælder: Knuderne i de k første træer genereret under den anden DFS i SCC-algoritmen udgør hver især en SCC i G T. Da SCC erne i G og G T er de samme, og da alle knuder i grafen er i et af træerne, viser dette korrektheden. Vi viser ovenstående udsagn via induktion på k. Skridt: Antag sandt for k, vis sandt for k + 1. Det (k + 1) te træ genereres ved det (k + 1) te kald til DFS-Visit i for-løkken i den ydre driver i DFS. Lad u være knude, der kaldes på. Hvis vi stiller knuderne op i for-løkkens rækkefølge (efter aftagende v.f -værdi), ser situationen sådan ud på tidspunktet for dette kald:

u V : v.f: for-loop: Sorte knuder er de indtil nu opdagede under DFS, hvide er de uopdagede. Lad C være SCC en indeholdende u, og lad T være træet genereret af kaldet på u. Af induktionsantagelsen udgør de sorte knuder præcis k af grafens SCC er. Derfor må alle andre SCC er ligge inden i de hvide knuder, og C er en af disse (da u er hvid). Eftersom der ved starten af kaldet er en hvid sti fra u til alle w C, giver korollar til hvid-sti lemma at C T.

Lad C være en vilkårlig hvid SCC forskellig fra C. Pga. for-løkkens rækkefølge ses u.f = f (C) > f (C ), så af korollar til lemma ovenfor fås at ingen kant i G T kan gå fra C til C. Da DFS-Visit ikke besøger de sorte knuder, kan den derfor ikke forlade C. Heraf ses T C. Vi har i alt vist T = C, hvilket viser udsagnet for k + 1.

Lad C være en vilkårlig hvid SCC forskellig fra C. Pga. for-løkkens rækkefølge ses u.f = f (C) > f (C ), så af korollar til lemma ovenfor fås at ingen kant i G T kan gå fra C til C. Da DFS-Visit ikke besøger de sorte knuder, kan den derfor ikke forlade C. Heraf ses T C. Vi har i alt vist T = C, hvilket viser udsagnet for k + 1. Basis: Samme argument, blot lidt simplere (der er ingen sorte knuder, og u er første knude i rækkefølgen), viser udsagnet for k = 1.