如何在prolog中为族树实现BFS和DFS

时间:2013-12-04 14:22:06

标签: tree prolog rules breadth-first-search depth-first-search

我想请求有关prolog编程的帮助。 我是programinng的新手,在prolog的编程方面更加新鲜。

但是我在制作合适的节目时遇到了问题。

我有这种树:

tree(Giorgos(Giannis(Petros, Kyriakos), Eleni(Anna, Katerina))).

我希望添加规则以便为结果进行BFS和DFS查找:

Giorgos-Giannis-Petros-Kyriakos-Eleni-Anna-Katerina

Giorgos-Giannis-Petros-Kyriakos-Eleni-Anna-Katerina

尽管理解了BFS和DFS的概念,但我不知道如何实现它们。

另外我的第二个问题是这个程序:

father_of(paul, john).
father_of(paul, georgia).
mother_of(helen, maria).
mother_of(helen, peter).

siblings(X, Y) :- parent_of(Z, X), parent_of(Z, Y), X\=Y.
parent_of(X, Y) :- father_of(X, Y).
parent_of(X, Y) :- mother_of(X, Y).

当我提出问题时:

?-siblings(john, X).

然后我得到答案

X=georgia

在此之后,我认为程序应该停止,但我可以使用;并得到答案:

false 

但是在第二次问其他兄弟姐妹时:

?-siblings(maria, X). 

程序在答案后停止

X=peter

我不知道为什么在没有兄弟姐妹的情况下第一次让我再问一遍,第二个问题在答案结束后才结束。

0 个答案:

没有答案