首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从成对列表中查找所有最大有向连通组

从成对列表中查找所有最大有向连通组
EN

Stack Overflow用户
提问于 2020-05-28 18:34:42
回答 1查看 409关注 0票数 1

我想从下列对中找出最大有向连通群。

代码语言:javascript
复制
pairs = [
    ('creepy', 'sports'), 
    ('AskReddit', 'creepy'),
    ('AskReddit', 'boardgames'), 
    ('AskReddit', 'television'), 
    ('AskReddit', 'movies'), 
    ('AskReddit', 'history'), 
    ('sports', 'television'), 
    ('creepy', 'movies'), 
    ('history', 'television'), 
    ('movies', 'sports'), 
    ('creepy', 'television'), 
    ('movies', 'television')
]

我需要的输出是:

  • 第1组:('creepy', 'sports', 'television', 'movies')
  • 第2组:('creepy', 'AskReddit', 'movies', 'television')
  • 第3组:('AskReddit', 'boardgames')
  • 第4组:('AskReddit', 'history', 'television')

例如,我不希望拥有组('AskReddit', 'history', 'television', 'boardgames'),因为没有从'boardgames''television''history'的定向连接。

我用有向图做了很多尝试。我想这是我想要找到的,在图论中有一个特定的名字,但我真的不记得了。我的第一次尝试是使用DFS,以及如何创建它们的链,但是输出包含我前面提到的组,我不想要它。

我用Python。

欢迎您的所有评论!提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-28 21:23:46

看起来,您想要找到包含图中每个节点的最大集团,其中v的最大团是包含v的最大完整子图。

NetworkX中,我们有nx.find_cliques,它正是这样做的:

代码语言:javascript
复制
G=nx.Graph()
G.add_edges_from(pairs)
max_cliques = list(nx.find_cliques(G))
代码语言:javascript
复制
print(max_cliques)
[['boardgames', 'AskReddit'],
 ['television', 'sports', 'creepy', 'movies'],
 ['television', 'AskReddit', 'history'],
 ['television', 'AskReddit', 'creepy', 'movies']]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62072069

复制
相关文章

相似问题

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