Минимальное количество узлов для достижения всех листьев - PullRequest
0 голосов
/ 18 февраля 2019

Предположим, у меня есть список, который определяет, имеет ли пользователь (AG) доступ администратора к сайту (1-6):

 A: [1,2,3]
 B: [2,3,4]
 C: [3,4,5]
 D: [4,5,6]
 E: [1,2]
 F: [3,4]
 G: [5,6]

Я хотел бы получить некоторые данные с каждого сайта, используяминимальное количество различных учетных данных пользователя.В приведенном выше примере решением было бы использование пользователей A и C.

Я думал о моделировании проблемы для графиков, поэтому список сайтов пользователей будет лесом, где каждый сайт является листом.

Я думал о добавлении рута, который подключается ко всем пользовательским узлам и запускает BFS, но это не дает оптимального решения.Я также думал об использовании union find, и, похоже, он работает в некоторых примерах, которые я запускал, однако я не уверен в правильности своего решения.

Я также рассмотрел использование max-поток для этой проблемы, но это, кажется, не правильное направление.

Я также не думаю, что жадный алгоритм решил бы это: (

Ужасная визуализация:

An awful visualization

...