networkX中无向图的参数传递闭包

时间:2019-04-06 18:09:40

标签: python networkx graph-theory

我正在根据现有边缘制作无向图。

G = nx.Graph()
edge_list = [(1,2),(2,3), (3,4), (4,5),(5,6)]
G.add_edges_from(edge_list)

现在,我要执行k级参数化的传递闭包,以使k=1意味着将添加以下新边。

new_edge_list = [(1,3),(2,4),(3,5),(4,6)]
G.add_edges_from(new_edge_list)

k=2表示将添加以下新边缘。

new_edge_list = [(1,3),(1,4),(2,4),(2,5),(3,5), (3,6),(4,6)]
G.add_edges_from(new_edge_list)

从本质上讲,这意味着随着我们继续增加k的值,图形G最终将成为集团(即传递闭包)。但是,我想在k的特定级别上获得传递闭包。我可以使用this answer获得完全的传递闭包。但是,我在特定级别的传递闭包方面苦苦挣扎。我可以通过使用adjacency表示形式来实现k=1的传递闭包,但是不能为k=2进行缩放。会有所帮助。

P.S:如果在参数传递闭包期间也像[(1,3),(3,1)]一样创建对称边,也可以。

1 个答案:

答案 0 :(得分:1)

如果您有一种适用于k = 1情况的算法,并且由于添加更多边而图本身不断增长,您提到的缩放问题不会出现,那么您可以简单地递归使用该算法,将其应用于k = 1-case的结果就是您的k = 2-case。