Я столкнулся с конкретной проблемой и искал какой-то алгоритм для нее. Решаемая проблема описана ниже.
Допустим, у нас есть комбинации, как показано ниже
1 - 3 - 5
1 - 4 - 5
1 - 8 - 5
2 - 4 - 5
3 - 4 - 5
2 - 4 - 7
Эти комбинации были сгенерированы из заданных наборов, в данном конкретном случае, скажем, из
{1}, {3,4,8}, {5}
{2,3}, {4}, {5} * * тысяча двадцать-один
* * {Тысяча двадцать-дв 2}, {4}, {7} * * тысяча двадцать-три
Что я хочу сделать, так это воссоздать наборы из этих комбинаций. Я знаю, что для этих комбинаций у вас есть более одного решения, например,
1-й раствор
{1}, {3, 4, 8}, {5}
{2, 3}, {4}, {5}
{2}, {4}, {7}
2-й раствор
{1}, {3, 8}, {5}
{1, 2, 3}, {4}, {5}
{2}, {4}, {7}
3-й раствор
{1}, {3, 4, 8}, {5}
{3}, {4}, {5}
{2}, {4}, {5, 7}
Но окончательным (оптимальным) решением будет решение с как можно меньшим набором или случайное решение, если все они эквивалентны с точки зрения количества наборов.
Существуют ли алгоритмы для такой проблемы? Я ценю, если кто-нибудь, кто имел дело с такой проблемой, может дать мне несколько советов.
РЕДАКТИРОВАТЬ: похоже, что я ищу, это разложение n-арного продукта (декартово произведение для N)
РЕДАКТИРОВАТЬ: после дополнительных исследований по этой теме я обнаружил, что проблема известна в «теории графов» как проблема «минимального покрытия клики»
С уважением,
Баз