Wie kann ich Duplikate im Prolog verhindern?

Mein Mehrfachlösungsproblem ergibt sich aus Prologs Backtracking-Schleife durch die Ziele. Ich verstehe zwar, dass jede bereitgestellte Lösung technisch korrekt ist, aber für mich ist sie nicht nützlich. Gibt es eine Methode zum Entfernen von Duplikaten?

Hier ist mein Code soweit:

flight(london, paris).
flight(paris, amsterdam).
flight(amsterdam, rome).
flight(rome, paris).
flight(rome, rio_de_janeiro).
route_from(A,B) :-
  flight(A,B).
route_from(A,B) :-
  flight(A,R),
  route_from(R,B).

Eine Beispielabfrage lautet:

?- route_from(A, paris).
A = london ;
A = rome ;
A = london ;
A = london ;
A = london ;
A = london ;
A = london ;
A = london ;
A = london ;
etc.

Grüße.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage