所以我从Prolog开始并有一个示例任务,我有一些点形成一个迷宫,我想知道所有可以通向节点1的节点。
connected(1,2).
connected(3,4).
connected(5,6).
connected(7,8).
connected(9,10).
connected(12,13).
connected(13,14).
connected(15,16).
connected(17,18).
connected(19,20).
connected(4,1).
connected(6,3).
connected(4,7).
connected(6,11).
connected(14,9).
connected(11,15).
connected(16,12).
connected(14,17).
connected(16,19).
reachable(X,Z) :- connected(X,Z).
reachable(X,Z) :- connected(X,Y),reachable(Y,Z).
我使用了以下查询:
reachable(X,1).
这导致了一个简单的假,而不是所有导致1的节点。
另一方面,我期待这样的事情:
x = 4;
应该注意,这是一个有向图。
答案 0 :(得分:1)
如果我执行查询reachable(X,1).
,我会得到预期的结果:
?- reachable(N,1).
N = 4 ;
N = 3 ;
N = 5 ;
N = 6 ;
false.
基于以下图表,人们期望的是:
生成:dot -Tpng < conn.dot > conn.png
和conn.dot
:
digraph G {
1 -> 2;
3 -> 4;
5 -> 6;
7 -> 8;
9 -> 10;
12 -> 13;
13 -> 14;
15 -> 16;
17 -> 18;
19 -> 20;
4 -> 1;
6 -> 3;
4 -> 7;
6 -> 11;
14 -> 9;
11 -> 15;
16 -> 12;
14 -> 17;
16 -> 19;
}
请检查您的Prolog文件中是否有小错字或空格错误。