所以我有几个事实:
%bridge(Name,From,To).
bridge(a,1,2).
bridge(b,1,2).
bridge(c,2,3).
bridge(d,3,4).
编辑:更改为原子
所以这读起来就像“桥 A 从 1 区跨越到 2 区”。这很简单。然而,反之亦然。桥 A 从 2 区跨越到 1 区。这就是我想的原因:
bridge(B,S,E):- bridge(B,E,S).
问题是,这弄乱了我的程序,因为每当 swi-prolog 找不到匹配的网桥时,它就会继续使用网桥规则来一遍又一遍地反转它的参数。有没有办法阻止这种情况?或者有没有其他方法可以创建一个简单的规则?如果我添加所有其他事实(桥(A,2,1),桥(C,3,2)等),我的程序将完美运行。