我正在根据现有边缘制作无向图。
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)]
一样创建对称边,也可以。
答案 0 :(得分:1)
如果您有一种适用于k = 1
情况的算法,并且由于添加更多边而图本身不断增长,您提到的缩放问题不会出现,那么您可以简单地递归使用该算法,将其应用于k = 1
-case的结果就是您的k = 2
-case。