© h.hofstede (h.hofstede@hogeland.nl)

De Chinese Postbode.

Een postbode haalt de post op bij het postkantoor, en gaat die daarna bezorgen. Hij moet alle straten zijn gebied minstens één keer langsgaan en wil dat graag doen door door een zo klein mogelijke totale afstand af te leggen.

De graaf die hierbij hoort is een gewogen graaf  (het gewicht van een straat is de lengte ervan). Als het een Eulergraaf is, dan is uiteraard de beste route gewoon een Eulerroute, want daarin wordt elke verbindingslijn precies één keer gebruikt. 

Korter kan niet.

Met het Fleury-algoritme vind je snel zo'n route.  
       
Maar als de graaf géén Eulergraaf is, dan zul je sommige verbindingslijnen twee keer moeten langslopen.  Je voegt eigenlijk verbindingslijnen toe:  de straten die dubbel gelopen gaan worden teken je als twee verbindingslijnen tussen de betreffende knooppunten. Dat heet het Euleriseren van de graaf.

De vraag is natuurlijk: 

       
Dat is geen eenvoudige vraag......

Daarom eerst maar een versimpeling:

De graaf heeft precies twee knooppunten met oneven graad.
       
Stel dat we de verbindingslijnen V*  gaan toevoegen (= dubbel gaan lopen).  Dan vormen al die verbindingslijnen samen een pad tussen beide knooppunten met oneven graad.
Maar we weten al hoe we zo'n minimaal pad moeten vinden:   Dijkstra's  algoritme natuurlijk!
       

twee oneven knooppunten:  Gebruik Dijkstra's algoritme daartussen!

       
De graaf heeft meer dan twee knooppunten met oneven graad.
       
Edmonds en Johnson hebben hier in 1973 een goed algoritme voor gevonden.
Daar hebben we eerst de theorie van stromen in een graaf voor nodig, dus je moet even geduld hebben tot later.....
       
       
OPGAVEN
       
1. Euleriseer de graaf hiernaast zo efficiënt mogelijk.
       
     
       
       

© h.hofstede (h.hofstede@hogeland.nl)