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

Slides:



Advertisements
Liknende presentasjoner
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Advertisements

TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
Bellman-Ford og Floyd-Warshall Kristian Veøy
Kap.8 Sortering og søking sist oppdatert • Del 1 Søking - lineær søking m/u sorterte elementer - binærsøking - analyse • Del 2 Sortering - ”gamle”
Ulike sorteringsmetoder Kompleksitet av dem
Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
Forside A: Diverse B: O -,  - og  -relasjoner C: Pseudo- polynomialitet D: Transitivitet E: Diverse Spørsmål Teoriøving 5, oppgave 1 Åsmund Eldhuset.
Teoriøving 4 (1) Strongly connected component: ”det maksimale settet med noder slik at for alle nodepar (u,v) i settet finnes kantene u -> v og v -> u.
Øvingsforelesning 9 Flytnettverk, maksimum flyt og
1 Øvingsforelesning Andreas Knudsen Nils Grimsmo
Øvingsforelesning 3 Grafer, BFS, DFS og hashing
Alg. Dat Øvingsforelesning 5 Kompleksitetsanalyse Torbjørn Moralnd
Kompleksitetsanalyse
Korrekt dybde først-søk
Øvingsforelesning 12 Redusering av problemer,
Øvingsforelesning 2 Trær og søking i dem, samt litt diverse emner Kristian Veøy
Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Børge Rødsjø
Øvingsforelesning Magnus Haug
Forside Motivasjon Analyse Forside Motivasjon Analyse  -notasjon O og  Relasjoner Klasser Fallgruver Spørsmål Kompleksitetsanalyse Åsmund Eldhuset asmunde.
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
The Postmans Problem. LOG530 Distribusjonsplanlegging 2 2 Mista har fått i oppdrag å vedlikeholde veiene i landsdelen. Dette er et eksempel på den klassiske.
Klargjøring fra forrige gang
Øvingsforelesning 9 - Børge Rødsjø
Algoritmer og Datastrukturer
Kap 10 Graf.
Dynamisk programmering
INF 295 Algoritmer og datastrukturer Forelesning 21 Merge, Quick og Bøtte, Radix og ekstern sortering Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 8 Trær Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 17 - kap 9 Korteste vei i grafer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 20 - Kapittel 7 Boble-, innstikk-, Shell-, Heap-, Quick-, Mergesortering Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Andre prioritetskøer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 18 - kap 9 Aktivitetsgrafer
INF 295 Algoritmer og datastrukturer Forelesning 9b Balanserte (binære) trær Hans Fr. Nordhaug.
INF 295 Forelesning 19 - Dynamisk programmering Korteste vei alle til alle (Floyd) Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Hovedfagspresentasjon
INF 4130 Eksamen 2008 Gjennomgang.
Magnus Haug Algoritmer og Datastrukturer
Michael F. AtiyahIsadore M. Singer Om Atiyah-Singer Indeks-teoremet Professor John Rognes Universitetet i Oslo.
Parallellisering av Coin3D for Systems in Motion av Sveinung Thunes.
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
INF 295 Algoritmer og datastrukturer Forelesning 22 Teknikker for algoritmeutvikling Hans Fr. Nordhaug/ Ola Bø.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Sterke og 2-sammenhengende komponeneter, DFS
1 INF oktober 2010 Stein Krogdahl Foreløpige foiler Dagens program: –Første time: Kap 23.5: Trær og strategier for spill med to spillere –Andre.
Routing Indices For P2P Systems TDT2 – Avanserte Distribuerte Systemer Lars-Erik Bjørk.
Regresjon Petter Mostad
Praktisk Midtveisevaluering av kurset («femminutterslapper») i pausen. Undervisningsfri neste uke (ingen forelesninger eller grupper). NM i programmering.
Trekkstrukturer Bygges opp fra en mengde trekk f,g,h,… og en mengde atomære verdier a,b,c,… Defineres som en DAG (directed acyclic graph), det vil si en.
T.Bu Heimeoppg. 3 A B Kortaste sti frå A til B har lengde 11 Kortaste postmannrute har lengde 82 (=
Matematikk 1 årskurs 26. oktober 2009
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø.
5702 Geografisk analyse Nettverksanalyse. Evaluering av nettverksstruktur Nettverksdiameter Diameteren på et nettverk representerer maksimum antall.
Øvingsforelesning 2 - TDT4120 Grafer og hashing Benjamin Bjørnseth.
Øvingsforelesning 11 P vs NP Håkon Jacobsen
God undervisning og dybdelæring i matematikk
Obs. Denne presentasjonen er ikke ment å vises til barna
Hvorfor utvide klasserommet? B – Samarbeid
Øvingsforelesning 10 Grådighet
Hvorfor utvide klasserommet? B – Samarbeid
Utskrift av presentasjonen:

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

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. Topologisk sortering

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 Topologisk sortering

10 Topologisk sortering

11 Topologisk sortering

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

15 Topologisk sortering Kleinberg c a d b e

16 Topologisk sortering Kleinberg c a d b e

17 Topologisk sortering Kleinberg c a d b e

18 Topologisk sortering Kleinberg c a d b e

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

20 Topologisk sortering Kleinberg c a d b e

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 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 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 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ær Prims algoritme

29 Minimale spenntrær Prims algoritme

30 Minimale spenntrær Prims algoritme

31 Minimale spenntrær Prims algoritme

32 Minimale spenntrær Prims algoritme

33 Minimale spenntrær Prims algoritme

34 Minimale spenntrær Prims algoritme

35 Minimale spenntrær Prims algoritme

36 Minimale spenntrær Prims algoritme

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 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 Minimale spenntrær Kruskals algoritme

40 Minimale spenntrær Kruskals algoritme

41 Minimale spenntrær Kruskals algoritme

42 Minimale spenntrær Kruskals algoritme

43 Minimale spenntrær Kruskals algoritme

44 Minimale spenntrær Kruskals algoritme

45 Minimale spenntrær Kruskals algoritme

46 Minimale spenntrær Kruskals algoritme

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 Denne ukens øvinger Praksis: Redd Ratatosk Teori: Traversering