minimieren würde Ich mag einen besseren Algorithmus finden, das folgende Problem zu lösen:nicht schneidende Liniensegmente, während die kumulative Länge
Es gibt N Ausgangspunkte (lila) und N Zielpunkte (grün) in 2D. Ich möchte einen Algorithmus, der Startpunkte mit Zielpunkten durch ein Liniensegment (braun) verbindet, ohne dass eines dieser Segmente sich schneidet (rot), und gleichzeitig die kumulative Länge aller Segmente minimiert.
Mein erster Versuch in C++ war, alle möglichen Zustände zu permutieren, schnittstellenfreie Zustände zu finden und unter diesen den Zustand mit minimaler Gesamtsegmentlänge O (n!). Aber ich denke, dass es einen besseren Weg geben muss.
Jede Idee? Oder gute Keywords für die Suche?
Vielleicht eine Art topologische Sortierung? –
Ich kenne die Antwort auch nicht, aber ich würde jede Lösung erstellen (Konflikte ignorieren) und dann den Konflikt einzeln lösen: Wenn zwei Zeilen kollidieren, scheint es, dass das Umschalten eines Paares von Endpunkten den Konflikt löst. Ich bin mir jedoch nicht sicher, wie ich den Fortschritt garantieren kann. –
@ DietmarKühl: Durch das Wechseln von Endpunkten kann ein anderer Konflikt angezeigt werden. –