De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Didactisch materiaal bij de cursus Academiejaar 2010-2011 Tel: 09/264.33.85 Fax: 09/264.42.95.

Verwante presentaties


Presentatie over: "Didactisch materiaal bij de cursus Academiejaar 2010-2011 Tel: 09/264.33.85 Fax: 09/264.42.95."— Transcript van de presentatie:

1 Didactisch materiaal bij de cursus Academiejaar Tel: 09/ Fax: 09/ Prof. dr. ir. W. Philips Optimalisatietechnieken Telecommunicatie en Informatieverwerking UNIVERSITEIT GENT

2 © W. Philips, Universiteit Gent, versie: 28/3/ c. 2 Copyright notice This powerpoint presentation was developed as an educational aid to the renewed course “Optimisation Techniques” (Optimalisatietechnieken), taught at the University of Gent, Belgium as of This presentation may be used, modified and copied free of charge for non-commercial purposes by individuals and non-for-profit organisations and distributed free of charge by individuals and non-for-profit organisations to individuals and non-for-profit organisations, either in electronic form on a physical storage medium such as a CD-rom, provided that the following conditions are observed: 1.If you use this presentation as a whole or in part either in original or modified form, you should include the copyright notice “© W. Philips, Universiteit Gent, 1998” in a font size of at least 10 point on each slide; 2.You should include this slide (with the copyright conditions) once in each document (by which is meant either a computer file or a reproduction derived from such a file); 3. If you modify the presentation, you should clearly state so in the presentation; 4.You may not charge a fee for presenting or distributing the presentation, except to cover your costs pertaining to distribution. In other words, you or your organisation should not intend to make or make a profit from the activity for which you use or distribute the presentation; 5. You may not distribute the presentations electronically through a network (e.g., an HTTP or FTP server) without express permission by the author. In case the presentation is modified these requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the presentation, and can be reasonably considered independent and separate works in themselves, then these requirements do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the presentation, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. In particular note that condition 4 also applies to the modified work (i.e., you may not charge for it). “Using and distributing the presentation” means using it for any purpose, including but not limited to viewing it, presenting it to an audience in a lecture, distributing it to students or employees for self-teaching purposes,... Use, modification, copying and distribution for commercial purposes or by commercial organisations is not covered by this licence and is not permitted without the author’s consent. A fee may be charged for such use. Disclaimer: Note that no warrantee is offered, neither for the correctness of the contents of this presentation, nor to the safety of its use. Electronic documents such as this one are inherently unsafe because they may become infected by macro viruses. The programs used to view and modify this software are also inherently unsafe and may contain bugs that might corrupt the data or the operating system on your computer. If you use this presentation, I would appreciate being notified of this by . I would also like to be informed of any errors or omissions that you discover. Finally, if you have developed similar presentations I would be grateful if you allow me to use these in my course lectures. Prof. dr. ir. W. Philips Department of Telecommunications and Information ProcessingFax: University of GentTel: St.-Pietersnieuwstraat 41, B9000 Gent, Belgium

3 Algoritmen voor het bepalen van een optimaal pad

4 © W. Philips, Universiteit Gent, versie: 28/3/ c. 4 Probleemstelling Gegeven een netwerk (een graf met een kost geassocieerd aan elke tak); zoek het pad met de minimale kost van s naar t st Pad 1: kost=7+1=8 Pad 2: kost=3+3+3=9 De kost van een pad is de som van de kosten van de takken van dat pad (additieve kost)

5 © W. Philips, Universiteit Gent, versie: 28/3/ c. 5 Voorbeeld snelheidsbeperkingen enkelrichtingsstraten files,... Transportproblemen: gegeven een wegenkaart, zoek de snelste weg van stad A naar stad B, rekening houdend met beperkingen zoals: AB AB Dit is een kortste-pad probleem

6 © W. Philips, Universiteit Gent, versie: 28/3/ c. 6 Opmerkingen Het optimaal pad is niet altijd uniek st kost=7+1=8 kost=3+5=8 st Geen pad tussen s en t Het optimaal pad bestaat soms niet: als er geen pad tussen s en t bestaat als de graaf circuits met negatieve circuitkost bevat st circuitkost=-1 Minimale kost: -  Circuits met negatieve kost komen soms voor en zijn soms zelfs gewenst (beurstransacties, wisselkoerstransacties)

7 © W. Philips, Universiteit Gent, versie: 28/3/ c. 7 Verwante problemen 1. In vele problemen moet men tussen elk paar van punten het kortste pad zoeken 5 0 s t optimaal pad kost s t optimaal pad kost (en de kost van de eindknoop achteraf in rekening brengen) 2. Problemen waarbij aan het bezoeken van een knoop een extra kost is verbonden, kunnen worden herleid tot problemen waarbij enkel aan de takken kosten zijn verbonden  Men kan b.v. de knoopkosten optellen bij de kosten van alle uitgaande takken -2=2

8 © W. Philips, Universiteit Gent, versie: 28/3/ c. 8 Optimaal pad: basisprincipe  P 1 is het (of een) optimaal pad van s naar r str P=P 1 +P 2 P1P1 P2P2 P’ 1 Deelpaden van een optimaal pad zijn ook optimaal: zij P een optimaal pad van s naar t via een andere knoop r zij P 1 het gedeelte van P tussen s en r Bewijs: stel dat P’ 1 een beter pad zou zijn naar r dan zou P’=P’ 1 +P 2 een beter pad zijn naar t In het geval van positieve takkosten: P’=P’ 1 +P 2 Opmerking: redenering geldt niet als P 1, P 1 ’ of P 2 kost  heeft

9 © W. Philips, Universiteit Gent, versie: 28/3/ c. 9 Basisprincipe: oorzaak en gevolg strP1P1 P2P2 P’ 1 P’ 2 4 mogelijke paden:  nog 1 mogelijke kandidaat Gevolg:Men moet niet alle mogelijke paden tussen twee punten s en t vergelijken om het optimaal pad te vinden Op kruispunten kan men al subpaden elimineren Oorzaak: de kost is additief: I.p.v. 4 “lange” paden onderling te vergelijken moet men dus in het voorbeeld slechts twee keer twee “korte” paden vergelijken (d.w.z. 2 “kleine” i.p.v. 3 “grote” vergelijkingen)

10 © W. Philips, Universiteit Gent, versie: 28/3/ c. 10 Basisprincipe: opmerkingen De hoofdeigenschap geldt (als de kost additief is en als) als alle takken een positieve kost hebben a b optimaal pad van a naar b; kost -  -6 Opmerking: een niet-gerichte tak met negatieve kost leidt altijd tot een circuit met negatieve kost of als er geen circuits zijn met negatieve totale kost (omdat s P 1, P 1 ’ of P 2 dan kost -  kunnen hebben) Circuit met negatieve kost Deelpad van het circuit en niet optimaal!

11 © W. Philips, Universiteit Gent, versie: 28/3/ c. 11 De kortste-padboom De boom bedekt enkel knopen die uit s kunnen worden bereikt Andere formulering van het basisprincipe: elk kortste pad is een verlenging van een kortste pad naar een andere knoop Argumenteer waarom! er geen circuits met negatieve kost voorkomen en we voor elke knoop waarnaar het optimaal pad niet uniek is maar één goedgekozen optimaal pad behouden t s Gevolg van de hoofdeigenschap: de optimale paden vanuit een knoop s naar alle andere knopen vormen een boom als

12 © W. Philips, Universiteit Gent, versie: 28/3/ c. 12 Hint en Vraag Optimale paden vanuit s : P sa =( s, a ) P sb =( s, a, b ) P sc =( s, b, c )  unie van deze paden is de volledige graaf (en geen boom!) Toch bestaat er een kortste-pad boom, d.w.z. een boom waarin ieder pad van s naar een knoop optimaal is in de originele graaf a sb c a sb c Bijkomende vraag: Stel dat voor elke knoop k een optimaal pad vanuit s gegeven is, maar niet de takkosten  dan kan men toch nog een kortste-pad boom opstellen. Hoe? Verklaring van de methode?

13 © W. Philips, Universiteit Gent, versie: 28/3/ c. 13 Het algoritme van Dijkstra: inleiding Dit algoritme werkt enkel voor niet-negatieve takkosten Basisidee: zoek één voor één de “dichtste” buren van s Initialisatie: k=0; b 0 =s (nulde buur) ; d 0 =0 (optimale afstand) Gegeven b 0 … b k, zoek b k+1, de k+ 1-de dichtste buur van s het corresponderende optimale pad P k+1 de afstand d k+1 van b k+1 tot s Stop als b k+1 =t Notaties: b 0 … b k zijn de “dichtste” (=goedkoopst bereikbare) buren van s (en b 0 =s ) en P 0 … P k zijn de corresponderende goedkoopste paden

14 © W. Philips, Universiteit Gent, versie: 28/3/ c. 14 De knoop c zou immers dichter bij s liggen dan b k+1 waardoor b k+1 niet de k+ 1-de dichtste buur zou zijn van s Netwerken met positieve kosten Eigenschap: P k+1 is een ééntaks-uitbreiding van P 1,… of P k of is een directe opvolger van s (ééntaks-uitbreiding van P 0 ) Dichtste buren b 0 =s, b 1,… b k s … b k+1 Let op: positieve takkosten zijn essentieel: indien c(w)  0, dan zou c niet dichter bij s liggen dan b k+1 PjPj bjbj Dit kan P’ c w Dit kan niet!

15 © W. Philips, Universiteit Gent, versie: 28/3/ c Netwerken met positieve kosten Gevolg: basisprincipe van Dijkstra bij het zoeken naar b k+1 kunnen we ons beperken tot de kandidaatknopen: “nog niet gekozen” opvolgers van b 0 …b k kandidaatknopen b k+1 … t nog niet bezochte knopen … Reeds gevonden dichtste buren b 0, b 1,… b k s … bjbj

16 © W. Philips, Universiteit Gent, versie: 28/3/ c. 16 P k+1 o Dijkstra... Reeds gevonden dichtste buren s … … t nog niet bezochte knopen kandidaatknopen o o … o b k+1 mogelijke P Algoritme: beschouw alle mogelijke kandidaatknopen o en alle mogelijke paden P van de vorm P=P j +( b j,o ) Het beste van die kandidaatpaden is P k+1 (wegens basisprincipe) en het uiteinde o van P k+1 is b k+1

17 © W. Philips, Universiteit Gent, versie: 28/3/ c Dijkstra We definiëren nu voor elke knoop r een getal d k ( r ): Met deze definitie geldt: b k+1,de k+ 1-de dichtste buur van s, is gelijk aan de kandidaatknoop met de laagste d k -waarde voor r een reeds gevonden dichtste buur b j, j  k : d k ( b j ) is de lengte van het van optimale pad P j van s naar b j voor r een kandidaatknoop: d k ( r ) is de lengte van het beste onder de kandidaatpaden P=P j + ( b j,r ) van s naar r voor r een nog niet bezochte knoop: d k ( r ) =  s 0 Pad P j dk(r)dk(r) Tak ( b j,r ) kandidaatpad In het vervolg schrijven we d ( r ) i.p.v. d k ( r )

18 © W. Philips, Universiteit Gent, versie: 28/3/ c. 18 B : Reeds gevonden dichtste buren s … … … t K : Kandidaatknopen N : nog niet bezochte knopen Dijkstra: datastructuren We houden bij: globaal: 3 lijsten B, K en N van knopen a in iedere knoop r: d ( r ) en v ( r ), de voorgangerknoop van r in het beste (kandidaat-) pad (  de laatste pijl in dit pad!) d (r) v(r) r aa )       rv rd ( )(

19 © W. Philips, Universiteit Gent, versie: 28/3/ c. 19 Voorbeeld 1: k= st Pas d (. ) en v (. ) aan Zoek nieuwe kandidaatknopen Kies beste kandidaatknoop alle mogelijke pijlen uit b k v(r)

20 © W. Philips, Universiteit Gent, versie: 28/3/ c. 20 Voorbeeld 1: k= st Pas d (. ) en v (. ) aan (onderzoek hiervoor enkel nieuwe paden) Zoek nieuwe kandidaatknopen Kies beste kandidaatknoop v(r) alle mogelijke pijlen uit b k (nu geen kandidaat- knoop meer)

21 © W. Philips, Universiteit Gent, versie: 28/3/ c. 21 Voorbeeld 1: k= st Pas d (. ) en v (. ) aan (onderzoek hiervoor enkel nieuwe paden) Zoek nieuwe kandidaatknopen v(r) alle mogelijke pijlen uit b k

22 © W. Philips, Universiteit Gent, versie: 28/3/ c. 22 Voorbeeld 1: k= st Pas d (. ) en v (. ) aan (onderzoek hiervoor enkel nieuwe paden) Zoek nieuwe kandidaatknopen Kies dichtste buur v(r) alle mogelijke pijlen uit b k

23 © W. Philips, Universiteit Gent, versie: 28/3/ c. 23 Voorbeeld 1: k= st Pas d (. ) en v (. ) aan Zoek nieuwe kandidaatknopen Kies dichtste buur v(r)v(r) alle mogelijke pijlen uit b k

24 © W. Philips, Universiteit Gent, versie: 28/3/ c. 24 Voorbeeld 1: k= 4 (a) st Pas d (. ) en v (. ) aan Zoek nieuwe kandidaatknopen v(r)v(r) alle mogelijke pijlen uit b k

25 © W. Philips, Universiteit Gent, versie: 28/3/ c. 25 Voorbeeld 1: k= 4 (b) st Pas d (. ) en v (. ) aan Zoek nieuwe kandidaatknopen Kies dichtste buur v(r)v(r) alle mogelijke pijlen uit b k

26 © W. Philips, Universiteit Gent, versie: 28/3/ c. 26 Voorbeeld 1: k= st Einde Opmerking: de optimale paden vormen inderdaad een boom! We hebben meteen ook de optimale paden naar andere knopen v(r)v(r) alle mogelijke pijlen uit b k

27 © W. Philips, Universiteit Gent, versie: 28/3/ c. 27 Besluit Na het vinden van een nieuwe beste buur q moeten we q “scannen”, d.w.z.: 1. de verzameling K van kandidaatknopen uitbreiden met de directe opvolgers van q  Enkel de nieuwe kandidaatknopen opsporen is sneller dan K volledig opnieuw berekenen! 2. nakijken of er via q geen betere paden mogelijk zijn naar de kandidaatknopen r dan degene die we al hadden en desgevallend d ( r ) en v ( r ) aanpassen  Enkel de nieuwe paden (deze die via q passeren) opsporen is sneller dan alle paden onderzoeken De nieuwe kandidaatknopen en de nieuwe paden vinden we door alle takken uit q te beschouwen

28 © W. Philips, Universiteit Gent, versie: 28/3/ c. 28 Voorbeeld 2: k= s t kandidaatknopen, d (. ) en v (. ) ok Kies dichtste buur

29 © W. Philips, Universiteit Gent, versie: 28/3/ c Voorbeeld 2: k= s t kandidaatknopen, d (. ) en v (. ) ok Kies dichtste buur

30 © W. Philips, Universiteit Gent, versie: 28/3/ c Voorbeeld 2: k= 2 (a) s t

31 © W. Philips, Universiteit Gent, versie: 28/3/ c Voorbeeld 2: k= 2 (b) s t kandidaatknopen, d (. ) en v (. ) ok Kies dichtste buur

32 © W. Philips, Universiteit Gent, versie: 28/3/ c Voorbeeld 2: k= s t kandidaatknopen, d (. ) en v (. ) ok Kies dichtste buur

33 © W. Philips, Universiteit Gent, versie: 28/3/ c Voorbeeld 2: k= s t Einde! Opmerking: de optimale paden vormen weer een boom!

34 © W. Philips, Universiteit Gent, versie: 28/3/ c. 34 B : Reeds gevonden dichtste buren s … … … t K : Kandidaatknopen N : nog niet bezochte knopen Dijkstra: datastructuren (herhaling) We houden bij: globaal: 3 lijsten B, K en N van knopen v(r) in iedere knoop r: d(r) en v(r), de voorganger van r in het pad met lengte d(r) (  de laatste pijl in dit pad!) d (r) v(r) r

35 © W. Philips, Universiteit Gent, versie: 28/3/ c. 35 Dijkstra: algoritme Initialisatie: 1. Bepaal de volgende beste buur q uit K : kies de beste q uit K : verwijder q uit K en voeg q toe aan B 2.Stop als q=t (de eindknoop) 3.“Scan” de nieuwe beste buur q : zoek zijn opvolgers en voor elke opvolger r van q met r  B : a. Stop dan r in K indien r nog niet in K zit b. Bereken en als d’(r) < d(r) stel dan d(r)=d’(r) en v(r)=q d(s)= 0 en voor elke andere knoop r : 4.Stop als K leeg is; zoniet ga naar 1

36 © W. Philips, Universiteit Gent, versie: 28/3/ c. 36 Dijkstra: opmerkingen Als er geen pad naar t is dan stopt het algoritme met q  t I.p.v. te stoppen wanneer q=t kan men ook verder gaan tot K leeg is (verwijder stap 2): het algoritme berekent dan de beste paden van s naar alle bereikbare knopen (kortste-pad boom!) Het gevraagde optimaal pad vindt men met de wijzers v(r) De optimale paden van s naar de andere knopen vormen inderdaad een boom en in elke knoop die kan bereikt worden uit s komt juist één tak van deze boom aan t s r 1 =v(t)r 2 =v(r 1 ) s=v(r 2 )

37 © W. Philips, Universiteit Gent, versie: 28/3/ c. 37 Dijkstra: complexiteit Complexiteit: O(n 2 ) voor een netwerk met n knopen, waarbij er hoogstens één tak van een knoop a naar een knoop b is Uit-graad: het aantal uitgaande takken f =3 aantal te onderzoeken knopen: < n aantal opvolgers per knoop: < n  aantal te behandelen knoop-opvolgerparen: < n 2 Strengere grens: n(n -1 )/ 2 In de praktijk is de complexiteit soms veel kleiner: b.v. O(nf) als de uit-graad van alle knopen kleiner of gelijk is aan f

38 © W. Philips, Universiteit Gent, versie: 28/3/ c. 38 Bellman-Ford algoritme... Ford zoekt het beste pad van s naar alle andere knopen Werkt ook in het geval van negatieve takkosten Uitgangspunt: zoek de beste paden P i ( s,k ) die maximaal i takken hebben doe dit achtereenvolgens voor i= 1,…,n ( n = aantal knopen) Verbetering: als we in stap i toevallig een pad P ( s,k ) ontdekken met meer dan i takken dat beter is dan P i ( s,k ) dan vervangen we P i ( s,k ) door dit pad  we zoeken dan in feite paden P i ( s,k ) die minstens even goed zijn als de beste paden met maximaal i takken  dit vergemakkelijkt het algoritme! (waarom?)

39 © W. Philips, Universiteit Gent, versie: 28/3/ c. 39 … Bellman-Ford: Basisalgoritme Beschouw hiervoor alle 1-taks uitbreidingen van paden in V kweek: voeg paden naar nog niet bezochte knopen toe aan V verbeter: controleer of de 1-taks uitbreidingen niet leiden tot betere paden naar reeds bezochte knopen Hou voor elke knoop het voorlopig beste pad uit s bij Stop als V niet meer verandert Principe: “Kweek en verbeter”: neem een verzameling V van paden uit s en tracht V uit te breiden en de paden in V te verbeteren (start met V= de verzameling van de takken uit s ) Waarom? stopt het algoritme met een optimaal pad van s naar t ? Knelpunten stopt het algoritme altijd? (neen  kleine aanpassing nodig)

40 © W. Philips, Universiteit Gent, versie: 28/3/ c s t Voorbeeld (1) Stap 1: de opvolgers van de startknoop krijgen een nieuwe d(.) Stap 2: Enkel takken uit de gele knopen vormen nieuwe paden De knopen waarvan d(.) verandert in stap 2 kleuren we rood s t Alhoewel de eindknoop reeds bereikt is mogen we niet stoppen! In stap 3 kunnen enkel de takken uit de rode knopen betere paden vormen; de andere mogelijkheden hebben we al getest

41 © W. Philips, Universiteit Gent, versie: 28/3/ c s t 13 3 Voorbeeld (2) De gele knopen zijn deze die in stap 2 veranderden; ze zijn de enige die kunnen leiden tot betere paden naar hun opvolgers: omdat ze kunnen dienen als nieuwe intermediaire knopen of omdat we voor hen in de vorige stap een korter pad vonden Stap 3: Scan de gele knopen (zoek de betere paden) De rode knopen zijn diegenen die in stap 3 veranderden, maar die met groene pijlen zijn al gescand nadat ze veranderden s t

42 © W. Philips, Universiteit Gent, versie: 28/3/ c. 42 Voorbeeld (3) De gele knopen zijn deze die in stap 3 veranderden Stap 4: Stop, want er zijn geen gele knopen meer met opvolgers s t De knopen met de groene pijlen werden al gescand  het heeft geen zin dit nog eens te doen s t Iedere knoop bewaart de pijl naar zijn voorganger op optimaal pad  Men vindt het optimaal pad achterwaarts vanuit t

43 © W. Philips, Universiteit Gent, versie: 28/3/ c. 43 Belangrijke opmerking De d -waarde in knoop k is nu een bovengrens voor de kost van het beste pad P i ( s,k ) in stap i en een benedengrens voor de kost van het best pad met i takken s t eindtoestand bij i= s t eindtoestand bij i= 3 beste pad met maximaal i takken 7 gevonden pad (altijd beter)6 d -waarde

44 © W. Philips, Universiteit Gent, versie: 28/3/ c. 44 Bellman-Ford algoritme Q en Q’ : wachtrijen (fifo’s) van nog te scannen knopen i : iteratieteller Initialisatie: Q={s}, Q’={}, i=0; d ( s ) = 0 en d ( r ) =  voor r  s 1 Zolang Q niet leeg is: 1.1 Kies een q  Q en “scan” q: voor elke opvolger r van q a. bereken d’ ( r ) =d ( q ) +c ( q,r ) b. als d’ ( r )< d ( r ) (beter pad gevonden!) b1. zet d ( r ) =d’ ( r ) en v ( r ) =q b2. als r  Q en r  Q’ stop dan r in Q’ want r moet nog (eens) worden gescand omdat d ( r ) gezakt is 1.2 Verwijder q uit Q 2 Verplaats alle knopen van Q’ naar Q en incrementeer i 3 Zolang Q niet leeg en i < n (met n het totaal aantal knopen), ga naar 1

45 © W. Philips, Universiteit Gent, versie: 28/3/ c. 45 Convergentie Bewijs: Stel dat er geen circuits met negatieve kost zijn en beschouw de optimale paden van s naar alle andere knopen Deze paden vormen een boom (zie hoger) met n- 1 takken 0 knoop r met finale d ( r ) knoop r met nog niet optimale d ( r ) t s (onbekende) optimale boom ( n knopen; n-1 takken) Ford stopt met i

46 © W. Philips, Universiteit Gent, versie: 28/3/ c. 46 Bij circuits met negatieve kost Zonder bewijs: Als er wel circuits aanwezig zijn met negatieve kost dan zijn er twee mogelijkheden: als Bellman-Ford stopt met i

47 © W. Philips, Universiteit Gent, versie: 28/3/ c. 47 Bellman-Ford vs. Dijkstra negatieve takkosten vormen geen probleem: Ford stopt dan met Q niet leeg (zo kan men dus circuits detecteren) Nadelen t.o.v. Dijkstra: Ford scant niet alleen de eindknoop van het tot dusver beste pad, maar alle opvolgers  nadelig als men enkel in het pad van s naar t geïnteresseerd is sommige knopen worden zelfs meerdere malen gescand Complexiteit: Ford: O(mn) voor een graaf met n knopen en m takken Dijkstra: O(n 2 ) Meestal is m veel groter dan n Voordelen van Ford t.o.v. Dijkstra: men moet niet zoeken naar een “beste” opvolger

48 © W. Philips, Universiteit Gent, versie: 28/3/ c. 48 Opmerking: maximumkost vraagstuk Voor een maximumkostprobleem: Dijkstra werkt enkel als alle takkosten negatief zijn t t werd bereikt dus Dijkstra stopt, maar resultaat is niet optimaal 45 8 s Bellman-Ford werkt als er geen circuits zijn met totale positieve kost t 45 8 s t s 9 11 Bewijs: max x = - min ( -x )  verander alle takkosten van teken en zoek de minimum-kost paden Dijkstra Bellman-Ford

49 © W. Philips, Universiteit Gent, versie: 28/3/ c. 49 Floyd-Warshall... Dit algoritme berekent de kortste paden tussen elk paar knopen Principe: Nummer de knopen 1, 2,… in willekeurige volgorde zoek de beste paden P t ( k,l) die enkel de knopen 1 …t als intermediaire knopen mogen gebruiken doe dit voor t= 0 (geen intermediaire knopen), t= 1 …,n Eigenschap: als men een bijkomende intermediaire knoop toelaat zijn er maar twee mogelijkheden: ofwel verandert het beste pad niet: P t ( k,l ) =P t-1 ( k,l ) ofwel is het nieuwe optimale pad de aaneenschakeling van 2 bestaande optimale paden, n.l. dit van k naar t en van t naar l: P t ( k,l ) =P t-1 ( k,t ) +P t-1 ( t,l )

50 © W. Philips, Universiteit Gent, versie: 28/3/ c. 50 Opmerking: k en l kunnen zowel groter als kleiner dan t zijn knopen 1 …t- 1 Bewijs Er zijn maar twee mogelijkheden: P t ( k, l ) passeert niet via knoop t  passeert enkel via subset van 1,… t- 1  P t ( k, l ) =P t-1 ( k, l ) kl … t t-1 1 P t ( k,l ) passeert wel via knoop t  er zijn deelpaden ( k.. t ) en ( t..l ) van P t ( k, l ): P t-1 ( k,l ) mogelijke P t ( k,l ) P t-1 ( k, t ) P t-1 ( t, l ) deze gebruiken enkel 1,… t- 1 als intermediaire knopen deze zijn optimaal voor stap t als deelpaden van het optimaal pad P t ( k,l ) voor stap t  ze zijn ook optimaal voor stap t- 1: ( k..t ) =P t-1 ( k, t ) ( t..l ) =P t-1 ( t, l ) 

51 © W. Philips, Universiteit Gent, versie: 28/3/ c Voorbeeld Enkel de d -waarden worden hier getoond d(k,l) wordt hier opgeslagen in knoop k v(k,l) moet hier dus op zicht worden bepaald t=0 0  7 -3  0  t=  2 7407  0 4 t=  2 t=1 0  7 740740 t=  2 740740 t=2 0  7 -3  0 4 140140 t=  2 t=3 0  7 -3  0 4 t=4 0  11 7 t=  0 4 140140 t=0 d(k, 1 ) d(k, 2 ) d(k, 3 ) d(k, 4 ) Legende

52 © W. Philips, Universiteit Gent, versie: 28/3/ c. 52 Detectie van circuits met negatieve kost Als er circuits zijn met negatieve kost, dan zijn deelpaden van optimale paden in het algemeen niet optimaal op t= 3: d(3,3) = 0 d(3,4) = 2 d(4,3) =- 4 op t= 4: oude d(3,3) = 0 vergelijken met oude d(3,4)+d(4,3) = =- 2  het circuit is beter en heeft een negatieve kost Dergelijke circuits kunnen gevonden worden door in elke stap ook het optimaal pad van elke knoop naar zichzelf te zoeken In het begin zijn de kosten van deze paden 0 Van zodra een negatief circuit via toegelaten intermediaire knopen mogelijk wordt zal de kost van een van deze paden onder nul zakken  zo kan men negatieve circuits opsporen

53 © W. Philips, Universiteit Gent, versie: 28/3/ c. 53 Datastructuren: (op te slaan in knoop k ) d(k,l ), l= 1 …n: de voorlopig kortste afstand van k naar l v ( k,l ): voorganger van l in het huidige beste pad van k naar l Initialisatie: zoek paden zonder intermediaire knopen als er een tak ( k,l ) bestaat: d ( k,l ) =c ( k,l ) en v ( k,l ) =k ; zoniet d ( k,l ) =  als k  l en d ( k,k ) = 0 dus ook voor k=l (nodig voor circuit-detectie)...Floyd-Warshall Voor t= 1, 2,…, n ( t is de index van een knoop) Voor elk paar knopen k, l met k,l  t verbeter d ( k,l ) : 1. bereken d’(k,l ) =d ( k,t ) +d ( t,l ): lengte van kortste pad via t 2. als d’ ( k,l ) < d ( k,l ) stel dan d ( k,l ) =d’ ( k,l ) en v ( k,l ) =v ( t,l ) 3. Stop het algoritme als een d ( k,k ) < 0 werd ontmoet (want dit wijst op een circuit met negatieve kost) Complexiteit: O(n 3 ) wegens 3-voudige lus over alle knopen

54 © W. Philips, Universiteit Gent, versie: 28/3/ c. 54 Andere kortste-padproblemen Multiplicatieve kosten: de kost van een pad is het product van de takkosten b.v.: optimaliseren van een “likelihood”, intresten in beleggingsproblemen Bottleneckproblemen: de kost van een pad is het minimum van de kosten van de takken van het pad Oplossing: de algoritmen blijven bruikbaar als men de tak- en padkosten vervangt door hun logaritme: log C(P)= log ( C ( t 1 ) ) +… log ( C ( t k ) )  additieve kost let op: C ( t 1 )  1  log ( C ( t 1 ) )  0  negatieve takkosten zoek het pad met de grootste kost (kleinste bottleneck)  maximinprobleem men kan de algoritmen gemakkelijk aanpassen voor maximin- en minimaxproblemen

55 © W. Philips, Universiteit Gent, versie: 28/3/ c. 55 Optimaal pad: basisprincipe (herhaling) P 1 +P 2 het (of een) optimaal pad van s naar t  P 1 is het (of een) optimaal pad van s naar r strP1P1 P2P2 Deelpaden van een optimaal pad zijn ook optimaal: als alle takken een positieve kost hebben of als er geen circuits zijn met negatieve (totale) kost Dit geldt enkel als de kost van een pad de som is van de takkosten

56 © W. Philips, Universiteit Gent, versie: 28/3/ c. 56 Opmerking Opmerking: in volgende slides: kost pad =min (kosten takken) kost moet gemaximaliseerd worden Dit zijn dus maxi-minproblemen

57 © W. Philips, Universiteit Gent, versie: 28/3/ c s t r Bottleneck: opmerkingen Het basisprincipe gaat eigenlijk niet meer op: deelpaden van een optimaal pad zijn niet langer optimaal Een optimaal pad s  t (bottleneck 1) Optimaal pad s  r (bottleneck 7) Optimaal pad s  t (bottleneck 1) maar er bestaat wel altijd een optimaal pad waarvan alle deelpaden optimaal zijn  we zoeken dat optimaal pad Met deze keuze blijft ook het principe van Dijkstra gelden: P k+1 is nog steeds een ééntaks-uitbreiding van P 1,… of P k Besluit: Dijkstra, Ford, Floyd blijven gelden mits enkele kleine aanpassingen Dijkstra werkt hier zelfs met negatieve kosten zowel bij minimax als maximin! Deelpad s  r (bottleneck 4)

58 © W. Philips, Universiteit Gent, versie: 28/3/ c. 58 Vraag Controleer zelf waarom Dijkstra bij het bottleneckprobleem ook geldt als er negatieve takkosten aanwezig zijn hint: vervang de (of een) volgende beste buur is een directe opvolger van een reeds gevonden beste buur door ofwel is de volgende beste buur een directe opvolger van een reeds gevonden beste buur ofwel zijn er meerde even goede volgende “beste- buren”, maar dan is één daarvan een directe opvolger van een reeds gevonden beste buur  Dijkstra vind inderdaad de (of een) volgende beste buur

59 © W. Philips, Universiteit Gent, versie: 28/3/ c. 59 Voorbeeld: bottleneck-Dijkstra  s t k=0,  s t k=  s t k=3,  s t k=5,6 We mogen stoppen als we t bereiken (zoniet vinden we de kortste-pad boom)

60 © W. Philips, Universiteit Gent, versie: 28/3/ c. 60 Opmerking De slides die in de les niet aan bod kwamen zijn bedoeld voor zelfstudie, tenzij expliciet aangegeven wordt dat ze niet moeten gekend zijn

61 © W. Philips, Universiteit Gent, versie: 28/3/ c. 61 Literatuur Evans, hfdstk. 4: blzn Rardin, hfdstk. 9: blzn


Download ppt "Didactisch materiaal bij de cursus Academiejaar 2010-2011 Tel: 09/264.33.85 Fax: 09/264.42.95."

Verwante presentaties


Ads door Google