Øvingsforelesning 4

Post on 04-Jan-2016

34 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Øvingsforelesning 4. Topologisk sortering Minimale spenntrær Håkon Jacobsen hakoja@stud.ntnu.no. 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

1

Øvingsforelesning 4

Topologisk sorteringMinimale spenntrær

Håkon Jacobsenhakoja@stud.ntnu.no

2

I dag

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

praksisøving

3

Neste ukes øving

Praktisk øving: Kobra lærer å stave

Teoriøving: Grafer og hashing

4

Directed Acyclic Graph (DAG)

En DAG er en rettet, asyklisk graf

Motstykket i en urettet graf er en skog

5

Hvilken graf er en DAG?

1

2

3

6

Topologisk sortering

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

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 )

9

Topologisk sortering

10

Topologisk sortering

3

1

4

2

5

11

Topologisk sortering

3

1

4

2

5521 3 4

12

Topologisk sortering

3

1

4

2

5521 3 4

Har alle DAGs en topologisk ordning?

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

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

15

Topologisk sorteringKleinberg

c

a

d

b

e

S { a }

T Ø

Innkanter

a 0

b 1

c 2

d 1

e 4

16

Topologisk sorteringKleinberg

c

a

d

b

e

S { a }

T Ø

Innkanter

a 0

b 1

c 2

d 1

e 4

17

Topologisk sorteringKleinberg

c

a

d

b

e

S { b }

T { a }

Innkanter

a 0

b 0

c 1

d 1

e 3

18

Topologisk sorteringKleinberg

c

a

d

b

e

Innkanter

a 0

b 0

c 0

d 1

e 2

S { c }

T { a, b }

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

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

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

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

23

Minimale spenntrær

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

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

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

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

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

29

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

30

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

31

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

32

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

33

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

34

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

35

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

36

Minimale spenntrærPrims algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

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)

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

39

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

40

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

41

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

42

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

43

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

44

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

45

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

46

Minimale spenntrærKruskals algoritme

417

12

11

6

8

10

3

2

13

14

51

16

7

15

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

48

Denne ukens øvinger

Praksis: Redd Ratatosk

Teori: Traversering

top related