我在Prolog中有这个数据库:
connection(a,b,bus).
connection(b,c,metro).
connection(b,d,taxi).
connection(d,e,bus).
如何设置规则,以便问题:trajectbetween(a,c,T).
给我回答:T = b
我已经尝试过这条规则:
traject(A, B):- connection(A, X,_), traject(X,B).
但它不起作用。
答案 0 :(得分:1)
问题是您没有traject/2
的基本案例。如果每个案例都必须复发,谓词如何成功?
在我认为的问题中回答你的问题:
trajectbetween(A,C,X) :- connection(A,X,_), connection(X,C,_).
注意这里没有递归,所以这将产生最好的一站式解决方案。如果你想要其他解决方案,那可能还不够;你可能想尝试一下你所拥有的第二种情况。
再次请review my previous answer,因为它可能会有帮助。