Это NP-сложная проблема.Потребуется МНОГО обработки, чтобы убедиться, что у вас действительно есть абсолютное минимальное количество требуемых тегов.
Довольно быстрое и простое решение, которое я бы использовал, -
while there are users left in the pool:
find the tag that represents the most users
add that tag to the list
remove all the users that that tag represents from the pool
If you want, you can then loop through and make sure there aren't any
unnecessary tags //but that probably won't help much
Конечно, существует множество способов размещения тегов, так что это не самый лучший способ и не найдет оптимального решения.Тем не менее, я почти уверен, что это должно быть довольно близко.