Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen

Liknende presentasjoner


Presentasjon om: "1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen"— Utskrift av presentasjonen:

1 1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen hakoja@stud.ntnu.no

2 2 I dag Neste ukes praksisøving Topologisk sortering Minimale spenntrær Gjennomgang av denne ukens teori- og praksisøving

3 3 Neste ukes øving Praktisk øving: Kobra lærer å stave Teoriøving: Grafer og hashing

4 4 Directed Acyclic Graph (DAG)‏ En DAG er en rettet, asyklisk graf Motstykket i en urettet graf er en skog

5 5 Hvilken graf er en DAG? 1 2 3

6 6 Topologisk sortering

7 7 Problemstilling: Gitt et sett med oppgaver, hvor det for noen par (av oppgaver), er nødvendig at den ene oppgaven utføres før den andre. Finn en utførelsesrekkefølge av disse oppgavene, som respekterer disse avhengighetene. Topologisk sortering

8 8 Formulert som et grafspørsmål: Gitt en rettet asyklisk graf G = ( V, E ), finn en ordning av nodene, slik at for enhver kant, må i < j. En graf hvor dette er oppfylt sier vi har en topologisk ordning.

9 9 Topologisk sortering

10 10 Topologisk sortering 3 1 4 2 5

11 11 Topologisk sortering 3 1 4 2 5 52134

12 12 Topologisk sortering 3 1 4 2 5 52134 Har alle DAGs en topologisk ordning?

13 13 Topologisk sortering Lemma: I enhver DAG finnes det en node uten innkanter. Bevis-skisse: Anta motsatt: vi har en DAG av størrelse n, og alle nodene har minst én innkant. Velg en node v Følg en av innkantene " baklengs " fra v til u Gjenta fra u Hvor lenge kan vi holde på før alle nodene er besøkt minst én gang? Etter maks n + 1 gjentagelser må vi ha gått i ring Selvmotsigelse! vi har en sykel.

14 14 Topologisk sortering Teorem: Alle DAGs har en topologisk ordning. Bevis-skisse: Her kjører vi "bevis-ved-algoritme": Finn en node u i grafen G uten innkant ● Kan alltid gjøres ifølge forrige lemma Plasser u fremst i den toplogiske ordningen, og fjern den fra G Finn en ordning av den resterende grafen, og plasser denne etter u

15 15 Topologisk sortering Kleinberg c a d b e

16 16 Topologisk sortering Kleinberg c a d b e

17 17 Topologisk sortering Kleinberg c a d b e

18 18 Topologisk sortering Kleinberg c a d b e

19 19 Topologisk sortering Kleinberg c a d b e Kjøretid: O(V + E)

20 20 Topologisk sortering Kleinberg c a d b e

21 21 Algoritme: Kjør DFS på alle noder og legg dem først i en liste etter hvert som de fullføres. PS! DFS på en vilkårlig graf uten sykler starter på en vilkårlig node som ikke er besøkt. Dette gjøres om igjen helt til alle noder er besøkt. Topologisk sortering Cormen

22 22 1:[e] 2:[d, e] 3:[c, d, e] 4:[b, c, d, e] 5:[a, b, c, d, e] a b c d e DFS på graf 1 : Asymptotisk kjøretid: For hver node, sjekk alle kantene fra noden: Θ(V + E)‏ Algoritme: Kjør DFS på alle noder og legg dem først i en liste etter hvert som de fullføres. Topologisk sortering Cormen

23 23 Minimale spenntrær

24 24 Et spenntre i en urettet, sammenhengende graf, er et tre som dekker alle nodene i grafen. Et spenntre har | V | - 1 kanter. I vektede grafer kan vi snakke om minimale spenntrær. Dette er de spenntrærne som benytter et utvalg av kanter som totalt sett har den minste mulige vekten. En graf kan ha flere minimale spenntrær. – Hvis alle kantvektene er unike får vi ett unikt MST Minimale spenntrær (MST)

25 25 Minimale spenntrær 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15 Spenntre Minimalt spenntre

26 26 Minimale spenntrær - hvordan finne et? Mange mulige tilnærminger: Start uten noen kanter. Legg til kanter i treet etter stigende kantvekt, såfremt dette ikke skaper en sykel. Start med en rot-node. Legg til den billigste kanten som knytter noden til resten av grafen. Legg nå til den billigste kanten som knytter de to nodene til resten av grafen. Legg nå til den billigste kanten som knytter de tre nodene til resten av grafen. Legg nå til... Gjenta til du har et spenntre. Start med alle kantene. Fjern kanter i grafen etter synkende kantvekt, så lenge dette ikke bryter grafen i to deler. Hvilken blir riktig? Alle sammen!

27 27 Hvorfor fungerer alle sammen? MST-problemet har en grådig egenskap: Valg som gjøres for å optimalisere noe lokalt, vil også gi en optimal løsning globalt. Teorem (MSTs grådige egenskap) La T være et MST for grafen G = (V, E ), og la A være en delmengde av V. Anta kanten (v, u ) er en kant med minimal vekt som knytter A til V – A. Da er (v, u ) en del av det minimale spenntreet T. Bevis-skisse: Cut & Paste (Viktig teknikk!) Minimale spenntrær

28 28 Prims algoritme: Velg en vilkårlig node i G = (V, E), og la denne være rotnoden i et tre T Utvid T ved og hele tiden velge den billigste kanten som knytter T til en node som ikke ligger i T Fortsett til T utspenner alle nodene i G Minimale spenntrær Prims algoritme

29 29 Minimale spenntrær Prims algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

30 30 Minimale spenntrær Prims algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

31 31 Minimale spenntrær Prims algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

32 32 Minimale spenntrær Prims algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

33 33 Minimale spenntrær Prims algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

34 34 Minimale spenntrær Prims algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

35 35 Minimale spenntrær Prims algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

36 36 Minimale spenntrær Prims algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

37 37 Kjøretid Prims algoritme Binary Heap O(E log(V )). Nabomatrise O(V 2 ) ‏ Fibonnaci Heap O(E + V log(V )) ‏ Minimale spenntrær Prims algoritme MST-Prim(G, w, r) 1 for each u in G.V 2 u.key = ∞ 3 u.π = NIL 4 r.key = 0 5 Q = G.V 6 while Q ≠ Ø 7 u = Extract-Min (Q) 8 for each v in G.Adj [u] 9 if v in Q and w(u,v) < v.key 10 v.π = u 11 v.key = w(u,v)

38 38 Kruskals algoritme Sorter kantene i grafen etter stigende kantvekt Plukk ut kantene én etter én, og legg dem til i treet såfremt dette ikke danner en sykel Fortsett helt til du har et (minimalt) spenntre Minimale spenntrær Kruskals algoritme

39 39 Minimale spenntrær Kruskals algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

40 40 Minimale spenntrær Kruskals algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

41 41 Minimale spenntrær Kruskals algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

42 42 Minimale spenntrær Kruskals algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

43 43 Minimale spenntrær Kruskals algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

44 44 Minimale spenntrær Kruskals algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

45 45 Minimale spenntrær Kruskals algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

46 46 Minimale spenntrær Kruskals algoritme 4 17 12 11 6 8 10 3 2 13 14 5 1 16 7 15

47 47 Kruskals algoritme Sorter kantene i grafen etter stigende kantvekt Plukk ut kantene én etter én, og legg dem til i treet såfremt dette ikke danner en sykel Fortsett helt til du har et (minimalt) spenntre Kjøretid veldig avhengig av hvordan vi implementerer steg 2 Kan benytte en disjont-forest struktur (ikke pensum) Kjøretid: O(E lg V ) Fun-fact: Denne implementasjonen involverer en funksjon som vokser saktere enn log n (søk på Ackermann-funksjonen) Minimale spenntrær Kruskals algoritme

48 48 Denne ukens øvinger Praksis: Redd Ratatosk Teori: Traversering


Laste ned ppt "1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen"

Liknende presentasjoner


Annonser fra Google