簡體   English   中英

從對列表中找到所有最大的有向連通組

[英]Find all the maximum directed connected groups from a list of pairs

我想從以下對中找出最大的有向連通組。

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')
]

我需要的 output 是:

  • 第 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,我如何創建它們的鏈,但是 output 包含我上面提到的組,我不想擁有它。

我使用 Python。

歡迎您提出所有意見。 提前致謝。

看起來您想找到包含圖中每個節點的最大,其中v 的最大團是包含 v 的最大完整子圖

NetworkX中,我們有nx.find_cliques ,它就是這樣做的:

G=nx.Graph()
G.add_edges_from(pairs)
max_cliques = list(nx.find_cliques(G))

print(max_cliques)
[['boardgames', 'AskReddit'],
 ['television', 'sports', 'creepy', 'movies'],
 ['television', 'AskReddit', 'history'],
 ['television', 'AskReddit', 'creepy', 'movies']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM