2015-11-30 109 views
-1

我有這個數據庫中的Prolog: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). 

但它不工作。

回答

1

問題是您沒有traject/2的基本情況。如果每一件事情都必須重演,謂詞如何取得成功?

回答你的問題的信,我認爲這會產生:

trajectbetween(A,C,X) :- connection(A,X,_), connection(X,C,_). 

注意這裏沒有遞歸,所以這會產生,在最好的,一站式的解決方案。如果你想要其他解決方案,它可能是不夠的;你可能想嘗試一下你的第二種情況。

請再次請review my previous answer,因爲它可能有幫助。