1
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.
감사합니다.
고맙습니다. \ +의 목적은 무엇입니까? –
부정 (실패한 것이 실패하면 성공); 이 예에서'A'는'Visited'의 멤버가 아니어야 함을 의미합니다. – gusbro