Ich habe ein Problem im Kopf, ich denke, es ist ein NPC-Problem, aber ich weiß nicht, wie ich es beweisen soll.
Hier ist das Problem:
Es gibt k Inseln in einem sehr großen See und es gibt n fächerförmige Pontons. Diese Pontons haben die gleiche Größe, aber unterschiedliche Anfangsrichtungen und befinden sich an unterschiedlichen ursprünglichen Positionen im See. Die Pontons können sich frei um ihren Schwerpunkt drehen, ohne dass mit der Rotation Kosten verbunden sind.
Jetzt müssen wir diese Pontons bewegen, damit alle Inseln im See verbunden werden können. Wir können garantieren, dass die Anzahl der Pontons ausreicht, um alle Inseln zu verbinden.
[Anmerkung]: Wir können die Pontons nicht wiederverwenden !!
Die Aufgabe besteht darin, die Lösung mit dem minimalen Gesamtabstand der sich bewegenden Pontons zu finden, um alle Inseln miteinander zu verbinden. Die Entfernung, um einen Ponton zu bewegen, kann als die Entfernung zwischen der ursprünglichen Position des Massenschwerpunkts und seiner ausgefahrenen Position berechnet werden.
Um es klar zu machen, habe ich eine solche Figur gezeichnet. Angenommen, wir haben 3 Inseln A, B und C. Sie befinden sich irgendwo im See. Und ich habe mehrere fächerförmige Pantoons. Die Lösung besteht nun darin, eine minimale Bewegungsdistanzsummierung für die Verbindung von A, B und C zu finden, die im unteren Teil der Abbildung dargestellt ist. Hoffe, es hilft, das Problem zu verstehen. :) :)
Es scheint, dass das Problem ein NPC ist, aber ich weiß nicht, ob ich es beweisen soll. Kann mir jemand dabei helfen?
quelle
Antworten:
Erstens: Dies ist nicht das Problem des Handlungsreisenden. Der TSP erfordert die Identifizierung eines Hamilton-Zyklus mit minimalem Gewicht; Dieser Zyklus erfordert weder einen Zyklus noch einen minimalen Gewichtspfad. Es erfordert einen minimalen Kosten Aufbau eines Verbindungs Satz von Kanten, wo die Baukosten die Pontons auf bewegen basiert.
Zweitens: Dies ist nicht das Problem des Spanning Tree mit minimalem Gewicht. Siehe oben - wir benötigen eine Konstruktion mit minimalen Kosten und keine minimale Gewichtsidentifikation.
Drittens: Es scheint, dass der konstruierte Pfad ein Spanning Tree sein wird, aber nicht unbedingt ein mit minimalem Gewicht. Die Alternative ist, dass es sich um einen Spannbaum mit einigen zusätzlichen Kanten handelt, die zu einem Zyklus führen. Wenn wir jedoch in einer Konfiguration ohne Kanten beginnen, hat jede Kante einige positive Kosten und wir können immer einen Spanning Tree mit geringerem Gewicht finden, indem wir einfach keine zusätzlichen Kanten konstruieren.
Viertens: Sie sagen, die Pontons drehen sich frei; Ich gehe davon aus, dass mit dem Drehen der Pontons keine Kosten verbunden sind. Sie geben jedoch nicht an, um was sich die Pontons drehen: Ihre Punkte? Ihre Massenschwerpunkte? Irgendein interner Punkt? (Wenn irgendein externer Punkt, dann hätten wir Nullgewichtskonstruktionen, ja?)
Dies ist ein wenig subtil, denn wenn wir uns um 90 Grad um einen internen Punkt drehen, beispielsweise den Schwerpunkt, wie hoch sind die Kosten? Nichts, weil es eine Rotation ist? Eine endliche Menge, weil sich der Punkt bewegt hat? Jetzt müssen wir auch die Größe der Pontons kennen.
Fünftens: Man nimmt an, dass sowohl die Pontons als auch die Inseln in die euklidische Ebene eingebettet sind?
quelle
Nachdem ich mir die neuen Diagramme angesehen habe, sehe ich, dass Sie möglicherweise mehrere Pontons benötigen, um zwischen Inseln zu wechseln. Angesichts dessen könnten Sie einer Lösung des Steiner-Baum-Problems sehr nahe kommen, indem Sie die Knoten in Inseln verwandeln und eine ausreichend vielfältige Sammlung von Pontons mit kleinen Bögen erstellen. Wikipedia sagt, dass es tatsächlich ein PTAS für das Steiner-Baum-Problem gibt, daher kann ich nicht sofort sagen, dass dies es NP-vollständig macht. Wenn Sie sich jedoch die Details des Steiner-Baums ansehen, erhalten Sie möglicherweise entweder eine gute ungefähre Lösung oder zeigen, dass das Problem NP-vollständig ist.
quelle
Nach dem Zeichnen ist dies immer noch ein NPC-Problem. Selbst wenn wir das Problem auf jeden Ponton reduzieren, können wir 1 von n Positionen einnehmen (dh bekannte Verbindungslinien. Um die bestmögliche Antwort zu erhalten, müssten wir jeden Ponton in jeder Position ausprobieren und seinen Abstand addieren, um jeweils zu diesen jeweiligen Positionen zu gelangen Zeit und Vergleich mit allen anderen. Wenn jeder Ponton in jeder Position getestet werden muss, müssen n! Kombinationen getestet werden.
Ich habe mich entschieden, die Bilder des Originalplakats mit einigen Ergänzungen zu bearbeiten, um die Grafikideen hinter diesem Problem zu zeigen.
Das folgende Bild zeigt alle (zur Vereinfachung minus 2) Pontons in unterschiedlichen Farben mit allen potenziellen Pontonendpositionen in ROT. Ich habe nur die Linien zwischen 3 Pontons und allen Endpositionen gezogen, aber man konnte sehen, wie VERRÜCKT dies werden könnte.
Sagen wir, dass wir nur zum Teufel den türkisfarbenen Ponton als ersten Schritt an der ihm am nächsten gelegenen Endstelle platzieren (obwohl wir vom TSP wissen, dass dies am Ende möglicherweise nicht optimal ist).
Unten sehen wir genau das, den Ponton und die Entfernung (auch bekannt als gewichtete Fahrstrecke), die er zurücklegen muss.
Von hier aus kann ein virtueller Knoten mit den zwei Endpositionen neben der gerade platzierten Position erstellt werden. Die Entfernung vom festgelegten Knoten und die beiden benachbarten Knoten innerhalb des virtuellen Knotens haben eine virtuelle Verfahrstrecke von 0.
Unten sehen wir den virtuellen Knoten, der mit ALLEN möglichen Reisewegegewichten erstellt wurde, die dort platziert werden können.
Um zu sehen, wie dies weitergehen würde und wie die optimalste Lösung (wie oft beim TSP zu sehen) nicht immer darin besteht, für jede Auswahl den kürzesten Abstand zu wählen, müssten wir im Wesentlichen alle Pfade für alle Knoten / virtuellen Knoten testen.
Am Ende könnte der erste Knoten des (TSP) -Problems einer der potenziellen Endpontonpunkte sein, und die daraus gezogenen Linien sind die Abstände von diesem Endpunkt zu allen anderen Pontons. Alle anderen Knoten werden danach zu virtuellen Knoten, wie ich dargestellt habe, wobei ihre Linien als Abstände / Gewichte zu allen verbleibenden Pontons usw. abfallen. Wie dieses Grafikproblem NICHT GENAU das Problem des reisenden Verkäufers ohne die LAST JUMP-Anforderung aus dem Hamilton-Zyklus ist, ist mir ein Rätsel. Um die genaue Antwort zu erhalten, müssen alle Pfade durch das Diagramm getestet werden.
quelle