На моем рабочем месте я наткнулся на следующую проблему, которую меня просят решить. Раствор предпочтительнее, хотя и не обязательно.
Существует база данных с набором историй, и каждая история имеет набор связанных с ней тем. Темы хранятся в отдельной таблице формы (storyid, topicid).
Вопрос заключается в том, как выбрать в идеале 5 тем (или хотя бы 2, если 5 невозможно), так что каждая тема имеет 2 истории (или 1, если 2 невозможно), которые не повторяются ни в одной из других выбранных тем, Алгоритм также должен возвращать то, что именно является "правильными" историями, связанными с каждой темой.
Является ли это фактически NP-полной проблемой, которая не имеет эффективного решения, которое выходит за рамки простого перечисления всех возможностей или имеет эффективное решение?
Если у него нет эффективного решения, попробуйте доказать его (хотя и не обязательно).
Если у него действительно эффективное решение, будьте добры и опубликуйте его.
Большое спасибо,
Антон