[英]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 是:
('creepy', 'sports', 'television', 'movies')
('creepy', 'AskReddit', 'movies', 'television')
('AskReddit', 'boardgames')
('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.