首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >networkx:将集团分解成独特的边

networkx:将集团分解成独特的边
EN

Stack Overflow用户
提问于 2018-01-21 04:47:57
回答 1查看 180关注 0票数 3

我有一本以下形式的字典

代码语言:javascript
运行
复制
{   0: [1, 2, 3, 4, 5]
    1: [6, 2, 3, 4, 5]
    2: [3, 4, 5, 6, 7]
    3: [8, 9]
    ...
}

每个值(未排序列表)都对应于我想要在我的图中诱导的集团。不幸的是,正如您看到的,许多集团共享顶点,这些顶点也是其他集团的一部分。现在,我对这些集团做了一个简单的归纳:

代码语言:javascript
运行
复制
for clique in clique_dict.itervalues(): 
    graph.add_edges_from(combinations(clique, 2))

但这是耗时的,因为许多边缘对已经作为其他派系诱导的一部分在较早的时候被诱导。有没有更有效的方法来诱导这些集团?也许是对这些派系本身进行一些后处理?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-21 04:53:28

如果您准备了一个包含所有唯一边的列表,然后一次添加所有边,则可能会有一些轻微的改进:

代码语言:javascript
运行
复制
edges = set(chain.from_iterable([tuple(sorted(pair)) for pair 
            in combinations(clique, 2)] for clique in clique_dict.values()))
graph.add_edges_from(edges)

添加排序是为了避免像(2,3)和(3,2)这样的反平行边。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48360952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档