给定DAG,删除仅短于长度3的路径中的节点

时间:2016-09-09 21:27:48

标签: python graph graph-algorithm networkx graph-traversal

我正在使用networkx中的有向非循环图。我的图表如下图所示。 enter image description here

我基本上想要做的是从此图中删除所有独立连接到长度小于3的路径的节点。例如,在上图中,我将删除所有蓝色节点并仅保留红色节点。

最好的算法是什么,请记住这些图表可以变得非常大(高达10K节点)?

类似的问题here仅关注二叉树,不适用于我的情况。我更喜欢在Python(networkx)上实现这一点。

谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 生成高度图(从节点到高度的字典)
  2. 如果需要,生成逆图(所有边都反转)
  3. 生成深度图(这只是逆图的高度图)
  4. nodes = [n如果hmap [n] + dmap [n]> = 3则在节点中为n]
  5. 那是O(节点+边缘)