TNK49 Optimeringslära Clas Rydergren, ITN Föreläsning 7 Nätverksoptimering Billigaste uppspännande träd (MST) Billigaste väg (SP) Projektnätverk Minkostnadsflödesproblem
Agenda Terminologi för grafer/nätverk (kap 8.2) Billigaste uppspännande träd (kap 8.) Billigaste väg (kap 8.4) Projektnätverk (8.5) Minkostnadsflödesproblem (kap 8.6) 2
Graf: Relation mellan Noder (vertices, nodes) Graf/Nätverk Nodmängd N = n, n 2, n, n 4. Bågar (edges, arcs) Bågmängd B = b, b 2, b, b 4, b 5. Båglista b = n, n 2, b 2 = n, n, b = n 2, n, alternativt: b =,2, b 2 =,, b = 2,, n b b b 2 n 2 n b 4 b 5 n 4 Start- och slutnod Nodnummer för start- och slutnod Nätverk: Graf med data för noder/bågar Kapacitet, kostnad, flödesstyrkor etc. Snitt (cut) Mängd bågar som delar N i två delar
Oriktad graf (Undirected graph) Oriktad/Riktad graf Riktad graf (Directed graph) Oriktade bågar (edges) Valens (valence) Antal bågar som ansluter till noden Kedja/Väg (chain/path) Sekvens av oriktade bågar Cykel (cycle) Kedja med samma start/slutnod Sammanhängande graf (connected graph) En kedja mellan varje par av noder Träd (tree) Sammanhängde graf utan cykler Uppspännande träd (spanning tree) Träd som omfattar alla noder i grafen Riktade bågar (arcs) Väg/Rutt (path/route) Sekvens av bågar i framåtriktningen Kedja (chain) Sekvens av bågar utan riktningshänsyn Riktad cykel (directed cycle) Väg med samma start/slutnod Acyklisk graf (acyclic graph) Innehåller ingen riktad cykel Starkt sammanhängande graf (strongly connected graph) En rutt mellan varje par av noder 4
Definieras som: Tudelad (bipartit) graf Noderna kan delas upp i två mängder så att alla bågar går mellan den ena och den andra nodmängden. dvs Det finns ett snitt som alla bågar passerar. Matchningsproblem 5
Algebraisk grafrepresentation Nodmatris om båge går från nod i till nod j annars Anslutningsmatris Noder som rader; Bågar som kolumner om båge j börjar i nod i om båge j slutar i nod i annars a ij a ij N A n n n 2 n 4 b b b 5 b 4 b 2 Glesa matriser! Använd smart representation. 6
Billigaste uppspännande träd Minimum Spanning Tree (MST) Välj ut en delmängd av bågarna i grafen så att de tillsammans bildar ett uppspännande träd, där summan av bågkostnaderna är minimal. Egenskaper hos ett uppspännande träd n noder ger n bågar Minst två noder med valens = Adderas en båge (till ett träd) bildas en unik cykel Varje par av noder (i ett träd) kopplade via en (unik) kedja 6 4 5 8 c k 7
Metoder för billigaste uppspännande träd Kruskals algoritm för glesa grafer (956) Formell beskrivning, boken sid 88.. Betrakta alla bågar som ej avsökta.. Avsök billigaste kvarvarande båge. Om den bildar en cykel, gå till Annars, lägg till den till trädet 2. Om n- bågar i trädet klar Annars gå till Prims algoritm för täta grafer (957) Formell beskrivning, boken sid 88. 8 TNK49 Optimeringslära
Billigaste uppspännande träd (Kruskal) 2 5 Lägst index först! Cykel bildas! 2 T = {(,4); (,); (,2); (4,6); (4,5); (5,7)} 4 7 4 6 8 9 5 8 6 Lägst index först, men cykel bildas! Avbryt! Trädet innehåller 7 bågar! 6 7 9
Billigaste uppspännande träd (Prim) Startnod. Lägst index först! 2 5 2 T = {(,4); (,); (,2); (4,6); (4,5); (5,7)} 4 7 4 6 8 9 5 8 6 Här blev det samma träd som med Kruskals algoritm. Ibland får man dock olika träd, men alltid samma minimala pris. Vilket? Avbryt! Trädet innehåller 7 bågar! 6 7
Billigaste väg/shortest Path (SP) Givet ett riktat nätverk med kostnader (avstånd, restider) för varje båge, finn billigaste (kortaste, snabbaste) väg mellan givna startnod(er) och slutnod(er). En startnod till en slutnod Individuell vägplanering Alternativ En startnod till alla slutnoder o Utryckningsvägar från brandstationen. Alla noder till alla andra o Trafikplanering
Billigaste väg kan formuleras som ett LP-problem Hitta billigaste väg från till 5 Varje båge som används orsakar kostnad Antag inga cykler med negativ kostnad, c ij <. Problemet kan formuleras som ett minkostnadsflödesproblem Flöde av en enhet skickas från till 5 Multiplicera flödet på varje båge, med bågkostnaden Kan formuleras som ett LP Problemet kan lösas med simplexmetoden! Effektivare metoder finns! 2 4 min x då x 4 5 2 x x24 x2 4x5 x x ij ij 2 x 2 x x, heltal x x 24 24 x x 2 2 x ij flödet på båge ( i, j) Här ekvivalent med: x ij x x om( i, j)används annars 5 5 x x x 4 4 4 x x x,( i, j) B, där B är bågmängden Ej nödvändigt (se nästa Fö) 45 45 45 2
Bellmans ekvationer Acykliska nätverk kan ritas på en linje så att inga bågar går bakåt 8 8 s 2 2 5 4 4 5 t s 2 2 6 5 4 4 4 5 t 6 4 I acykliska nätverk kan billigaste väg bestämmas med Bellmans ekvationer: Bestäm successivt nodpriset y j, som är kostnaden från stardnod till nod j som y j min i ( i, j) { y c : B i ij } y 5 y Exempel: y 5 c 57 c 7 7 y 7 min{ y c7, y5 57} 7 c
4 Edsger W. Dijkstra 9 22 Eindhoven University, Nederländerna
Dijkstras algoritm (959) För nätverk med cykler krävs iterativa metoder. T ex Dijkstras algoritm. Formell beskrivning, boken sid 92.. Dela upp nodmängden N i avsökta A, och ej avsökta D. Sätt initialt A = och D = N. Märk alla noder med (föregångare, nodpris): För startnoden s gäller p s, y s =, ; för övriga noder p i, y i =,.. Hitta den ej avsökta nod i D, som har lägst nodpris. 2. Avsök nod i, dvs undersök alla utgående bågar från noden. Om y i + c ij < y j så har billigare väg till nod j hittats. Märk om nod j med p j, y j = i, y i + c ij. (* Om j A, flytta över j till D.). Flytta över nod i från D till A. 4. Avbryt om alla noder avsökta (A = N). Annars gå till * Kan bara inräffa om nätverket har negativa bågkostnader. Algoritmen kallas då Fords algoritm (956) 5
Projektnätverk/Aktivitetsnät Bågarna svarar mot aktiviteter. Noderna svarar mot händelser (då aktiviteter kan lösas av). Aktiviteter längs en kritisk linje. Kan ses som dyraste väg. Acyklisk Bellmans ekvationer duger. Vissa aktiviteter kan utföras parallellt. En del aktiviteter kan göras nästan när som helst. Exempel: Bygga hus. Genomföra stora ingenjörsprojekt. 6
Minkostnadsflödesproblem Vi vill skicka ett flöde till minsta kostnad. Noder Bågar Lösning Har en styrka (positiv om källa, negativ om sänka, noll annars). Styrkan anger volymen som ska skeppas ut/tas emot. Ibland okänd styrka, modelleras med superkälla/supersänka. Vi måste behålla nodbalans. Anger möjliga flöden i tid, rum och/eller tillstånd. Kan ha kostnader (eller intäkter). Kan ha kapaciteter. Kapaciteter nedåt kan användas för att modellera kontrakterade flöden. Nätverkssimplex, speciell variant av simplexmetoden (nästa föreläsning). 7
Exempel minkostnadsflödesproblem (Miniprojekt 2 handlar om modellering av det här slaget.) Ett företag har Två fabriker med produktionskapacitet på 5 enheter vardera. 2 kunder med efterfrågan respektive 75 enheter. Varorna kan levereras direkt eller via ett centrallager (dock ej direkt fabrik till kund 2 eller fabrik 2 till kund ). Fabrik 2s varor kan skickas via fabrik. Kund 2s varor kan skickas via kund. Mål Uppfyll efterfrågan och minimera företagets transportkostnad. Konstruera nätverket! 8
Inför Lektion 7 Uppgift 8.2: Billigaste uppspännande träd. Försök lösa med både Kruskals och Prims algoritm. Titta på exemplen ovan. Obs, det måste noga framgå vad som gjorts och i vilken ordning! Uppgift 8.4: Billigaste väg. 9
www.liu.se