我敢肯定这是相当基本的,虽然我无法通过搜索在这里找到它。
我正在学习prolog,并找到了一个带有规则的示例:(表示邻接)
adj(1, 2). adj(2, 1).
adj(1, 3). adj(3, 1).
adj(3, 4). adj(4, 3).
现在,这让我觉得有点浪费,因为我们知道邻接是一种互惠关系,只定义每一对中的一个就足够了,然后定义:
adj(X, Y) :-
adj(Y, X), !.
我理解为什么这种简单化的尝试行不通;如果 X 和 Y 不相邻,它会陷入无限循环。但是,我还没有完全弄清楚如何修改它以在所有情况下工作。