2016-04-22 148 views
1

enter image description hereProlog的树节点路径

您好,我有序言和我对着在写序言代码以下问题的问题基本知识:编写有关上图中的事实,并写入下面的序言规则:pos_path 。规则的

采样运行:

?- pos_path(n1, nx, L). 
L = [n1,n3,n7,nx] ? ; 
L = [n1,n3,n4,n5,nx] ? ; 
L = [n1,n3,n4,n6,nx] ? ; 
no 
+1

请显示您到目前为止所尝试的内容,并询问关于您卡在哪里的更具体的问题。 – lurker

回答

2
edge(ne,n1). 
edge(n1,n2). 
edge(n1,n3). 
edge(n3,n7). 
edge(n7,nx). 
edge(n3,n4). 
edge(n4,n5). 
edge(n5,nx). 
edge(n4,n6). 
edge(n6,nx). 

pos_path(A, B, Path) :- 
    path(edge, Path, A, B). 

使用另外一个问题定义path/4

+0

如何添加将n6连接到n3的额外边缘。这个事实的表现应该如何?以及如何修改pos_path? – KikoPayet

+1

只需添加'边缘(n6,n3)'。以上定义不需要修改! – false