如何创建一个规则,使得所有的Prolog对称的关系?(How to create a rule th

2019-08-16 16:23发布

当我确定我要的是:

marriedTo(martin, annie).

这也使得以下情况:

marriedTo(annie, martin).

我曾尝试以下,但它(显然)一个无限循环。

marriedTo(X,Y) :- marriedTo(Y,X).

我怎么会在序言做到这一点?

Answer 1:

解决这个问题的最简单的方法是:

marriedTo(martin, annie).
...
married(X,Y) :- marriedTo(X,Y).
married(X,Y) :- marriedTo(Y,X).

然后还有很多其他的方法,实现和语义上来解决无限递归的问题...



Answer 2:

我想通了毕竟:

marriedTo(X,Y) :- marriedTo(Y,Z), X = Z, !.


文章来源: How to create a rule that makes all relations symmetric in Prolog?
标签: prolog