如何使用Prolog

时间:2015-09-05 13:03:10

标签: prolog

我有一个谓词directTrain/2,它定义了从AB的直接路径。 给定一个知识库,我想定义一个谓词route(A,B,Route),它将结果作为包含从AB的路径的列表形式。

我理解这与确定人A是否是人B的后代是一样的,所以我知道这个的是/否版本应该是这样的:

route(A,B) :-
   directTrain(A,B).
route(A,B) :-
   directTrain(A,C),
   route(C,B).

我缺少的是理解如何使用3的arity,当第三个变量将累积最终路线时。 我想达到以下结果:

鉴于以下知识库......

directTrain(ny,la).
directTrain(la,paris).
directTrain(paris,rome).

......查询的答案......

route(ny,rome,R).

......应该是:

R = [ny,la,paris,rome]

我对Prolog很新,所以我希望我能从答案中学到很多东西。谢谢!

0 个答案:

没有答案