Traveling Salesman Problem

Status
Nicht offen für weitere Antworten.
M

MisterX

Gast
Hallo,

ich hab ein Problem. Und zwar sitzte ich vor einer Aufgabe bei der ich 16 Städte in beliebiger Reihenfolge besuchen soll, und zwar auf dem kürzestmöglichsten Weg, und am Schluß wieder am Startknoten sein soll. Bekannt als Traveling Salesman Problem. Ich möchte für dieses Problem einen Algorithmus, im Pseudocode, spezifizieren. Ich hab schon das halbe www durchgeforstet, bin aber auf keine zufriedenstellende Lösung gekommen.
Ich hab das Gefühl ich sitze auf der Leitung. Vielleicht kann mir ja jemand weiterhelfen. Bitte bitte. Wäre echt net.

Danke.

Grüße
 
S

SlaterB

Gast
> Ich möchte für dieses Problem einen Algorithmus, im Pseudocode, spezifizieren.

so wie du die Frage stellst, klingt das Problem um Längen zu hoch für dich,
was für eine Art von Algorithmus willst du denn dafür?
einfach alle möglichen Kombinationen durchprobieren oder irgendwas höheres?
eine Übersicht der Möglichkeiten gibts hier:
http://de.wikipedia.org/wiki/Problem_des_Handlungsreisenden

wie gesagt aber ein mächtig schweres Problem,
wenn man da keinen eigenen Ansatz hat, macht es eigentlich keinen Sinn, da von jemand anderen zu kopieren,
(außer von allgemein öffentlichen Quellen im Internet ;) )

das ist ja nun keine Fleiß-/ Grundlagenaufgabe sondern schweres Denken
 
G

Guest

Gast
Ich hätte es jetzt so gemacht:

Eine beliebige Stadt als Startknoten genommen, von dort aus geguckt welche Städte ich erreiche, und dann zu der Stadt mit der kürzesten Distanz gegangen, und das gleiche für die jetzt erreichte Stadt gemacht.
Aber wie komm ich dann wieder an meinen Startknoten zurück?
Und wie schreib ich das in Pseudocode?

Ich denke es läuft auf einfach alle möglichen Kombinationen durchprobieren raus, oder?

Den Artikel in Wikipedia hab ich schon mehrfach durchgelesen, aber verstehen ist die andere Frage!!!!
 

byte

Top Contributor
Wenn die Laufzeit wurscht ist, dann kann man das doch sicher auch nach dem Backtracking Verfahren lösen. Damit dann einfach alle Wege bestimmen, die wieder beim Startort enden. Der mit der kürzesten Strecke ist dann das Ergebnis. Effizient ist das sicher nicht, aber das scheint ja nicht gefordert zu sein.
 
S

SlaterB

Gast
@Gast
das klingt doch gar nicht schlecht, vielleicht noch eine Erweiterung:
Vom Startknoten mit zwei beliebigen Knoten ein Dreieck bilden, dann nach und nach alle anderen Knoten einfügen und zwar zwischen den beiden Knoten, bei denen der entstehende Weg am kürzesten ist.

gibts natürlich schon:
http://de.wikipedia.org/wiki/Nearest-Insertion-Heuristik
(edit: ne ist doch was anderes, na irgendwo da sicherlich auch genannt,
oder nimm Nearest-Insertion, das wolltest du ja ;) )

was ist dann am Pseudocode schwer?
Knotenmengen, ne Hauptschleife, Wege berechnen und vergleichen, kürzesten Weg merken,
das sind doch einfache Dinge,

erstmal auf Deutsch, dann pseudocodisch
 
M

MisterX

Gast
Am Pseudocode ist für mich schwer, dass ich nicht so genau weiß wie detailiert es schon am orginal Code dran sein muß. Ist dies z.B. schon Pseudocode:

Knotenmenge(alle Elemente der Rundreise)
while(Knotenmenge nicht leer ist) {
berechne(Wege zu alle benachbarten Knoten)
vergleiche(die einzelnen Distanzen)
speichere die kleinste Distanz
entferne Knoten aus Knotenmenge
}
if (Knotenmenge leer)
gib kürzeste Distanz aus

:?: :?: :?: :?: :?:
 
S

SlaterB

Gast
das kann nur der beantworten, der dir diese Frage stellt?!
alles andere ist reine Spekulation,

wenn dir Spekulationen gefallen:
für mich ist dein Code noch bisschen zu kurz,
was mit den Knoten passiert die ausgewählt wurden erwähnst du gar nicht,
warum sollte man die kleinste Distanz speichern?
vielleicht den kleinsten Weg speichern, also die Knoten in Reihenfolge?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Analysemuster - Welches nehme ich für diese Problem? Softwareentwicklung 0
L Design Patterns zu abstraktem Problem Softwareentwicklung 2
C Regex Problem Softwareentwicklung 1
TheJavaKid RegEx Problem Softwareentwicklung 2
C Regex-Problem Softwareentwicklung 24
C GIT Einstieg - Problem Softwareentwicklung 12
H Problem mit jsp:setproperty Softwareentwicklung 10
B Regex-Problem mit replace außerhalb des matching bereichs liegender Zeichenketten Softwareentwicklung 2
Landei MS-Access-Problem Softwareentwicklung 3
TiME-SPLiNTER Banales regEx-Problem Softwareentwicklung 2
A 8 Damen Problem (Backtracking) Softwareentwicklung 2
U xmlvm-Problem: Der erzeugte Obj-C-Code erzeugt Fehler in Apple's Xcode SDK Softwareentwicklung 3
S Subversion und Source Folder Problem. Softwareentwicklung 6
G PHP Problem: Geltungsbereich von Variablen Softwareentwicklung 3
L Problem mit Vererbung Softwareentwicklung 6
C Ein Problem mit der RSA Versschlüsselung Softwareentwicklung 3
W Problem mit Umlauten in xml Dateien auf englischen Systemen Softwareentwicklung 7
H Problem Programmieren Softwareentwicklung 12
H Problem mit eclipse Softwareentwicklung 3
M IllegalStateException - Problem mit GUI und Observer pattern Softwareentwicklung 4
B JavaScript/JSON Problem Softwareentwicklung 2
m@nu Problem mit einer RegEx Softwareentwicklung 4
MTiN Problem mit Rot/Schwarz-Baum Softwareentwicklung 1
F Problem mit DOS-Box Softwareentwicklung 2
A Problem mit Datum-Formatierung Softwareentwicklung 2
K Knapsack Problem: Algorithmus? Softwareentwicklung 7
S Problem PJIRC java-applet Softwareentwicklung 4
rambozola problem mit division in oracle Softwareentwicklung 2
Icewind Problem mit der OOP Softwareentwicklung 4
G Problem mit ActionListener Softwareentwicklung 7
C Mysql-Frage(Problem mit nicht durchgeführten Zugriff) Softwareentwicklung 5

Ähnliche Java Themen


Oben