Проблема алгоритма: выберите две истории для каждой темы, чтобы одна и та же история никогда не выбиралась для двух разных тем

На моем рабочем месте я наткнулся на следующую проблему, которую меня попросили решить. Решение является предпочтительным, хотя и не обязательно.

Существует база данных с набором историй, и каждая история имеет набор связанных с ней тем. Темы хранятся в отдельной таблице формы (storyid, topicid).

Вопрос в том, как выбрать в идеале 5 тем (или хотя бы 2, если 5 невозможно) так, чтобы в каждой теме было 2 истории (или 1 , если 2 невозможно), которые не повторяются ни в одной из других выбранных тем.Алгоритм также должен возвращать, какие именно «правильные» истории связаны с каждой темой.

Действительно ли это NP-полная проблема, не имеющая эффективного решения, выходящего за рамки простого перечисления всех возможностей, или у нее есть эффективное решение?

Если у него нет эффективного решения, попробуйте его доказать (хотя это не является абсолютно необходимым).

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

16
задан Cœur 6 October 2018 в 13:22
поделиться