Prolog 树节点路径

Posted

技术标签:

【中文标题】Prolog 树节点路径【英文标题】:Prolog Tree Nodes Path 【发布时间】:2016-08-16 17:42:32 【问题描述】:

你好,我对prolog有基本的了解,我在编写prolog代码时遇到了问题:写上图的事实并编写以下prolog规则: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】:
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。

【讨论】:

如何添加一条额外的边来连接 n6 和 n3。这个事实应该如何表现?以及应该如何修改pos_path? 只需添加edge(n6,n3)。以上定义无需修改!

以上是关于Prolog 树节点路径的主要内容,如果未能解决你的问题,请参考以下文章

prolog从左到右遍历非标准树

在 Prolog 中的 is_a() 树中查找叶节点

如何在prolog中列出所有最小值

二叉树路径

c语言中如何获取树中所有叶子节点的路径

在prolog中查找图节点之间的距离