2

私の複数のソリューションの問題は、Prolog のバックトラッキングがゴールをループするために発生します。技術的には、提供された各ソリューションが正しいことは理解していますが、私にとっては役に立ちません。重複を削除する方法はありますか?

これまでの私のコードは次のとおりです。

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).

クエリの例は次のとおりです。

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

よろしく。

4

1 に答える 1