Øvingsforelesning 4. Topologisk sortering, Strongly Connected Components og Minimale spenntrær. Magnus Botnan

Like dokumenter
Algdat - øvingsforelesning

O, what a tangled. Fjerde forelesning. Robot-eksemplet som ikke ble gjennomgått sist blir frivillig selvstudium (ut fra foilene :-)

En litt annen måte å forklare traversering på. Traversering

Grunnleggende Grafteori

Uretta grafar (1) Mengde nodar Mengde kantar som er eit uordna par av nodar

Minimum Spenntrær - Kruskal & Prim

INF Algoritmer og datastrukturer

Øvingsforelesning Korteste vei: Alle til alle

O, what a tangled. Fjerde forelesning. O, what a tangled web we weave / When first we practice to deceive! Sir Walter Scott, *Marmion*

INF Algoritmer og datastrukturer

Minimum spenntrær. Lars Vidar Magnusson Kapittel 23. Kruskal Prim

INF Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

Grunnleggende Grafalgoritmer II

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

Algdat Eksamensforelesning. Nils Barlaug

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing

IN Algoritmer og datastrukturer

INF1020 Algoritmer og datastrukturer GRAFER

IN Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

GRAFER. Noen grafdefinisjoner. Korteste vei i en uvektet graf V 2 V 1 V 5 V 3 V 4 V 6

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Øvingsforelesning 12 Maks flyt

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Teoriøving 7 + litt om Ford-Fulkerson. Magnus Lie Hetland

Løsningsforslag - Korteste vei

Eksamen i tdt4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Algdat - Øvingsforelesning. Maks flyt

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Løsnings forslag i java In115, Våren 1998

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Grunnleggende Grafalgoritmer

Korteste Vei II. Lars Vidar Magnusson Kapittel 24 Bellman-Ford algoritmen Dijkstra algoritmen

INF Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

PG4200 Algoritmer og datastrukturer Forelesning 10

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Algdat Redux. Fjortende forelesning. Repetisjon av utvalgte emner.

Vi skal se på grafalgoritmer for:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

INF Algoritmer og datastrukturer

Fra A til B. Syvende forelesning

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Grunnleggende Grafalgoritmer III

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

MAT1030 Forelesning 22

Algdat-ninja på 60 minutter: Et galskapsprosjekt. Magnus Lie Hetland

MAT1030 Forelesning 25

Introduksjon. MAT1030 Diskret Matematikk. Introduksjon. En graf. Forelesning 22: Grafteori. Roger Antonsen

Introduksjon. MAT1030 Diskret matematikk. Søkealgoritmer for grafer. En graf

MAT1030 Diskret matematikk

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

MAT1030 Diskret Matematikk

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

INF Algoritmer og datastrukturer

TMA4140 Diskret Matematikk Høst 2016

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

LO118D Forelesning 10 (DM)

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

MAT1030 Forelesning 22

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

GRAFER. Korteste vei i en vektet graf uten negative kanter. Korteste vei, en-til-alle, for: Minimale spenntrær

Dijkstras algoritme Spørsmål

Vi skal se på grafalgoritmer for:

ALGORITMER OG DATASTRUKTURER

Innhold. Innledning 1

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

All good things. Fjortende forelesning

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

MAT1030 Forelesning 24

INF Algoritmer og datastrukturer

LP. Leksjon 7. Kapittel 13: Nettverk strøm problemer

IN2010: Algoritmer og Datastrukturer Series 2

Løsningsforslag 2017 eksamen

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Agenda. 1 Sortering, heap og select. 2 Binære trær. 3 Grafer, BFS og DFS. 4 Spenntrær og Korteste vei. 5 Maks flyt. 6 Dynamisk programmering

UNIVERSITETET I OSLO

Forelesning 24. Grafer og trær. Dag Normann april Vektede grafer. En kommunegraf

MAT1140: Kort sammendrag av grafteorien

Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl

Grafteori. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 24: Grafer og trær. Dag Normann

All good things. Fjortende forelesning

MAT1140: Kort sammendrag av grafteorien

Vektede grafer. MAT1030 Diskret matematikk. En kommunegraf. En kommunegraf. Oppgave

Lineær sortering. Radix sort

ALGORITMER OG DATASTRUKTURER

Innledning Grafer. Grafer / Nettverk. Hva er en graf? Hva er en graf? Eksempler på grafer? Hva er en graf? Elementære Graf-Algoritmer

Transkript:

Øvingsforelesning 4 Topologisk sortering, Strongly Connected Components og Minimale spenntrær Magnus Botnan botnan@stud.ntnu.no 09/10/09 1

I dag Topologisk Sortering Sterke Komponenter Minimale Spenntrær Gjennomgang av Teori- og Praksisøving Gjennomgang av NWERC(Northwestern European Programming Contest)-oppgave relatert til Sterke Komponenter(avansert) 09/10/09 2

Topologisk sortering Minimale spenntrær Hvilke av følgende grafer er en DAG? 1 2 3 09/10/09 3

Directed Acyclic Graph (DAG) En DAG er en rettet, asyklisk graf Alle trær er DAG s fordi de ikke har kanter som går bakover i arveretningen. Uten bakoverkanter får man ingen sykler. Det er likevel ikke gitt at alle DAG s er trær 09/10/09 4

Topologisk sortering Minimale spenntrær 3 1 2 < < < < < < < 09/10/09 5

Topologisk sortering Minimale spenntrær Problemstilling: Finn en ordning av alle noder i en DAG slik at alle noder som er foreldre-noder listes opp før sine etterkommere. 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. 09/10/09 6

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

Minimale spenntrær Strongly Connected Component (SCC): En maksimal del av en graf (subgraf) hvor alle noder kan nå alle. En SCC er nødvendig vis en sykel, men en sykel er ikke en SCC hvis den ikke er maksimal. Definisjon: SCC av en graf G = (V,E) er en maksimal mengde av alle hjørner C E slik at for hvert par av hjørner u, v C har vi både stien u v og v u 09/10/09 8

Minimale spenntrær 09/10/09 9

Minimale spenntrær Problemstilling: Finn alle SCC s i en graf G Algoritme: Kjør DFS på G for å finne alle endetider. Kjør DFS på G T men velg utgangsnoder med synkende endetid. Resulterende dybde først skog består av et tre for hver SCC. 09/10/09 10

Minimale spenntrær Algoritme: Kjør DFS på G for å finne alle endetider. Kjør DFS på G T men velg utgangsnoder med synkende endetid. Resulterende dybde først skog består av et tre for hver SCC. a b c d 13/ 14 11/ 16 1/ 10 8/ 9 12/ 15 3/ 4 2/ 7 5/ 6 e f g h 09/10/09 11 (s. 553 i Cormen)

Minimale spenntrær Algoritme: Kjør DFS på G for å finne alle endetider. Kjør DFS på G T men velg utgangsnoder med synkende endetid. Resulterende dybde først skog består av et tre for hver SCC. a b c d 14 16 10 9 15 4 7 6 e f g h 09/10/09 12

Forklaring (uformelt bevis) 1. Vi antar at alle tidligere besøkte noder er deler av komplette SCC s 2. For hver nye rot vi velger til vår baklengs DFS er alle andre noder en av følgende: Besøkt ( og derfor antatt deler av SCC s ) Lavere finish-tid Lavere finish-tid + umulig å nå i vårt baklengs DFS-tre 1. Anta at det finnes en node med lavere finish-tid, som vi når i baklengs dfs, som ikke er med i SCC. Da kan den ikke nås via forlengs dfs, og per antakelse må den ha blitt kjørt tidligere. Men hvis den har blitt kjørt før vil den ha senere timestamp enn roten vi kjører fra nå. Motsigelse. 09/10/09 13

Minimale spenntrær Algoritme: Kjør DFS på G for å finne alle endetider. Kjør DFS på G T men velg utgangsnoder med synkende endetid. Resulterende dybde først skog består av et tre for hver SCC. K+2 F > K F K K+1 K+3 K K-1 K -1 K -1 K -1 K -1 K -1 K-2 09/10/09 14

Minimale spenntrær Et spenntre i en graf er et utvalg av grafens kanter, som danner et tre som dekker alle nodene. ( Som vanlig for trær blir antall kanter n-1 ) I vektede grafer kan vi ha minimale spenntrær. Dette er de spenntrærne som benytter et utvalg av kanter som totalt sett har den minste mulige vekten. 09/10/09 15

Minimale spenntrær Problemstilling: Finn et minimalt spenntre Generisk algoritme: Så lenge det finnes en kant som garantert er en del av et slikt tre, bruk denne og let videre blant de resterende kantene Generic-MST (Cormen) Generic-MST(G,w) A while A does not form a spanning tree find an edge (u, v) that is safe for A A A {(u, v)} return A 09/10/09 16

Minimale spenntrær Prims algoritme: Velg en vilkårlig node. Opprett en liste over naboer. Så lenge det finnes ubesøkte naboer: Velg den billigste og fjern denne fra lista. Legg til nodens hittil ubesøkte naboer. 09/10/09 17

Minimale spenntrær Prims algoritme: Binary Heap O(E*log(V)). Nabomatrise O(V 2 ) Fibonnaci Heap O(E + V*log(V)) 09/10/09 18

Minimale spenntrær 09/10/09 19

Minimale spenntrær Kruskals algoritme Velg en ny kant, alltid den billigste. Sjekk at kanten ikke danner en sykel. (Dette kan gjennomføres ved å passe på at nodene befinner seg i forskjellige trær) 09/10/09 20

Minimale spenntrær 09/10/09 21