Tree Prolog中的图(图,树)

Tree Prolog中的图(图,树),tree,prolog,graph-theory,Tree,Prolog,Graph Theory,我对Prolog有一个小问题。我不太懂这种语言。 我必须检查图形是否是一棵树,我不知道如何才能做到这一点。 你知道吗?嗯……首先,你想定义“树”。在我看来,树是一个有向图。您需要一种在Prolog中表示有向图的方法。曾经这样的方式是这样的: % % a predicate to define your nodes. Not truly necessary, % but you might find it useful for carrying payload around. % node(X [

我对Prolog有一个小问题。我不太懂这种语言。 我必须检查图形是否是一棵树,我不知道如何才能做到这一点。
你知道吗?

嗯……首先,你想定义“树”。在我看来,树是一个有向图。您需要一种在Prolog中表示有向图的方法。曾经这样的方式是这样的:

%
% a predicate to define your nodes. Not truly necessary,
% but you might find it useful for carrying payload around.
%
node(X [, payload] ).

%
% says that an edge run from node X to node Y.
% you also might want to carry payload here (for
% instance, your edges might have some weight/cost associated with
% them, such as distance, price, etc.
%
edge(X,Y [, payload] ). % says that an edge runs from node X to node Y.
树具有以下属性:

  • 树中的每个节点最多有一个父节点(基数为零或一),通过单个入站边缘连接到该节点(意味着子节点不知道其父节点是谁)

  • 树中的每个节点都有零个或多个子节点(基数为零到多),每个子节点都通过单个出站边缘连接(这意味着每个节点都知道其子节点是谁)

  • 一棵树只有一个根节点,一个没有父节点(例如,没有入站边)。如果有向图有多个根节点,则它是(树的)林

  • 没有子节点(出站边)的节点是叶节点

这就引出了树的递归定义:树中的每个节点都可以看作是一棵独立的树,对吗?这将引导您找到一个描述性的解决方案(在Prolog中)


试一试,向我们展示一些示例代码,我们可以给您一些帮助。

递归您的结构。你试过什么吗?你对语言的理解达到了什么程度?这不是一个可以有意义地回答的问题。你当前问题的唯一答案是,“是的,我有一些想法”。你可以通过阅读来改进你的问题。我们需要更多的信息来帮助你。你需要了解这个网站,请通过阅读了解这个网站是如何工作的。