Vielleicht gibt es noch andere Möglichkeiten, aber ich habe gerade die letzten 10 Minuten damit verbracht, etwas Ähnliches zu suchen und bin dabei auf dieses Q. gestoßen.
Ich würde einen ungerichteten (und gewichteten - da ich auch den Standort betrachten möchte) Graphen verwenden - verwenden Sie JgraphT oder ähnliches in Py; JGraphT ist Java-basiert, enthält aber verschiedene vorgefertigte Algos.
Sie können dann einen Algorithmus namens BellmanFord verwenden, der eine ganzzahlige Eingabe annimmt und den Graphen nach dem kürzesten Weg mit der ganzzahligen Eingabe sucht, und zwar nur mit der ganzzahligen Eingabe, im Gegensatz zu Dijkstras.
http://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm
Ich habe es kürzlich in einem Projekt für die Flugroutenplanung verwendet, um den kürzesten Weg mit den kürzesten "Sprüngen" (Kanten) zu finden.