Föreläsning 10. Riktade grafer. Viktade grafer. TDDC91,TDDE22,725G97: DALG. Innehåll. Innehåll Riktade grafer A 10.3

Relevanta dokument
Föreläsning 11. Riktade grafer. Viktade grafer. TDDC70/91: DALG. Innehåll. Innehåll. 1 Riktade grafer A 11.3

Datastrukturer. föreläsning 8. Lecture 6 1

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 5: Grafer Del 1

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT037)

Datastrukturer. föreläsning 8. Maps 1

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

Datastrukturer. föreläsning 9. Maps 1

Föreläsning Datastrukturer (DAT037)

Magnus Nielsen, IDA, Linköpings universitet

Några svar till TDDC70/91 Datastrukturer och algoritmer

Föreläsning Datastrukturer (DAT036)

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 2. Kortaste vägar i grafer.

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

Föreläsning 2: Grafer. Exempel på graf

729G04 - Diskret matematik. Lektion 4

Föreläsning 2. Kortaste vägar i grafer.

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Kaliningrad) låg vid bägge sidor av floden Pregel samt på

DAI2 (TIDAL) + I2 (TKIEK)

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

Algoritmer och datastrukturer, föreläsning 11

Föreläsning 6 Datastrukturer (DAT037)

729G04 - Diskret matematik. Lektion 4

Föreläsningsanteckningar F6

Föreläsning 10. Grafer, Dijkstra och Prim

Grafer, allmänt. Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges).

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Föreläsning 5: Dynamisk programmering

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Trafiksimulering: Grafalgoritmer

Datastrukturer. föreläsning 9. Maps 1

Algoritmer, datastrukturer och komplexitet

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Lösningar Datastrukturer TDA

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary Definitioner Implementation... 2

Datastrukturer. föreläsning 7. Maps 1

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.

Avancerad Problemlösning och Programmering i Praktiken

TNK049 Optimeringslära

MA2047 Algebra och diskret matematik

Graphs (chapter 14) 1

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 9: NP-fullständighet

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Datastrukturer. föreläsning 7. Maps 1

Tentamen Datastrukturer D DAT 035/INN960

Algoritmer, datastrukturer och komplexitet

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

FÖRELÄSNING 11 DATALOGI I

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Algoritmer, datastrukturer och komplexitet

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Algoritmer, datastrukturer och komplexitet

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Optimering Kruskal s algoritm Prim-Jarník s algoritm

Tentamen Datastrukturer för D2 DAT 035

Tentamen Datastrukturer (DAT037)

Algoritmer, datastrukturer och komplexitet

Föreläsning 11. Giriga algoritmer

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Matematik för språkteknologer (5LN445) Institutionen för lingvistik och filologi VT 2014 Författare: Marco Kuhlmann 2013

Föreläsning 12+13: Approximationsalgoritmer

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Grundläggande logik och modellteori

Magnus Nielsen, IDA, Linköpings universitet

TNSL05 Optimering, Modellering och Planering. Föreläsning 5

Lösningsförslag för tentamen i Datastrukturer (DAT036) från

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer (DAT036)

Föreläsning 1. Introduktion. Vad är en algoritm?

Föreläsning 6. Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf

Kapitel 9: Grafalgoritmer

Tentamen Datastrukturer D DAT 036/INN960

CS - Computer science. Datateknik Informationsbehandling Datalogi Datavetenskap (ÅA 2008)

Föreläsning 4 Datastrukturer (DAT037)

Ekvivalensrelationer

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

Efternamn förnamn pnr årskurs

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Transkript:

öreläsning 1 Riktade grafer. Viktade grafer. T1,T,G: LG Utskriftsversion av föreläsning i atastrukturer och algoritmer oktober 1 Magnus Nielsen, I, Linköpings universitet 1.1 Innehåll Innehåll 1. 1 Riktade grafer Introduktion I en riktad graf är alla bågar riktade 1.3 genskaper n graf G = (V,) sådan att varje båge går i en riktning: åge (a,b) går från a till b men inte från b till a. Om G är enkel (inga parallella bågar och inga öglor) gäller m n (n 1), d.v.s. m O(n ). 1. Implikationsgraf 1

1. Kombinatorisk krets 1. Tillämpningar riktad graf nod riktad båge transport gatukorsning enkelriktad gata www hemsida hyperlänk näringskedja art rovdjur-byte-förhållande schemaläggning uppgift föregångarvillkor finansiell bank transaktion mobiltelefon person ringt samtal smittsam sjukdom person infektion citeringar artikel citering objektgraf objekt pekare arvshierarki klass ärver från kontrollflöde kodblock hopp Några algoritmiska grafproblem Stig. inns det en riktad stig från s till t? Kortaste väg. Vilken är den kortaste riktade stigen från s till t? Stark konnektivitet. inns det en riktad stig mellan alla par av noder? Topologisk sorting. Går det att rita den riktade grafen så att alla kanter pekar uppåt? Transitivt hölje. ör vilka noder v och w finns det en stig från v till w? Page Rank. Hur betydelsefull är en webbsida? 1. 1.

Riktad S Vi kan specialisera traverseringsalgoritmerna (S och S) till riktade grafer I den riktade S-algoritmen får vi fyra typer av bågar discovery -bågar bakåt-bågar framåt-bågar korsande bågar n riktad S med start i nod s bestämmer vilka noder som är nåbara från s 1. Konnektivitet Nåbarhet S-träd rotat i v: noder nåbara från v via riktade stigar 1.1 Starkt sammanhängande Varje nod är nåbar från alla andra noder a c g d e f b 1.11 3

lgoritm för att avgöra starkt sammanhängande Välj en nod v i G // Kan alla noder nås från v?utför S från v i G Om det finns w som inte besöks svara nej Låt G vara G med riktningen på varje båge omkastad // Kan v nås från alla noder?utför S från v i G Om det finns w som inte besöks svara nej nnars, svara ja Körtid: O(n + m) G: a c g d e f b G : a c g d e f b 1.1 Starkt sammanhängande komponenter Maximal delgraf sådan att varje nod kan nå alla andra noder i delgrafen Kan också göras i O(n + m) tid genom att använda S i flera steg a c g { a, c, g } f d e b { f, d, e, b } 1.13 3 Transitivt hölje Transitivt hölje Givet en riktad graf G, låt det transitiva höljet av G vara den riktade grafen G sådan att G har samma noder som G om G har en riktad stig från u till v (u v) så har G en riktad båge från u till v et transitiva höljet ger information om nåbarheten i en riktad graf

G G* 1.1 eräkning av transitiva höljet Vi kan köra S med start i varje nod v 1,...,v n, alltså O(n (n + m)) 1.1 Topologisk sortering Riktade acykliska grafer och topologisk ordning n riktad acyklisk graf (G) är en riktad graf som inte har några riktade cykler n topologisk ordning av en graf är en totalordning v 1,...,v n av noderna sådan att varje båge (v i,v j ) uppfyller i < j xempel: I en riktad graf som svarar mot en instans av uppgiftsschemaläggning är en topologisk ordning en sekvens av uppgifter som uppfyller kraven på inbördes ordning mellan uppgifterna Proposition 1. n riktad graf går att ordna topologiskt omm grafen är en G G G v v 1 v v v3 Topologisk ordning av G 1.1 Topologisk sortering Numrera noderna, så att (u,v) u < v

1 vakna 3 äta plugga LG spela baka kakor till läraren sova mer LG skriva datorprogram 1 sova n typisk studentdag träna 11 drömma om grafer 1.1 lgoritm för topologisk sortering procedure TOPOLOGILSORT(G) S ny tom stack for all u G.VRTIS() do låt INOUNTR(u) vara ingraden för u if INOUNTR(u) = then S.PUSH(u) i 1 while S.ISMPTY() do u S.POP() låt u få nummer i i den topologiska ordningen i i + 1 for all utgående kanter (u,w) från u do INOUNTR(w) INOUNTR(w) 1 if INOUNTR(w) = then S.PUSH(w) Körtid: O(n + m). 1.1 lternativ algoritm för topologisk sortering procedure TOPOLOGILSORT(G) H G n G.NUMVRTIS while H är icke-tom do låt v vara en nod utan utgående bågar märk v med n n n 1 ta bort v från H temporär kopia av G Körtid: O(n + m). Hur då...? 1.1 xempel: Topologisk sortering

1. xempel: Topologisk sortering 1.1 xempel: Topologisk sortering

1. xempel: Topologisk sortering 1.3 xempel: Topologisk sortering

1. xempel: Topologisk sortering 1. xempel: Topologisk sortering

1. xempel: Topologisk sortering 3 1. xempel: Topologisk sortering 1

3 1. xempel: Topologisk sortering 1 3 1. Viktade grafer Viktade grafer I en viktad graf är varje båge associerad med ett numeriskt värde kallat bågens vikt. ågvikter kan representera avstånd, kostnader, etc. 1.3 Google maps 11

1.31 olaget ontinentals flygrutter i US (augusti 1) 1.3 Tillämpningar PRT/PM Kartapplikationer Seam carving Robotnavigering Texture mapping Typsättning i TeX Trafikplanering i stadsmiljö Optimal pipelining för VLSI-chip Schemaläggning av telemarketingförsäljare Routing av meddelanden inom telekom. Routingprotokoll för nätverk (OSP, GP, RIP) Utnyttja gynsamma situationer vid valutahandel Optimal ruttplanering för lastbilar givet trafikstockningsmönster 1

ng. endpoints, incident, adjacent, degree, parallel, loops 1.33 Kortaste vägar Problemet kortaste väg Givet en viktad graf och två noder u och v vill vi hitta en stig mellan u och v med minimal total vikt. Längden av en stig är summan av vikterna på stigens bågar xempel Kortaste vägen mellan Providence och Honolulu PV OR SO LG HNL LX W MI 1.3 genskaper hos kortaste vägar n delväg av en kortaste väg är också en kortaste väg et finns ett träd av kortaste vägar från en startnod till alla andra noder xempel tt träd av kortaste vägar från Providence PV OR SO LG HNL LX W MI 1.3 13

ijkstras algoritm vståndet från en nod v till en nod s är längden av kortaste vägen mellan s och v ijkstras algoritm beräknar avstånden från en given startnod s till alla noder v i grafen ntaganden: grafen är sammanhängande bågarna är oriktade grafen har inga öglor eller parallella bågar bågvikterna är ickenegativa Vi bygger ett moln av noder med start i s, som till slut täcker alla noder Vi märker varje nod v med d(v), vilket betecknar avståndet mellan v och s i delgrafen bestående av molnet och noderna som är grannar till molnet I varje steg lägger vi till den nod u utanför molnet som har minst avståndsmärkning d(u) uppdaterar vi märkningen av noderna som är grannar till u 1.3 Utökningssteget etrakta en båge e = (u,z) sådan att u är noden vi nyligen lagt till i molnet z inte är med i molnet Relaxeringen av bågen e uppdaterar d(z) enligt: d(z) min{d(z), d(u) + weight(e)} s d(u) u e d(z) z s d(u) u e d(z) z 1.3 xempel 1 3 1 3 3 1 3 3 11 1 3 3 1.3 1

ortsättning på exemplet 1 3 3 1 3 3 1.3 ijkstras algoritm n prio-kö lagrar noderna utanför molnet Nyckel: avstånd Värde: nod Lokator-baserade metoder insert(k,v) returnerar en lokator replacekey(l,k) ändrar en posts nyckelvärde Vi lagrar två saker i varje nod: avstånd (d(v)) lokator i prio-kön procedure IJKSTR(G, s) Q ny tom heapbaserad prio-kö for all v G.VRTIS() do if v = s then STISTN(v, ) else STISTN(v, ) l Q.INSRT(GTISTN(v), v) STLOTOR(v, l) while Q.ISMPTY() do u Q.RMOVMIN() for all e G.ININTGS(u) do z G.OPPOSIT(u, e) r GTISTN(u)+WIGHT(e) if r <GTISTN(z) then STISTN(z, r) Q.RPLKY(GTLOTOR(z), r) 1. nalys av ijkstras algoritm Grafoperationer Vi anropar incidentdges en gång för varje nod Märkningsoperationer Vi hämtar/sätter avstånd och lokator för nod z O(deg(z)) gånger tt sätta/hämta en märkning tar tid O(1) Prio-köoperationer 1

Varje nod sätts in en gång och tas ut en gång från prio-kön, där varje insättning och borttagning tar tid O(logn) n nods nyckel i prio-kön ändras som mest deg(w) gånger, där varje nyckeländring tar tid O(logn) ijkstras algoritm har exekveringstid O((n+m) logn) givet att grafen representeras med en grannlista Kom ihåg att v deg(v) = m xekveringstiden kan också uttryckas som O(mlogn) eftersom vi antagit att grafen är sammanhängande 1.1 Varför ijkstras algoritm fungerar ijkstras algoritm är baserad på den giriga metoden. lgoritmen lägger till noderna efter ökande avstånd. ntag att algoritmen inte hittade alla kortaste avstånd. Låt vara den första felaktiga noden som behandlas. När den föregående noden,, längs den sanna kortaste vägen behandlades var dess avstånd korrekt. Men bågen (,) relaxerades i det steget! Mao, så länge d() d() kan inte avståndet till bli fel. vs, ingen nod får fel avstånd. 1 3 3 1. Varför ijkstras algoritm inte fungerar med negativa bågvikter ijkstras algoritm är baserad på den giriga metoden. lgoritmen lägger till noderna efter ökande avstånd. Om en nod med en negativ incident båge skulle läggas till sent i molnet skulle den förstöra avståndet till noder som redan finns i molnet. 1 - s sanna avstånd är 1, men finns redan i molnet med d()=! 1.3 ellman-ords algoritm (finns inte i kursboken) ungerar även med negativa bågvikter Måste anta riktade bågar (annars kan det finnas cykler med negativ vikt) Iteration i hittar alla kortaste vägar som använder i bågar xekveringstid: O(nm) Kan utökas till att detektera cykler med negativ vikt procedure LLMNOR(G, s) for v G.VRTIS() do if v = s then STISTN(v, ) else STISTN(v, ) for i 1 to n 1 do for each e G.GS() do u G.ORIGIN(e) z G.OPPOSIT(u, e) r GTISTN(u)+WIGHT(e) if r <GTISTN(z) then STISTN(z, r) 1. 1

xempel Noderna är märkta med resp d(v)-värde - 1 - - 1 3-3 - - 1-1 3 - -1-1 - -1 3-1 1. 1