Also da bin ich auf jeden Fall schonmal nicht schlechter (vermutlich sehr viel besser) als die Musterlösung
Beobachtungen:
- es ist nicht verboten, Kabel doppelt zu verlegen (d.h. zwei Kabel nebeneinander zu verlegen). Habe ich aber nicht weiter benutzt
- es gilt in jedem Fall die Dreiecksungleichung, es ist also immer billiger ein Kabel direkt zu verlegen, als über einen Umweg durch einen anderen Ort (lokal betrachtet)
- die Eigenschaft, dass ein Kabelausfall nicht das Netzwerk trennen darf, kann man so interpretieren, dass zwischen jeweils zwei beliebigen Städten zwei kabeldisjunkte Wege existieren, es also einen Kreis aus Kabeln gibt, auf denen beide Orte liegen. Wäre dies nicht der Fall, so würde der Ausfall des gemeinsamen Kabels die beiden Städte trennen.
Musterlösung (doppelter MST):
- dies ist wohl die naheliegendste Lösung. Man berechnet einfach zwei minimale Spannbäume (einfach zu implementieren durch Jarnik/Prim-Algorithmus). Fällt ein Kabel in dem einen Spannbaum aus, so springt der andere ein. Der Zusammenhang bleibt also immer erhalten.
- Hier klappt allerdings die Anbindung des Nordpols nicht ohne weiteres! Im nachfolgenden Bild ist ein Beispiel dargestellt, wo bei diesem Fall das Netz durch entsprechende Kabelausfälle partitioniert werden kann.
- Die Musterlösung ist also
nicht korrekt (bzw. ihr fehlt der Beweis, dass die dargestellte Situation niemals auftreten kann).
Lösung: Traveling-Salesman-Rundreise aus doppeltem MST
- eine Rundreise durch alle Orte toleriert ebenfalls immer einen Kabelausfall!
- ein einfacher (2)-Approximationsalgorithmus für eine TSP-Tour läuft wie folgt ab:

Es wird ein MST berechnet (ohne Nordpol!!)

Die Kanten des MST werden verdoppelt

Nun hat jeder Ort eine gerade Anzahl an Kabelanschlüssen

Es existiert dann ein (leicht durch Tiefensuche zu bestimmender) Hamiltonkreis, welcher alle Kabel genau einmal durchläuft. Nun können wir vom Kreis doppelt durchlaufene Orte abkürzen (d.h. die benachbarten direkt verbinden). Dies erhöht die Kosten nicht, da die Dreiecksungleichung gilt.
- Wir haben also eine Rundreise, welche maximal so teuer ist wie die doppelte Länge des MST. Diese Lösung ist sehr wahrscheinlich deutlich besser als zwei MSTs zu verlegen.
- Da es sich um eine Rundreise handelt, können wir nun tatsächlich noch die vier billigsten Kabel vom Nordpol aus verlegen. Die Rundreise kann niemals partitioniert werden, der Nordpol ist immer an die Rundreise angebunden.
- als Lösung (excl. 4 Anbindungen des Nordpols) erhalte ich hier etwa 260.000 km (Engel-)Kabel, da mein Algorithmus nur die geo-Koordinaten berücksichtigt.
Lösung: bessere Algorithmen für Traveling-Salesman-Rundreise
- Nun ist der oben erwähnte Algorithmus zur Berechnung einer TSP-Rundreise nicht sehr gut. Es gibt wesentlich bessere. Für meine Lösung habe ich 3Opt verwendet (bester meiner Algorithmen für mein Hauptseminar).
- Dieser Algorithmus kommt auf etwa 208.000 km (Engel-)Kabel.
- Beweisbar gibt es keine bessere Rundreise als 191.862km (untere Schranke von Held/Karp). Die Lösung ist also schon recht gut.
Optimalität und Komplexität
- Die Traveling-Salesman-Rundreise ist nicht immer optimal, deutlich wird dies wenn (wie
jfheins schon sagte) die Knoten in Form eines
Φ angeordnet sind.
- Die Komplexität ist auf jeden Fall in nichtdeterminisitsch polynomiell (NP) enthalten, denn wenn man eine Lösung für das Problem hätte, kann man leicht (in polynomialzeit) überprüfen, ob die geforderten Ausfallsicherheiten gewährleistet sind. Gefühlsmäßig würde ich sagen, dass das Problem auch NP-hart ist. Ein effizienter Algorithmus zur Bestimmung einer optimalen Lösung wäre demnach eher nicht zu erwarten.