1 / 35

LOG530 Distribusjonsplanlegging

The Postmans Problem. LOG530 Distribusjonsplanlegging. 2. 1. 2. 3. 4. 5. 8. 4. 3. 4. 3. 8. 7. 5. 3. 4. 7. 6. 5. 12. 3. 6. 12. 8. 2. 9. The Postmans Problem. problem.

colum
Download Presentation

LOG530 Distribusjonsplanlegging

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ThePostmans Problem LOG530 Distribusjonsplanlegging

  2. 2 1 2 3 4 5 8 4 3 4 3 8 7 5 3 4 7 6 5 12 3 6 12 8 2 9 ThePostmans Problem problem Mista har fått i oppdrag å vedlikeholde veiene i landsdelen. Dette er et eksempel på den klassiske problemstillingen ”ThePostmans Problem” – alle veiene må gås minst en gang. Hvilken sekvens bør velges for å minimere total tilbakelagt avstand? Finn den beste rute for en lastbærer som skal betjene alle greinene i et nettverk en og bare en gang, når man starter i en vilkårlig node og skal vende tilbake til den samme noden. LOG530 Distribusjonsplanlegging

  3. 2 1 2 3 4 5 8 4 3 4 3 8 7 5 3 4 7 6 5 12 3 6 12 8 2 9 ThePostmans Problem grafer • Vi vil betrakte urettede grafer med symmetriske kostnader. Grafene er sammenhengende og vanligvis ikke komplette. Merk følgende om nodene i grafene: • Graden til en node angir antall greiner knyttet til noden. • Jamn node: hvis antall greiner er et partall. • Odde node: hvis antall greiner er et odde tall. • Euler-graf: En graf med bare jamne noder. • Vi ser at for eksempel node 1 er odde (grad = 3), mens node 6 er jamn (grad = 4). Ettersom ikke alle nodene er jamne så er dette ikke en Euler-graf. LOG530 Distribusjonsplanlegging

  4. ThePostmans Problem Euler tur En Euler tur er en sekvens av noder og greiner annenhver gang som starter med en vilkårlig node, bruker alle greiner én og bare én gang og avsluttes i samme node som den startet. Følgelig vil en Euler tur løse problemet, men: En sammenhengende graf inneholder minst en Euler tur hvis og bare hvis grafen er en Euler graf. Legg merke til at nodene kan besøkes så mange ganger vi ønsker. Kravet til antall besøk er bare knyttet til greinene. Hvis grafen ikke er en Euler graf kan ikke problemet løses. Dvs. minst en grein må da besøkes minst to ganger. I en Euler graf vil det alltid finnes én Euler tur, vanligvis finnes den mange Euler turer. Kostnadene ved alle Euler turene vil imidlertid være den samme, siden alle greinene er med i turen bare én gang. Problemet er altså ikke å finne kostnaden for en Euler tur i en Euler graf, men å finne en Euler tur. LOG530 Distribusjonsplanlegging

  5. The Postmans Problem Turer og spor • Tur – vender alltid tilbake til utgangspunktet. • Spor – ender ikke alltid opp i utgangspunktet. • La ik betegne en vilkårlig node, og gs betegne en vilkårlig grein. • Et spor S i en graf er en sekvens av noder og greiner annen hver gang som starter med en node og avsluttes i en node. • S: i0 – g0 – i1 – g1 – i2 – ...... – gk-1 – ikder alle greinene er forskjellige og hvor greinene i sporet knytter sammen nodene den er plassert i mellom. • For å finne en Euler Tur i en Euler graf, kan vi benytte Eulers Algoritme 1: LOG530 Distribusjonsplanlegging

  6. ThePostmans Problem Eulers Algoritme 1: Anta en Euler graf. Trinn 1: Velg en vilkårlig node i0 i grafen. Trinn 2: Konstruer et spor S i grafen som starter i i0 og avsluttes i i0. Trinn 3: Finn den første noden if i sporet S som er knyttet til en ubrukt grein (ikke i S) i grafen. Trinn 4: Konstruer et nytt spor T som starter i if og slutter i if og som ikke bruker greiner fra S. Trinn 5: La S = S+T ved å skyte det nye sporet T inn i den gamle S. Trinn 6: Gå til trinn 3 med det nye sporet S. En slik prosedyre vil altså hjelpe oss til alltid å finne en løsning på postmannens problem. Ulempen er at prosedyren bare virker på Euler grafer. LOG530 Distribusjonsplanlegging

  7. 2 1 3 4 5 7 6 8 The Postmans Problem Eksempel på Euler graf Lo530 Distribusjonsplanlegging

  8. 2 1 3 4 5 7 6 8 The Postmans Problem Trinn 1 & 2 i en Euler tur 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  9. 2 1 3 4 5 7 6 8 The Postmans Problem Trinn 3 & 4 i en Euler tur 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  10. 2 1 3 4 5 7 6 8 The Postmans Problem Trinn 5 & 6 i en Euler tur 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  11. 2 1 3 4 5 7 6 8 The Postmans Problem Tilbake til trinn 3 & 4 i en Euler tur 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  12. 2 1 3 4 5 7 6 8 The Postmans Problem Nye trinn 5 & 6 i en Euler tur 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  13. 2 1 3 4 5 7 6 8 The Postmans Problem Tilbake til trinn 3 & 4 i en Euler tur 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  14. 1 2 12 10 9 11 8 14 13 3 7 6 5 4 The Postmans Problem Siste trinn 5 & 6 (&3) i en Euler tur 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  15. ThePostmans Problem Euler spor Det er svært mange grafer som inneholder odde noder, og derfor ikke tilfredsstiller kravet til en Euler graf. Hvis grafen inneholder nøyaktig to odde noder kan vi imidlertid konstruere et Euler Spor. Et Euler spor i en graf starter i en node og slutter i en annen node og har med alle greinene i grafen en og bare en gang. En sammenhengende graf inneholder minst et Euler spor hvis og bare hvis grafen inneholder nøyaktig to odde noder. For å finne et Euler Spor i en graf, kan vi benytte Eulers Algoritme 2. LOG530 Distribusjonsplanlegging

  16. ThePostmans Problem Eulers Algoritme 2: Anta en graf med nøyaktig to odde noder; is og it. Trinn 1: Velg en av de odde nodene som start, for eksempel is. Trinn 2: Lag et spor S i grafen som starter med is og slutter med den andre odde noden it. Trinn 3: Finn den første noden if i sporet S som er knyttet til en ubrukt grein (ikke i S) i grafen. Trinn 4: Konstruer et nytt spor T som starter i if og slutter i if og som ikke bruker greiner fra S. Trinn 5: La S = S+T ved å skyte det nye sporet T inn i den gamle S. Trinn 6: Gå til trinn 3 med det nye sporet S. Også her vi kostnadene være den samme om det finnes et eller flere Euler spor i grafen. Men igjen er det ganske begrenset hvilke problemer vi er i stand til å løse, ettersom algoritmen krever at det finnes to og bare to odde noder i grafen. LOG530 Distribusjonsplanlegging

  17. 2 1 3 4 5 7 6 8 The Postmans Problem Eksempel på Euler spor Lo530 Distribusjonsplanlegging

  18. 2 1 3 4 5 7 6 8 The Postmans Problem Trinn 1 & 2 i et Euler spor 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  19. 2 1 3 4 5 7 6 8 Trinn 3 & 4 i et Euler spor 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  20. 2 1 3 4 5 7 6 8 The Postmans Problem Trinn 5 & 6 i et Euler spor 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  21. 2 1 3 4 5 7 6 8 Nye trinn 3 & 4 i et Euler spor 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  22. 2 1 3 4 5 7 6 8 The Postmans Problem Nye trinn 5 & 6 i et Euler spor 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  23. 2 1 3 4 5 7 6 8 The Postmans Problem Nye trinn 3 & 4 i et Euler spor 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  24. 2 1 5 4 12 7 8 3 6 9 4 5 13 11 3 10 14 15 7 1 2 6 8 16 The Postmans Problem Siste trinn 5 & 6 (&3) i et Euler spor 2 1 3 4 5 7 6 8 Lo530 Distribusjonsplanlegging

  25. ThePostmans Problem TheChinesePostman Problem (CPP) Vi har hittil løst postmannens problem ved grafer med bare jamne noder, og med akkurat to odde noder. Da er det ikke nødvendig å gå noen veier to ganger. I alle andre grafer vil postmannen være nødt til å gå en eller flere greiner minst to ganger. Dette gir opphavet til en modifisert problemstilling, kalt TheChinesePostman Problem (CPP): Hvilke greiner må gås flere ganger, og hvordan finner man en tur – hvor alle greinene besøkes minst en gang, og man skal starte og slutte i samme node; slik at kostnadene blir minst mulig? Den kinesiske matematikeren Mei-Ku formulerte problemet først i 1962. Løsningsteknikken ble utviklet av Edmonds på 70-tallet, og kalles matching. Teknikken bygger på følgende generelle egenskap: Ved alle sammenhengende grafer er det alltid et jamt antall odde noder i en graf. LOG530 Distribusjonsplanlegging

  26. ThePostmans Problem matching • Vi utvider grafen med nye greiner slik at de odde nodene parvis knyttes sammen. • Resultatet blir en Euler graf. • Matching: Hvilke eksisterende greiner bør benyttes for å pare de odde nodene? • De matchingene som samlet gir den rimeligste Euler turen er også de greinene som postmannen må gå to ganger. Anta n odde noder i en graf. Antall parvise matchinger blir da: Om vi har 6 odde noder er det altså i alt (6-1)(6-3)(6-5) = 15 ulike matchinger. LOG530 Distribusjonsplanlegging

  27. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ThePostmans Problem Eksempel matching Her har vi 8 odde noder: 2, 3, 5, 8, 9, 12, 14 og 15. Anta at kostnadene loddrett = 1 og vannrett = 2. Vi matcher da de odde nodene ved å doble enkelte greiner. De stiplede linjene (2-3), (5-9), (8-12) og (14-15) angir en mulig matching, som har en merkostnad på 2 + 1 + 1 + 2 = 6. (Husk at vi her har i alt 105 mulige matchinger!) LOG530 Distribusjonsplanlegging

  28. ThePostmans Problem Eksempel matching Her er det 4 odde noder: A, B, C og D. Alle greiner har samme kostnad = 1. • Minst kostnad: • Fra A til B = 3 • Fra A til C = 2 • Fra A til D = 6 • Fra B til C = 3 • Fra B til D = 5 • Fra C til D = 4 A B • 3 matchinger: • A-B og C-D: 3+4 = 7 • A-C og B-D: 2+5 = 7 • A-D og B-C: 6+3 = 9 C D Vi kan altså velge matching 1 eller 2, som begge har den laveste kostnaden på 7. Om vi velger matching 1, så må vi legge til nye greiner mellom nodene (A-B) og (C-D). Da ender vi opp med en Euler graf, og kan lage en Euler tur. Eller vi kan velge å bare matche nodene (A-C) slik at vi får en graf med nøyaktig to odde noder. Dermed kan vi lage et Euler spor. LOG530 Distribusjonsplanlegging

  29. 2 1 2 3 4 5 8 4 3 4 3 8 7 5 3 4 7 6 5 12 3 6 12 8 2 9 ThePostmans Problem matching Nodene 1, 2, 3, 4, 5 og 7 er odde noder. Dvs. vi må matche 3 par av noder for å få en Euler graf. Det er altså 15 mulige matchinger, og matching nr. 2 gir kortest ekstra lengde på 10. Det oppnår vi ved å matche node 1&3, node 2&4 og node 5&7. Siden summen av alle veistykkene er 91, og et veistykke på 10 må gåes 2 ganger, ender vi opp med en total lengde på 101 hvis vi skal starte og stoppe i samme node. Om vi derimot tillater å stoppe i en annen node enn der vi starter, så kan vi matche node 1&2 samt 3&5 og ende opp med et ekstra veistykke på 2+3 = 5, dvs. en totallengde på 96. Da står vi igjen med node 4 og 7 som odde noder, dvs. kandidater for start og stopp. LOG530 Distribusjonsplanlegging

  30. 1 2 4 3 5 7 6 8 9 ThePostmans Problem Resultat matching Her er grafen når vi matcher node 1&2 samt node 3&5. Vi kunne alternativt mathce node 1&2 samt 5&7 og få samme ekstra veilengde på 2+3=5, dvs. en totallengde på 91+5=96. Vi står altså igjen med node 4 og 7 som odde noder, de øvrige opprinnelige odde nodene er paret slik at de nå er jamne. Nå er vi klar for å finne et mulig Euler spor, og benytter Eulers algoritme 2. LOG530 Distribusjonsplanlegging

  31. 1 2 4 3 2 5 1 7 6 8 9 ThePostmans Problem Eulers algoritme 2 Trinn 1. Velg en av de odde nodene som start, for eksempel is. Her starter vi i node 7, den ene av de to gjenværende odde nodene. Trinn 2. Lag et spor S i grafen som starter med is og slutter med den andre odde noden it. Vi skal altså lage et spor som starter i node 7 og stopper i node 4, for eksempel via node 5 og til 4. Dette blir nå spor S. Trinn 3. Finn den første noden if i sporet S som er knyttet til en ubrukt grein (ikke i S) i grafen. Den første noden i sporet er node 7, og der er det ubrukte greiner. LOG530 Distribusjonsplanlegging

  32. 1 2 2 3 4 3 7 1 5 6 4 7 6 5 8 9 ThePostmans Problem Eulers algoritme 2 (forts.) Trinn 4. Konstruer et nytt spor T som starter i if og slutter i if og som ikke bruker greiner fra S. I neste figur har vi derfor lagt til et spor fra node 7 via 4, 2, 5 og 6 tilbake til 7. Trinn 5. La S = S+T ved å skyte det nye sporet T inn i den gamle S. I figuren til høyre har vi ”jukset” litt, og latt S = T+S, dvs. puttet det nye sporet inn før det gamle istedenfor til slutt. Dermed er de to greinene som opprinnelig var nummer 1 og 2 nå flyttet bakerst, og er blitt nummer 6 og 7 i figuren over. Vårt nye spor består altså foreløpig av: 7 – 4 – 2 – 5 – 6 – 7 – 5 – 4. Trinn 6. Gå til trinn 3 med det nye sporet S. Vi har fortsatt ubrukte greiner i node 7, og kan derfor lage et nytt spor derfra. LOG530 Distribusjonsplanlegging

  33. 1 2 2 3 4 3 10 1 5 9 4 7 6 5 8 6 8 7 9 ThePostmans Problem Eulers algoritme 2 (forts.) Trinn 3. Første node med ubrukte greiner er fortsatt node 7. Trinn 4. Vi konstruerer et nytt spor som starter i node 7 og går via node 9 og 8 tilbake til node 7. Dette blir det nye sporet T. Trinn 5. Vi skyter inn det nye sporet T inn i det gamle, denne gangen etter den femte greinen. Det nye sporet S = S + T blir da slik: 7 – 4 – 2 – 5 – 6 – 7 – 9 – 8 – 7 – 5 – 4. Trinn 6. Gå tilbake til trinn 3 med det nye sporet. LOG530 Distribusjonsplanlegging

  34. 3 1 2 2 4 5 4 3 12 1 5 11 6 7 6 7 10 8 8 9 9 ThePostmans Problem Eulers algoritme 2 (forts.) Trinn 3. Første node med ubrukt grein er nå node 2. Trinn 4. Vi konstruerer et nytt spor som går fra node 2 via node 1 tilbake til node 2. Dette blir det nye sporet T. Trinn 5. Vi skyter inn det nye sporet etter den andre greinen. Det nye sporet S blir: 7 – 4 – 2 – 1 – 2 – 5 – 6 – 7 – 9 – 8 – 7 – 5 – 4. Trinn 6. Gå tilbake til trinn 3 med det nye sporet. LOG530 Distribusjonsplanlegging

  35. 3 1 2 2 11 4 12 4 10 3 19 5 1 8 5 9 18 13 7 6 14 6 7 17 15 8 16 9 ThePostmans Problem Eulers algoritme 2 (forts.) Trinn 3. Første node med ubrukt grein er nå node 1. Trinn 4. Vi konstruerer nå et nytt spor som går fra node 1 via 3, 5, 8, 6, 3, 5 og tilbake til 1. Dette blir det nye sporet T. Trinn 5. Vi skyter inn det nye sporet etter den tredje greinen. Det nye sporet S blir da slik: 7 – 4 – 2 – 1 – 3 – 5 – 8 – 6 – 3 – 5 – 1 – 2 – 5 – 6 – 7 – 9 – 8 – 7 – 5 – 4. Inspeksjonen av veiene starter altså i node 7 og ender i node 4, og greinene mellom node 1 og 2 samt mellom node 3 og 5 må tilbakelegges to ganger. Totalavstanden fra blir da: 91+5=96. LOG530 Distribusjonsplanlegging

More Related