【发布时间】:2019-04-06 18:09:39
【问题描述】:
我正在从现有边制作一个无向图。
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)] 一样创建对称边也没关系。
【问题讨论】:
-
您遇到了哪些扩展问题? (如果您有适用于
k = 1-case 的有效算法,您不能重复一遍吗;使用k = 1-closure 的输出作为相同算法的输入,其输出将是k = 2-关闭?) -
天啊!是的....我将通过递归调用获得所需的结果。我相信睡眠不足会影响基本思维!!!谢谢!
-
太棒了。那么请允许我将其添加为答案,以避免将问题标记为仍然未解决。
标签: python networkx graph-theory