Hallo zusammen,
ich bin schon eine weile dabei ein Prolog Programm zu schreiben mit dem ich den kürzesten Weg ausgeben kann.
Der Code sieht bisher so aus:
nachbar(downtown,uptown,6).
nachbar(downtown,middletown,8).
nachbar(downtown,westtown,2).
nachbar(middletown,uptown,3).
nachbar(easttown,uptown,5).
nachbar(easttown,westtown,4).
loesung2(Start,Ziel):-
weg2(Start,Ziel,[Start],Pfad), % Aufruf der Tiefensuche
write('Pfad: '),
write(Pfad).
% weg2(Startknoten, Zielknoten, Liste der besuchten Knoten, Ergebnispfad)
weg2(Start,Ziel,Liste,Pfad):-
Start = Ziel, % Rekursionsausstieg, wenn aktueller Knoten mit Zielknoten identisch,
Pfad = Liste. % dann Übergabe der Liste als Tiefensuchpfad
weg2(Start,Ziel,Liste,Pfad):-
neben(Start,Knoten,L), % Ermittlung eines Knotens, der vom Startknoten wegführt
not(member(Knoten,Liste)), % Prüfung, ob Knoten schon mal besucht wurde (Zyklus)
weg2(Knoten,Ziel,[Knoten|Liste],Pfad). % Ermittelung der weiteren Wege ausgehend vom gefundenen Knoten zum Ziel,
neben(X,Y,D):- nachbar(X,Y,D).
neben(X,Y,D):- nachbar(Y,X,D).
...
Bis jetzt werden einfach alle möglichen Strecken ausgegeben ich bekomme es nichtmal hin einfach die Streckenlängen dann dahinterzuschreiben... Ziel wäre es dann nur den kürzesten Weg auszugeben
Würde mich über eine hilfreiche Antwort sehr freuen..
Mfg Tobi