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