Vägar: Bllgaste väg Bllgaste väg s t Indata: Rktad graf med bågkostnader c, start/slutnod s, t. Bllgaste väg-problemet: Fnn en väg från s tll t med mnmal kostnad. Kostnaden för en väg är summan av kostnaderna för de bågar som ngår vägen. Skcka en (odelbar) enhet från s tll t på bllgaste sätt. Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Bllgaste väg: Matematsk modell Varabeldefnton: x j = om båge (, j) ngår vägen. mn c j x j (,j) B j:(j,) B x j j:(,j) B x j = x j {0, } för alla (, j) B Nodjämvktsvllkor: (n - ut) = s = t för alla N Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Exempel 8 x x = () x +x x x = 0 () x x x x = 0 () x +x x = 0 () x +x +x = () 0 0 0 0 0 0 0 0 0 0 Anslutnngsmatrs: A = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8
Bllgaste väg: Matematsk modell vektor/matrsform Med x som bågvektor: = s b = = t A kallas anslutnngsmatrs. mn c T x Ax = b x {0, } m om båge k startar nod a k = om båge k slutar nod 0 för övrgt En kolumn A har ett element lka med -, ett lka med och resten nollor. Detta gäller även b. Summerng av Ax = b ger 0 = 0. Ax = b nnehåller ett redundant bvllkor (raderna är lnjärt beroende). Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Bllgaste väg Bllgaste väg: Matematsk modell vektor/matrsform Defnton En matrs A är fullständgt unmodulär om varje underdetermnant har värdet 0, eller -. Varje anslutnngsmatrs, A, är fullständgt unmodulär. Om A är en fullständgt unmodulär matrs och b är en heltalsvektor, så är alla extrempunkter tll mängden X = {x : Ax = b, x 0} heltalga. Ett LP-problem vars bvllkorsmatrs är en anslutnngsmatrs och vars högerled är heltalgt, har heltalg optmallösnng. Slutsats Bllgaste väg-problem kan betraktas som LP-problem. Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Lösnngsmetoder för bllgaste vägproblemet LP-formulerng: mn c j x j (,j) B j:(j,) B x j j:(,j) B x j 0 för alla (, j) B = s x j = = t för alla N y : dualvarabel, nodprs, för nod. LP-dualen: max y t y s y j y c j för alla (, j) Ett redundant bvllkor prmalen ger en frhetsgrad dualen. Sätt y s = 0. Slutsats Om LP-formulerngen av bllgaste väg-problemet har ändlgt optmum, så är alla x j lka med eller 0 optmallösnngen. LP-dualtet ger: Om y är en optmal duallösnng (med y s = 0), så är y k är lägsta kostnaden för att komma tll nod k från s. Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Kaj Holmberg (LU) TAOP88 Optmerng september 0 8 / 8
Nodmärknngsmetoder LP-dual: max y t y j y c j för alla (, j) (samt y s = 0) Bvllkoren: y j c j + y. Målfunktonen: max y t öka alla nodprser så mycket som möjlgt. Slutsats: Sätt y j = mn (c j + y ). Prmal tolknng: V vll fnna bllgaste sättet att komma tll nod j. Märk nod j med (y j, p j ), där p j är det som gav mn (föregångaren). Praktsk fråga: I vlken ordnng skall v undersöka noderna? Tre olka fall:. Inga cykler.. Inga negatva kostnader.. Negatva kostnader och cykler. Kaj Holmberg (LU) TAOP88 Optmerng september 0 9 / 8 Bllgaste väg: Djkstras metod Nodmärknngsmetoder Mål: y s = 0, y j = mn (c j + y ) för alla j. Acyklsk graf: Sortera noderna så att < j för alla bågar (, j) B. Märk noderna den ordnngen: y j = mn <j (c j + y ) för j =,..., n. (Bellmans ekvatoner. Används för dynamsk programmerng.) Frånvaron av cykler gör att nga nodmärknngar behöver göras om. Ickenegatva kostnader: Djkstras metod Ordnngen är ej känd. Märk (permanent) först den nod som ger lägst nodprs. Frånvaron av negatva kostnader gör att nga nodprser kan sänkas, dvs att nga permanenta nodmärknngar behöver ändras. (Försök nte ens.) Kaj Holmberg (LU) TAOP88 Optmerng september 0 0 / 8 Djkstras metod för bllgaste väg: Exempel A: permanent märkta noder. 0. Sätt y s = 0 och y j = M för alla j s, samt A = {s}.. Fnn nod (k) med lägsta temporära nodprs: y k = mn j A y j. Lägg tll k tll A, dvs. gör märknngen permanent.. Om slutnoden (eller alla noder) permanent märkt: Stopp.. Uppdatera de temporära nodprser som blr lägre va y k, dvs. om c kj + y k < y j för j A.. Gå tll. (,) (,) (,) (,) Vktgt för effektvteten: Ttta nte på permanent märkta noder, j A, steg och. Komplextet O( N ). Bllgaste vägen nystas upp bakfrån med föregångare p j (börja med j = t). Obs: Först görs nodmärknngen helt färdgt. Sedan httar man vägen. Nysta upp vägen baklänges. Bllgaste väg: - - - -. Kostnad:. Nodprserna ger optmal duallösnng. Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8
Bllgaste väg Bllgaste väg: Fords metod Negatva kostnader och cykler: Fords metod Fnns ngen ordnng så att nodmärknngar nte behöver göras om. Sklj ej på permanent och temporär märknng. Avsöknng av nod: Kolla utgående bågar. Uppdatera alla nodprser som blr lägre. Om nget nodprs kan sänkas är noden avsökt. Om en avsökt nod får lägre nodprs, blr den oavsökt. Stoppkrterum: Alla noder avsökta. (Sämre än Djkstra.) Cykel med negatv kostnad ger obegränsad lösnng. Nodprserna cykeln kommer att uppdateras ett oändlgt antal gånger. Man kan sluta efter N gånger. 0. Sätt y s = 0 och y j = M för alla andra noder.. Fnn oavsökt nod (k) med lägsta nodprs (mn j y j ).. Uppdatera de nodprser som blr lägre va y k. Om en avsökt nod får lägre nodprs, blr den oavsökt.. Markera nod k som avsökt.. Om all noder är avsökta: Stopp.. Gå tll. Bllgaste vägen nystas upp bakfrån mha p j. Alla nodprser kan ändras. I steg och beaktas alla noder: Komplextet O( N ). Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Fords metod för bllgaste väg: Exempel (,) (,) (,) (,) (8,) (,) Alla noder avsökta. Fnn väg baklänges. Bllgaste väg: - - - -. Kostnad:. Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Fords metod för bllgaste väg: Exempel (,) (,) (,) (,) (8,) (,) (,) (,) (,) (,) V kommer att fortsätta sänka nodprserna för nod,,. Negatv cykel: - - -. Oändlgt bra prmal lösnng. Ingen tllåten duallösnng. Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8
Bllgaste väg Optmala nodmärknngar: (,s) (0,) (,) (,) s t (,s) (9,) (,) Alla noder har en märknng. Kan nysta upp från vlken nod som helst. s (,s) (,s) (0,) (,) (,) t (9,) (,) V får bllgaste väg från s tll alla andra noder. Bllgaste väg: Generalserngar Kan lösas med samma metoder. Bllgaste väg Dyraste väg Mn produkt Max produkt Mn max Max mn mn c j y j = mn(c j + y ) y s = 0 j max c j y j = max(c j + y ) y s = 0 j mn c j y j = mn(c j y ) y s = j max c j y j = max(c j y ) y s = j mn max c j y j = mn(max(c j, y )) j y s = 0 max mn c j y j = max(mn(c j, y )) j y s = M I de fyra ssta fallen förutsätts c j 0 för alla (, j). Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Bllgaste väg: Alla tll alla Kaj Holmberg (LU) TAOP88 Optmerng september 0 8 / 8 Vägar: Maxflödesproblemet Floyd-Warshalls metod för att fnna bllgaste väg mellan alla nodpar: Sätt d j = c j för alla, j. För k =,..., N, för =,..., N, för j =,..., N sätt d j = mn(d j, d k + d kj ). Komplextet O( N ). Kan användas för att göra om ett TSPr tll ett TSP(r). Indata: Rktad graf G = (N, B) med bågkapacteter u, start/slutnod s, t. Skcka så mycket som möjlgt från s tll t. Varabeldefnton: x j = flöde båge (, j). max f j:(j,) B x j j:(,j) B 0 x j u j för alla (, j) B f fr f = s x j = f = t för alla N Kaj Holmberg (LU) TAOP88 Optmerng september 0 9 / 8 Kaj Holmberg (LU) TAOP88 Optmerng september 0 0 / 8
Lösnngsmetod för maxflödesproblemet Maxflödesproblemet Påfyllnadsmetoden (Edmonds-Karp) 0. Börja från noll.. Fnn maxmal flödesökande väg från s tll t. Avbryt om ngen väg fnns.. Skcka så mycket som möjlgt den vägen.. Ändra tllåtna rktnngar.. Gå tll. x j = 0: Framåt (öka). Tllåtna rktnngar: 0 < x j < u j : Framåt och bakåt. x j = u j : Bakåt (mnska). Varje tllåtet flöde ger en undre gräns på f. Kapacteten hos varje (s, t)-sntt ger en övre gräns på f. Kapacteten hos ett mnsntt är lka med den maxmala flödesstyrkan, f. Flödesstyrkan är maxmal (och lka med kapacteten hos ett mnsntt) om och endast om en flödesökande väg saknas. En flödesökande väg fnnes metodskt med Djkstras metod (max av mn). Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Maxflöde: Exempel Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Vägar: Dynamsk programmerng Bllgaste väg-problem acyklsk nvåndelad graf. Td! (,) (,) (M, ) (,) (,) (,) (,) (,) Maxflöde uppnått. Mnsnttet går mellan märkta och omärkta noder. Maxflöde:. 8 9 0 Nodmärknngsmetod (Bellmans ekvatoner): Ta en nvå, S k, taget: y = 0. För k =,..., N: För varje j S k : Sätt y j = mn S k (c j + y ). Ordnngen nom en nvå ovktg. Vägen kommer att passera en av noderna varje nvå. Vet ej vlken. Möjlga målfunktoner: mn, max, mn, max, mn max, max mn. Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8
Dynamsk programmerng: Lagerhållnngsproblem Dynamsk programmerng: Kappsäcksproblem Nod j man ska tll S k kallas tllstånd, s k. Noden man kommer från kallas styrnng, x k. Kan lösa allt som är ett väg-problem en acyklsk nvåndelad graf. mn j c j x j j a j x j b, 0 x j u j och heltal, för alla j Exempel: Lagerhållnngsproblem Tllstånd: s k = antal enheter lager efter perod k. Styrnng: x k = antal enheter som köps/produceras/säljs perod k. s k = Varje varabel ses som en nvå. Varje nvå nnebär ett ökat utnyttjande av den gemensamma resursen b. Tllstånd: s k = den del av högerledet b som får användas tll de k första varablerna. s k = Kopplng mellan nvåerna: s k = s k a k x k s k = 0 Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Dynamsk programmerng: Kappsäcksproblem Ex: max x + x + x x + x + x, x {0, }, x {0, }, x {0,, } Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Dynamsk programmerng: Beräknngar max x + x + x x + x + x, x {0, }, x {0, }, x {0,, } Kan göra beräknngarna en tabell p.g.a. strukturen hos nätverket. b = b = x s 0 0 0 0 0 0 0 - - f (s ) 0 0 ˆx (s ) 0 0 x s 0 0 0 0 - - - f (s ) 0 0 ˆx (s ) 0 0 0 0 0 8 b = b = b = 0 x s 0 0 0 0 - - - - - - 8 f (s ) 0 0 ˆx (s ) 0 0 0 0 Uppnystnng: s =, x =, s =, x = 0, s =, x =, z =. Kaj Holmberg (LU) TAOP88 Optmerng september 0 / 8 Kaj Holmberg (LU) TAOP88 Optmerng september 0 8 / 8