networkx - Bridges
최대 1 분 소요
networkx - bridge
- network theory에서 bridge란, “해당 edge가 끊어지면, graph의 connected component가 증가하는 edge”를 말합니다. 즉, edge
(u, v)
가 끊어진다면, node u
, v
는 어떠한 방법으로도 서로 도달할 수가 없는 것이죠.
- 매우 간단해서 코딩하는 것도 쉽고, 또한
chain_decomposition
을 사용해서 더 쉽게 할 수도 있습니다만, 이해가 쉽도록 간단하게 구현한다면 다음과 같습니다.
- 즉, 그냥 edge를 잘랐을 때, connected component가 증가한다면 그건 edge다, 라는 것을 그대로 사용한 것이죠.
import networkx as nx
def bridges(G):
brg_lst = []
Before_num_con_comp = nx.number_connected_components(G)
for e in G.edges():
G_cp = G.copy()
G_cp.remove_edge(*e)
After_num_con_comp = nx.number_connected_components(G_cp)
if After_num_con_comp > Before_num_con_comp:
brg_lst.append(e)
return brg_lst
referencde
댓글남기기