Problem des Handlungsreisenden für einen Baumgraphen (kein Hamilton-Pfad)C#

Ein Treffpunkt für C#-Programmierer
Guest
 Problem des Handlungsreisenden für einen Baumgraphen (kein Hamilton-Pfad)

Post by Guest »

Ich habe mir fast den Kopf zerbrochen, als ich versucht habe, einen Algorithmus zu finden, der die schnellste Route im Diagramm findet, die durch ALLE Diagrammscheitelpunkte vom Startscheitelpunkt aus verläuft (ohne dass zur Startkante zurückgekehrt werden muss).
Ich habe alle Hauptalgorithmen auf Diagramme und ähnliche Probleme beim Stackoverflow überprüft.

Bei fast allen TSP-Beispielen, die ich gegoogelt habe, ging es um vollständige Diagramme.

TSPLIB scheint mein Problem nicht lösen zu können.

Tut mir leid, wenn ich etwas verpasst habe.
Eingabediagramm (siehe Bilder):

• Gewichtet

• Ungerichtet

• Planar

• Kein Hamilton-Pfad

• Keine negativen Kanten

• Größe: bis zu 100 Eckpunkte (aber normalerweise 50-70)

Kantenlänge im Diagramm fast gleich, daher können wir sagen, dass es sich um ein ungewichtetes Diagramm handelt und 1 als Kantenlänge annehmen.< /p>

Sollte mit gelöst werden „Dead-End“-Fälle:
Image


Echte Eingabediagramme sehen so aus (beginnend bei Scheitelpunkt 0):
Image

Großes Diagramm:

Image


Erwartetes Ergebnis:

• Kürzester Pfad (ein Satz von Scheitelpunktindizes) durch alle Kanten ab Startkante.

• Nr muss am Ende zur Startkante zurückkehren

Habe nur eine Idee:

1) Überprüfen Sie alle möglichen Kombinationen des Pfades, messen Sie die Entfernung und finden Sie den Pfad mit der kleinsten Entfernung.

1a) Verwenden Sie die Tiefensuche oder die Breitensuche
1b) Wenn der aktuelle Scheitelpunkt während der Iteration mehr als eine Kante hat, erstellen Sie eine separate Kombinationen für alle (versuchen Sie alle möglichen Wege).

1c) In meinem Fall gibt es viele „Sackgassen“ im Diagramm, daher sollte der Algorithmus den Weg finden (das schnellste ofc) von dort aus und iteriere durch bereits passierte Scheitelpunkte und bleibe nicht hängen.

2) Rekonstruiere den Pfad

Vielleicht sollte ich hier den Minimum Spanning Trees-Algorithmus verwenden auch…

Oder vielleicht sollte ich für eine schnellere Berechnung mein Diagramm in mehrere kleinste aufteilen, die nur mit einer einzelnen Kante verknüpft sind (wie 49-52, 40-41 auf dem Screenshot)< /p>

Jede Hilfe wird geschätzt.

Ich bevorzuge C#-Beispiele (libs), aber ich kann Code aus jeder Sprache portieren.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post