Bergervei/Prolog-Das Haus des Nikolaus

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Prolog</language>
== Vollständige Strecken ==

<code id="512943ac79289">
%Festlegung des Graphen (Nikolaushaus)
kante(a,b). kante(b,c). kante(c,d). kante(d,e). kante(e,a).
kante(b,d). 
kante(a,d). kante(e,b).

verbunden(A,B):-kante(A,B).
verbunden(A,B):-kante(B,A).

%Rundstrecke mit Tiefensuche
tstrecke(Route,Weg):-
	Route=[Anfang|_],
	findall([A,B],
		(kante(A,B),element(A,Route),element(B,Route)),
		Strecken),
	tsuche(Anfang,[Anfang],Weg,Strecken).

%Tiefensuche
tsuche(Knoten,Weg,Weg,[]):-!.
tsuche(Knoten,Teilpfad,Weg,Strecken):-
	verbunden(Knoten,NKnoten),
	teilliste([Knoten,NKnoten],Strecken),
	streichliste([Knoten,NKnoten],Strecken,NStrecken),
	tsuche(NKnoten,[NKnoten|Teilpfad],Weg,NStrecken).

%Tiefensuche nach allen moeglichen Rundstrecken
tsuche_alle(Route):-
	findall(Weg,tstrecke(Route,Weg),Liste),
	ausgabe(Liste).
</code>

<run id="512943ac792f1">
tsuche_alle([a,b,c,d,e]).
</run>