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

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

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

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

INF Algoritmer og datastrukturer

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

Algdat Redux. Fjortende forelesning. Repetisjon av utvalgte emner.

IN Algoritmer og datastrukturer

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

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

Grunnleggende Grafteori

INF1020 Algoritmer og datastrukturer GRAFER

Minimum Spenntrær - Kruskal & Prim

INF Algoritmer og datastrukturer

Algdat - øvingsforelesning

Fra A til B. Syvende forelesning

Dijkstras algoritme Spørsmål

Grunnleggende Grafalgoritmer II

Korteste vei i en vektet graf uten negative kanter

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

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

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

IN Algoritmer og datastrukturer

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

INF Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

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

MAT1030 Forelesning 22

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

PG4200 Algoritmer og datastrukturer Forelesning 10

Løsningsforslag for utvalgte oppgaver fra kapittel 9

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

Grunnleggende Grafalgoritmer

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

All good things. Fjortende forelesning

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

Løsningsforslag - Korteste vei

Lineær sortering. Radix sort

Pensum: fra boken (H-03)+ forelesninger

Pensum: fra boken (H-03)+ forelesninger

Eksamen i tdt4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

All good things. Fjortende forelesning

Live life and be merry

Grunnleggende Grafalgoritmer III

Innhold. Innledning 1

Algdat Eksamensforelesning. Nils Barlaug

MAT1030 Forelesning 25

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

MAT1030 Diskret Matematikk

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

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

MAT1030 Forelesning 22

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.

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

Søk i tilstandsrom. Backtracking (Kap. 10) Branch-and-bound (Kap. 10) Iterativ fordypning. Dijkstras korteste sti-algoritme A*-søk (Kap.

INF Algoritmer og datastrukturer

Øvingsforelesning Korteste vei: Alle til alle

INF Algoritmer og datastrukturer

Vi skal se på grafalgoritmer for:

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

INF1020 Algoritmer og datastrukturer GRAFER

for bare trær Andre forelesning

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Alle mot alle. Åttende forelesning. (eller eller Bellman-Ford, eller BFS, alt ettersom) fra alle noder.

Prioritetskøer. Prioritetskøer. Binære heaper (vanligst) Prioritetskøer

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

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

Prioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

O(V 2 ) bwfs(v, i=1) λ[v] = i for each neighbor u of v if 0 < λ[u] < i. bwfs(u, i+1) if λ[u] = 0

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Magnus Moan (Undertegnede) Enkle datastrukturer, trær, traversering og rekursjon

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

MAT1140: Kort sammendrag av grafteorien

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

MAT1140: Kort sammendrag av grafteorien

Øvingsforelesning 7. Dijkstras algoritme. Foiler: Fredrik Ludvigsen Foreleser: Jon Marius Venstad 10/4/09 1

Algdat - Øvingsforelesning. Maks flyt

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

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

Spenntrær, oppsummert: Kruskal: Traverserer ikke. Plukker kanter i hytt og vær Prim: Legger alltid til den noden som er nærmest treet

MAT1030 Forelesning 25

Oppgave 1. Sekvenser (20%)

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

Transkript:

Dagens oppvarming 1

O, what a tangled Fjerde forelesning Robot-eksemplet som ikke ble gjennomgått sist blir frivillig selvstudium (ut fra foilene :-) O, what a tangled web we weave / When first we practice to deceive! Sir Walter Scott, *Marmion* 2 Bruk av verktøy som rekursjon, induksjon, etc. er mer implisitt denne gangen. Se om hvor mange du kjenner igjen ;-)

I dag Topologisk sortering Sterke komponenter Minimale spenntrær Kruskals algoritme Prims algoritme 3

4

5

6

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

Forrige gang Q = [startnode] while Q: plukk ut en node u fra Q legg naboene til u inn i Q Vi gjør gjerne noe mer etter hvert som vi legger inn og plukker ut noder, da. F.eks. når vi legger inn: Husk hvor du kom fra (noden u). Det gir oss et traverseringstre. Det kan også hende vi gjør oppdateringer av avstandsestimater e.l. Mer om det siden. 8 Husk: For å besøke flere komponenter må vi starte fra hver (ubesøkt) node i grafen. Vi skal se en parallell til det i SCCer senere Hvilken node vi plukker ut påvirker atferden. Er Q en FIFO-kø får vi BFS En LIFO-kø gir DFS En helt vilkårlig (eller tilfeldig) kø vil også gi oss en gyldig traversering. (Prim og Dijkstra bruker prioritetskøer med dynamisk oppdatert prioritet men det er fortsatt en traversering som dette.)

Annet perspektiv Vi bygger et tre I hver runde Rundt treet er et snitt Utvid treet med en kant fra snittet Kan være et nyttig perspektiv når vi skal se på hvorfor f.eks. Prims og Dijkstras algoritmer er korrekte. Prim: Vi velger minste kant over snittet (vi har et eget teorem om hva som skjer da). Dijkstra: Vi observerer at det ikke finnes noen snarveier gjennom snittet. Mer om det siden. Snitt: Egentlig fordeling av nodene i to mengder. Her representert ved kantene mellom de to mengdene. 9 Når vi ikke kommer videre har vi (1) enten traversert hele grafen eller (2) truffet et *blokkerende* snitt (tomt for kanter, hvis grafen er usammenhengende, eller med kun rettede baklengskanter ).

Litt spesielt: I praksis besøker vi hver nabo vi finner direkte (vha. rekursjon), før de andre legges inn i køen. DFS? WTF? Hvilken informasjon ligger egentlig i finish-time? Alle noder er hvite fra starten «Halvferdige» er grå Ferdige er svarte d[v]: discover-time f[v]: finish-time Besøk alle hvite vi støter på rekursivt En grå node har ikke fått besøkt alle sine naboer ennå (dvs. vi har ikke backtracket over den). Eksempel s. 605 i boka (3. utg). 10

Topologisk sortering 11

DAG Directed Acyclig Graph Rettet asyklisk graf Dvs: Vi kan ikke gå i ring! Naturlig representasjon av avhengigheter 12

Dance Grade 10, Open Dramatic Arts Grade 9, Open Dramatic Arts Grade 10, Open Music Grade 9, Open Music Grade 10, Open Dramatic Arts Grade 11, University/College Dramatic Arts Grade 11, Open Music Grade 11, University/College Music Grade 11, Open Grade 12, U Dramatic Arts Grade 12, Open Music Grade 12, University/College Exploring the Arts Grade 12, Open Any Grade 9 or 10 arts course Media Arts Grade 10, Open Any Grade 11 arts course Media Arts Grade 11, Open 13 Visual Arts Grade 11, University/College For å ta et fag må du ta alle de forutsatte fagene, og deres forutsatte fag etc. For å finne ut hva som trengs for et bestemt fag kan du kjøre en baklengs traversering fra noden. Media Arts Grade 12, Open Visual Arts Grade 12, University/Col

Vi har en delvis ordning Hvis a > b og b > c så a > c Det kan være at verken a > b eller b > a 14

15!

16 Et eksempel fra sportsverden (ikke min sterke side): Hvordan kle på seg før man står i mål i hockey

Vi må nesten ta på strømper før skøyter < 17

18 men maske og susp kan vi ta på i vilkårlig rekkefølge. Hvordan velge?

19 Kanskje her?

socks hose pants shorts t-shirt chest pad Vår oppgave: Finn en *total* ordning som respekterer den *partielle* ordningen. Det flere muligheter. skates sweater leg pads mask batting glove catch glove blocker 20

Vanlig sortering kan (konseptuelt) ses på som et spesialtilfelle. DAG-en er da *komplett*. 1 7 6 2 5 3 4 21

for må dette ktig? dan kan man en kjøretid på + E)? Tenk selection sort 1. «Klipp av» noder uten innkanter 2. Legg løse noder bakerst i lista 3. Hvis grafen ikke er tom, start på nytt Helt OK i seg selv, men for å få til SCCalgoritmen vår må vi gjøre det på en litt annen måte 22 La oss se nærmere på DFS her.

Lemma 22.11: G er asyklisk hvis og bare hvis DFS ikke finner bakover-kanter. (Hvorfor?) Vi har altså ingen bakover-kanter < ; = ; ; % 23

Kjernen i beviset Ingen bakoverkanter Møter kun hvite/svarte Hvit: Etterkommer lavere Svart Ferdig lavere f[u] > f[v] u v Hvis vi sorterer omvendt etter f[v] vil alle kanter dermed gå samme vei. 24

Altså: Sortér i synkende finished -tid. Topological-Sort(G): Hvorfor må det bli riktig? Kall DFS(G) for å beregne f[v] Etter hvert som nodene er ferdige: Legg dem i starten av en liste Returner den lenkede listen 25

socks shorts hose t-shirt 7/ 14 osv pants chest pad 8/ 13 skates sweater 9/ 12 10/11 leg pads mask batting glove 1/ 6 catch glove 2/ 5 blocker 3/4 26

Alle piler går til høyre (tenk deg at alle var på samme linje ) socks shorts hose pants skates leg pads t-shirt chest pad sweater mask batting glove catch glove blocker 27

Kant-ensretting Ingen sykler Sorter etter f Underveis O(E + V) Topologisk sortering 28

29

Strongly Connected Components, eller SCCs. Deler av grafen der det finnes stier fra enhver node til enhver annen (innen samme komponent). Sterke komponenter 30

Hvorfor? Viktig strukturbeskrivelse av grafer Lar oss finne naturlige «enheter» i grafen For oss: Mest en anvendelse av topologisk sortering 31

Vi kan teste om en komponent er sterk ved traversering i G og G T fra en vilkårlig node, s. Hvis alle nås, kan alle nå hverandre, via s. De som kan nås fra s i G og G T er SCC-en til s. To noder som kan nå hverandre har samme SCC. G og G har samme SCC-er Komponentgraf: Hver node er en SCC Lemma: Komponentgrafen er en DAG (Se neste slide.) 32

33

Notér de!e! f-verdiene som brukes er altså fra første trinn. Hvert DFS-tre i tredje trinn blir en SCC. Men hvorfor det?! 1. Kjør DFS på G, og ta vare på f-verdier 2. Beregn G T 3. Kall DFS på G T men velg noder etter synkende f-verdi 34

Vi vil besøke én og én komponent Hva om vi besøker besøker komponentene i topologisk rekkefølge? Og hva om vi bruker GT i stedet for G? Vi kan da traversere en hel komponent med DFS, men kommer oss aldri videre, for kantene til alle komponentene vi ikke har besøkt er bak frem, og peker mot oss. 35

Vi vil først vise at hvis vi velger noder etter synkende f så vil vi besøke komponentene i topologisk sortert rekkefølge 36

= / ) @ /! Lemma 22.14: I denne situasjonen vil den seneste noden i C være ferdigbehandlet før den seneste i C. Korollar: Hvis kanten ligger i G transponert så vil situasjonen være omvendt. Enda et korollar: Hvis den seneste i C er behandlet ferdig før den seneste i C så kan det ikke være noen kant fra C til C i G transponert (direkte fra forrige). 37

Så Vi starter med C som har maks f-verdi Vi utforsker alle noder i C Siden f(c) > f(c ) finnes det ingen kanter fra C til C i G T Altså: Vi utforsker bare C Fortsett så med C etc. 38

Vi traverserer (G T ) SCC i omvendt topologisk rekkefølge 39

Vi vil bare kunne bevege oss innad i C eller til komponenter vi allerede har besøkt, siden vi besøker nodene i omvendt topologisk rekkefølge i komponentgrafen. G T gir motstand Vi kan utforske C uansett, siden den er sterk men vi kommer oss ikke videre, fordi kantene går bakover. 40

Finn SCCer Viser struktur DFS i G T etter f Basert på DFS i G O(V + E) SCC vha DFS 41

42

43

Eksempel på grådighet: Velg det som er optimalt sett helt med lokale øyne. Det viktigste er da å vise at det blir korrekt (med induksjon og/eller bevis ved selvmotsigelse). Minimale spenntrær 44

Eksempel: Et sett med hus og veier. Hver vei forbinder to (og bare to) hus. Hver vei har en reparasjonskostnad. Mål: Reparer nok veier (men ikke fler) til at 1. Alle hus kan nå hverandre (urettet graf), og 2. Totale kostnader minimeres Annet eksempel: Elektroniske kretser; bruk minst mulig metall. Annet eksempel: Elektrisk nettverk for et sett med byer. 45 Hvorfor må det bli et tre? Hvis vi har én sykel, hva kan/må vi gjøre?

Spenntrær ' :H :0 I & ( N J + : M N ) * J K L, - Har V 1 kanter Har ingen sykler Er ikke nødvendigvis unike I 0 ::. 46

Vi bygger oss et sett med kanter. Begynner med en tom mengde, og legger til én og én kant. Invariant: Foreløpig løsning er et subsett av et MST. Trenger ikke være sammenhengende. Når vi har V-1 kanter *må* det jo være riktig. 47

«Trygg» betyr bare at vi ikke bryter invarianten. Så A er et ekte subsett av et MST helt til det faktisk *er* et MST. 1. A er en tom mengde Hvordan finner vi trygge kanter? 2. Så lenge A ikke er et spenntre: a) Finn en kant som er trygg for A b) Legg kanten til i A Induksjon 48

Viktig! 6 Anta at A ikke har noen kanter over «snittet» på figuren. Den letteste kanten er da trygg. (Vi kan ha flere.) % = Vises lett ved selvmotsigelse. Hvorfor kan det bli galt hvis A allerede krysser snittet?? > :H6 49

A er en skog Hver trygg kant slår sammen to trær Vi trenger V 1 iterasjoner 50

Trivia: Union-find-strukturen er *supereffektiv*. Den er et eksempel på en av de få kjøretidene i pensum som er raskere enn logaritmisk, men likevel (i teorien) langsommere enn konstant. ( I teorien, fordi det vil være omtrent fysisk umulig for den å komme over 4 ) Se etter Inverse Ackermann i boka eller på nett :-) «I hy! og vær» Se på dekomponering/ reduksjon/rekursjon/ induksjon som perspektiver her Går igjennom kantene i sortert rekkefølge (etter vekt), og hopper over ulovlige kanter (de som gir sykler). Liten ekstra vanskelighet: Hvordan avgjør vi om en kant skaper en sykel? Vi må ha en lur datastruktur som tar vare på trærne i skogen så langt. Kruskals algoritme Union-find: Beskrevet mer i detalj i læreboka. Hovedprinsipp: Alle trær har en peker til sitt «super-tre»/union. 51

Finn MST Sorter kanter Bruk lovlige O(E lg V) Kruskals algoritme 52

Minner om DFS/BFS, men har en annen type «kø»/ valgmekanisme: «Jevnt og fint» Ta alltid noden som det er billigst å koble til treet du har så langt. Her har vi altså hele tiden bare ett tre i A. Traversering Prims algoritme 53

= > Her er snittet «rundt» treet. 54 (+)"*A#0)#

Finn MST Traversering Neste: Kortest Raskest i praksis O(V lg V + E) Akkurat det er ikke pensum, men jeg har sett studier som tyder på det :-) (Med vanlig binær heap.) Prims algoritme 55

Så 56

Topsort: DFS; sortér etter f SCC: 2 DFS; #2 etter f fra #1 i GT Kruskal: Kanter sortert; unngå sykler O(E lg V) Prim: Koble til billigste node O(V lg V + E) Ikke helt klart hvilken som er «best» av Prim og Kruskal. Empirisk (i virkelige implementasjoner) vinner Prims algoritme også over mer avanserte algoritmer. 57