【发布时间】:2014-05-10 00:46:04
【问题描述】:
我正在查看 jgrapht 和 jung,但我似乎找不到任何方法可以让我做我想做的事。
我有一个图,通过指定一个根节点和一些叶子,我想从中获取一棵树,或者如果这不可能,至少是一个错误。
jgraphT 和 jung 似乎都有从图中获得最小生成树的算法,但是获得的树是随机的,没有人向我保证给定节点将是叶子节点,而另一个节点将是中继节点... .
【问题讨论】:
-
您的问题不清楚。你是说你想要一个算法将一个图、一个节点列表和一个根作为输入,并且如果你可以将该图解释为具有该根和那些叶子的树,则返回一棵树?或者可以是那个Graph的一个子图(生成树),也就是一定要使用原Graph的所有边吗?
-
不,我不需要使用原始图的所有边...我有一个图,在这个图中我指定哪个节点是我的根,哪些节点是我的叶子,休息的节点是简单的继电器。我想要一棵树,它能让我从根部接触到每一片叶子。我不需要使用所有节点或边,重要的是根和所有叶子都是最终树的一部分。
-
是否可以接受您未指定的叶子是最终树的一部分,或者必须指定所有叶子?如果您不使用原始图的所有节点(假设您有一个包含多个连接组件的图,或者您的“根”有一个无法从根到达的父级),是否可以接受?您这样做是为了解决什么总体问题?
-
您指定哪些节点是叶子和根,未标记的节点可以用作中继或不使用(即如果根和叶子之间已经存在直接连接,则无需包含中间节点)。我正在尝试从网络中创建一棵树(这将是一个无向且连接的图),即获得一个没有循环的网络,其中每个叶节点都可以从根到达。我会将未使用的链接/节点保存在某个地方,以便在一个链接或节点掉落的情况下实现一些冗余(在这种情况下,如果可能的话,我只需对剩余节点重复算法以获得一棵新树)