【发布时间】:2013-02-23 15:28:43
【问题描述】:
假设你有一个包含以下内容的数据库:
son(a, d).
son(b, d).
son(a, c).
son(b, c).
所以 a 和 b 是 d 和 c 的儿子。现在你想知道,给定一个更大的数据库,谁是谁的兄弟。一个解决方案是:
brother(X, Y) :-
son(X, P),
son(Y, P),
X \= Y.
这个问题是如果你问“兄弟(X,Y)”。并开始按“;”你会得到像这样的冗余结果:
- X = a,Y = b;
- X = b,Y = a;
- X = a,Y = b;
- X = b,Y = a;
我可以理解为什么会得到这些结果,但我正在寻找解决此问题的方法。我能做什么?
【问题讨论】:
-
添加结果重复原因的链接将对读者有所帮助。
标签: prolog prolog-setof