【发布时间】:2020-05-23 08:48:09
【问题描述】:
假设我有一个图表,其图形表示如下:
如您所见,有一个“编织部分”,其中可以采取许多不同的路径,但是,如果您继续前进(至少沿着主轴的一个方向),您总是会到达“辫子”末端的同一点。
此图可以向任一方向延伸很长一段距离,并且沿途有多个任意复杂的辫子。
是否有某种算法能够隔离蓝色圆圈节点,指示“编织”的开始和结束?或者更进一步,只返回包含在这些节点处剪断的辫子的子图?
我无法在 Google 中阐明这个问题,而且我的图形库的文档没有解释它实现的各种算法。
我目前正在使用 Python NetworkX,但如果没有直接实现,我不反对手动实现算法。
我还应该指出,理想情况下,该图可以是定向的,使得所有边都指向主轴的一个方向,但是也可以使用有向图的解决方案会更好。
编辑:这是我根据@kaya3 的回答实现的:
articulation_points = nx.articulation_points(graph)
for node in articulation_points:
if nx.degree(graph, node) > 2:
print(node)
【问题讨论】:
标签: python networkx graph-theory topology