在图中找到“气泡”

时间:2019-05-01 13:40:41

标签: networkx graph-algorithm

enter image description here在游戏中,我们有一个被描述为充满了扇形和边缘的强连通图的宇宙。偶尔会有小口袋,玩家称它们为“气泡”,一小部分节点都通过单个节点访问网络的其余部分。在下图中,只能通过节点855才能访问扇区769、195、733、918和451。如果可以有效地保护855,则那些其他扇区是安全的。图表上的其他节点具有更多的边缘(紫色线),并且在播放器术语中不是“气泡”。

在1000或5000节点的网络中,要找到这些子结构并不容易。但是我怀疑这个想法已经以某种方式在图论中得到了描述,因此很可能可以在networkx中进行搜索。

有人可以提出一种图论方法来系统地找到这样的结构吗?为了清楚起见,该图是有向图,但实际上几乎所有边缘最终都是双向的。边缘未加权。

1 个答案:

答案 0 :(得分:0)

图论对您的“气泡”没有任何定义,但是具有类似的定义-bridges。桥是边缘,移除边缘会增加连接的组件数量。如您所见,这正是您所需要的。 networkx有很多算法可以找到桥梁。奇怪的是,它叫做bridges:)

示例:

import networkx as nx

G = nx.Graph()
G.add_edges_from([
    (1,2),(1,3),(2,3),
    (1,4),(4,5),(5,6),
    (6,7),(7,4)
])
nx.draw(G)
list(nx.bridges(G))
[(1, 4)]

enter image description here