Øvingsforelesning 4

48
1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen [email protected]

Upload: zia-chang

Post on 04-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

Øvingsforelesning 4. Topologisk sortering Minimale spenntrær Håkon Jacobsen [email protected]. I dag. Neste ukes praksisøving Topologisk sortering Minimale spenntrær Gjennomgang av denne ukens teori- og praksisøving. Neste ukes øving. Praktisk øving: Kobra lærer å stave - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Øvingsforelesning 4

1

Øvingsforelesning 4

Topologisk sorteringMinimale spenntrær

Håkon [email protected]

Page 2: Øvingsforelesning 4

2

I dag

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

praksisøving

Page 3: Øvingsforelesning 4

3

Neste ukes øving

Praktisk øving: Kobra lærer å stave

Teoriøving: Grafer og hashing

Page 4: Øvingsforelesning 4

4

Directed Acyclic Graph (DAG)

En DAG er en rettet, asyklisk graf

Motstykket i en urettet graf er en skog

Page 5: Øvingsforelesning 4

5

Hvilken graf er en DAG?

1

2

3

Page 6: Øvingsforelesning 4

6

Topologisk sortering

Page 7: Øvingsforelesning 4

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.

1,2 , ... , n

Topologisk sortering

Page 8: Øvingsforelesning 4

8

Topologisk sortering

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.

v1 , v2 , ... , vn

(v i , v j )

Page 9: Øvingsforelesning 4

9

Topologisk sortering

Page 10: Øvingsforelesning 4

10

Topologisk sortering

3

1

4

2

5

Page 11: Øvingsforelesning 4

11

Topologisk sortering

3

1

4

2

5521 3 4

Page 12: Øvingsforelesning 4

12

Topologisk sortering

3

1

4

2

5521 3 4

Har alle DAGs en topologisk ordning?

Page 13: Øvingsforelesning 4

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.

Page 14: Øvingsforelesning 4

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 topologiske ordningen, og fjern den fra G Finn en ordning av den resterende grafen, og plasser denne etter u

Page 15: Øvingsforelesning 4

15

Topologisk sorteringKleinberg

c

a

d

b

e

S { a }

T Ø

Innkanter

a 0

b 1

c 2

d 1

e 4

Page 16: Øvingsforelesning 4

16

Topologisk sorteringKleinberg

c

a

d

b

e

S { a }

T Ø

Innkanter

a 0

b 1

c 2

d 1

e 4

Page 17: Øvingsforelesning 4

17

Topologisk sorteringKleinberg

c

a

d

b

e

S { b }

T { a }

Innkanter

a 0

b 0

c 1

d 1

e 3

Page 18: Øvingsforelesning 4

18

Topologisk sorteringKleinberg

c

a

d

b

e

Innkanter

a 0

b 0

c 0

d 1

e 2

S { c }

T { a, b }

Page 19: Øvingsforelesning 4

19

Topologisk sorteringKleinberg

c

a

d

b

e

S { d }

T { a, b, c }

Innkanter

a 0

b 0

c 0

d 0

e 1

Page 20: Øvingsforelesning 4

20

Topologisk sorteringKleinberg

c

a

d

b

e

S Ø

T { a, b, c, d, e }

Kjøretid: O(V + E)

Innkanter

a 0

b 0

c 0

d 0

e 0

Page 21: Øvingsforelesning 4

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 sorteringCormen

Page 22: Øvingsforelesning 4

22

1: [e]2: [d, e]3: [c, d, e]4: [b, c, d, e]5: [a, b, c, d, e]

a

bc

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 demførst i en liste etter hvert som de fullføres.

Topologisk sorteringCormen

Page 23: Øvingsforelesning 4

23

Minimale spenntrær

Page 24: Øvingsforelesning 4

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)

Page 25: Øvingsforelesning 4

25

Minimale spenntrær

417

12

11

6

8

10

3

2

13

14

51

16

7

15

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Spenntre

Minimalt spenntre

Page 26: Øvingsforelesning 4

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!

Page 27: Øvingsforelesning 4

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

Page 28: Øvingsforelesning 4

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ærPrims algoritme

Page 29: Øvingsforelesning 4

29

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 30: Øvingsforelesning 4

30

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 31: Øvingsforelesning 4

31

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 32: Øvingsforelesning 4

32

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 33: Øvingsforelesning 4

33

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 34: Øvingsforelesning 4

34

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 35: Øvingsforelesning 4

35

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 36: Øvingsforelesning 4

36

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 37: Øvingsforelesning 4

37

Kjøretid Prims algoritme Binary Heap O(E log(V )). Nabomatrise O(V 2 ) Fibonnaci Heap O(E + V log(V ))

Minimale spenntrærPrims algoritme

MST-Prim(G, w, r)1 for each u in G.V2 u.key = ∞3 u.π = NIL4 r.key = 05 Q = G.V6 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.key10 v.π = u11 v.key = w(u,v)

Page 38: Øvingsforelesning 4

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ærKruskals algoritme

Page 39: Øvingsforelesning 4

39

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 40: Øvingsforelesning 4

40

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 41: Øvingsforelesning 4

41

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 42: Øvingsforelesning 4

42

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 43: Øvingsforelesning 4

43

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 44: Øvingsforelesning 4

44

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 45: Øvingsforelesning 4

45

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 46: Øvingsforelesning 4

46

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

Page 47: Øvingsforelesning 4

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ærKruskals algoritme

Page 48: Øvingsforelesning 4

48

Denne ukens øvinger

Praksis: Redd Ratatosk

Teori: Traversering