如何解决Networkx:如何将节点一分为二,有效地断开边缘?
如何将无向图中的节点拆分为两个新节点,以便允许通过原始节点的路径的两条边现在成为两个死胡同?我需要将原始节点的属性保留到新节点中。下面是一个例子:
| |
4---1---2---3---5 => 4---1---2 2---3---5
| |
(one graph) (two disjointed graphs)
解决方法
我看不出有办法让同一图中的两个节点具有相同的名称。
这是一个复制节点、重命名并重建边的函数:
def split_node(G,node):
edges = G.edges(node,data=True)
new_edges = []
new_nodes = []
H = G.__class__()
H.add_nodes_from(G.subgraph(node))
for i,(s,t,data) in enumerate(edges):
new_node = '{}_{}'.format(node,i)
I = nx.relabel_nodes(H,{node:new_node})
new_nodes += list(I.nodes(data=True))
new_edges.append((new_node,data))
G.remove_node(node)
G.add_nodes_from(new_nodes)
G.add_edges_from(new_edges)
return G
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。