Я хотел бы узнать максимальное количество направленных связанных групп из следующих пар.
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'
.
Я много раз пытался использовать ориентированные графы. Я думаю, что это то, что я хочу найти, имеет конкретное c имя в теории графов, но я действительно не могу его вспомнить. Моя первая попытка была с DFS, и как я могу создать их цепочку, но результат содержит группу, о которой я говорю выше, и я не хочу ее иметь.
Я использую Python.
Все ваши комментарии приветствуются! Заранее спасибо.