@Tarantoga
Das geht nur für einen Graph, also zum Beispiel mit den Openstreetmap Kartendaten oder so. Nicht für ein Koordinatensystem.
In einem Koordinatensystem gibt es unendlich mögliche Punkte (Relle Zahlen als Koordinaten). Wenn man die möglichen Koordinaten so beschränkt, dass es endlich viele mögliche Punkte werden kann man einen Graph dazu basteln.
Der kürzeste Weg zwischen zwei Punkten (x1, y1), (x2, y2) in einem 2-Dimensionalem kartesischem Koordinatensystem ist immer Wurzel((x1-x2)² + (y1-y2)²)
Formal sieht das Problem dann so aus: gegebene sind Punkte (x1, y2) ... (xn, yn) und gesucht ist ein Mittelpunkt (xm, ym), so dass die Funktion
f(xm, ym) = Wurzen((x1-xm)²+(y1-ym)²) + ... + Wurzen((xn-xm)²+(yn-ym)²)
minimal ist.
Da kann man sich dann den Regeln der Analysis bedienen und das lösen
In einem ungerichtetem Graphen könnte man das wie folgt lösen:
Man berechnet für n Knoten mit Dijkstra einen kürzesten Wege Baum. Dijkstra hat eine Laufzeit von O(e * log(v)) bei e Kanten und v Knoten. Also O(n * e * log(v)). Dann muss man noch für v Knoten die kürzesten Wege addieren und den kürzesten insgesammt auswählen O(v*n) was eine Gesammtlaufzeit von O(v*n + n * e * log(v)) macht.
Ich hoffe das stimmt jetzt so wie ich mir das gedacht habe, aber eigentlich sollte das funktionieren ...