【发布时间】:2016-09-16 18:52:21
【问题描述】:
首先我不确定这种算法叫什么,这是主要问题 - 所以问题的第一部分是这个算法叫什么?
基本上我有一个DiGraph() 插入节点[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 和边缘([1,3],[2,3],[3,5],[4,5],[5,7],[6,7],[7,8],[7,9],[7,10])
由此我想知道是否有可能获得如下集合:[[1, 2, 4, 6], [3], [5], [7], [8, 9, 10]]
编辑:如果有帮助,让我添加一些约束。 - 没有周期,这是有保证的 - 图表没有一个起点
我正在尝试做的是收集同一级别的节点,以便它们的处理可以并行化,但在外部集合中,处理是串行的。
EDIT2:很明显,我没有充分考虑这一点,所以描述“级别”的最简单方法是最深的前辈,所有节点都具有相同的前辈深度。所以上面列表中的第一个条目是所有以 0 作为最深前驱的节点,第二个有一个,第三个有两个,依此类推。在每个列表中,兄弟姐妹的顺序无关紧要,因为它们将被并行处理。
【问题讨论】:
-
BFS,广度优先搜索? en.wikipedia.org/wiki/Breadth-first_search
-
您所要求的似乎对图结构做出了许多假设(例如,从任何节点到任何其他节点最多只有一条路径)。如果将边
[1, 2]添加到图表中,您希望集合是什么? -
我已修改标题以更准确地反映您的问题的意图。希望我没有误会...
-
你能清楚地定义什么是“级别”吗?如果有一条边 (1,2) 和一些其他边 (3,4) 和 (4,2) 怎么办。你想要什么收藏品?是
-
@joel,这样更清楚吗?
标签: python algorithm graph graph-theory networkx