小编Sav*_*ava的帖子

Prolog 双向谓词

我必须在 Prolog 中创建家庭关系来完成一项作业,我偶然发现了这个问题。

man(john).
woman(lisa).
married(john,lisa).

?- married(john,X).
X = lisa.

?- married(X,john).
false.
Run Code Online (Sandbox Code Playgroud)

如何使这个谓词以两种方式起作用?如果约翰嫁给了丽莎,那么丽莎也嫁给了约翰。

对于事实,我只能使用性别、父母和已婚:

man(john).
woman(lisa).
parent(john,steve).
parent(lisa,steve).
married(john,lisa).
Run Code Online (Sandbox Code Playgroud)

这个要求使得这个解决方案对我来说无法使用。我不能只添加关系,wife(lisa,john).因为我必须自己定义妻子、丈夫等。

wife(X,Y) :- woman(X),married(X,Y).
Run Code Online (Sandbox Code Playgroud)

predicate prolog bidirectional

5
推荐指数
1
解决办法
1593
查看次数

标签 统计

bidirectional ×1

predicate ×1

prolog ×1