为了账号安全,请及时绑定邮箱和手机立即绑定

使用 jgrapht 分割森林中的一棵树

使用 jgrapht 分割森林中的一棵树

守着一只汪 2023-07-19 16:39:59
我有一个用 jgrapht 库表示的树,有多种类型的节点,我需要从特定的节点类型开始切割任何子树。正如您在此示例中所看到的,该树代表 Java 类的源代码。我需要通过拆分从每个“Entry”节点类型开始的主树来创建多个 jgrapht 对象。总共我应该从这棵大树中得到 7 棵树。我使用的结构是DirectedPseudograph.
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

虽然我不是 100% 清楚你想要什么,但似乎有多种解决方法。

  1. 从根节点的每个传出邻居开始,您可以运行深度优先搜索并记录返回的节点。DFS算法可达的节点属于同一子树。为此,您可以使用DepthFirstIterator

  2. 您可以创建没有根节点的子图,例如使用AsSubgraph类。然后,您可以在生成的导出子图上调用ConnectivityInspector 。由于每个子树都是一个断开连接的图形组件,因此连接检查器将能够找到每个组件。

顺便说一句,除非您需要伪图的功能,否则为了性能,最好使用 SimpleDirectedGraph。显然,后者不允许平行边或自环。


查看完整回答
反对 回复 2023-07-19
  • 1 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信