У меня есть проблема создать минимальное количество наборов, охватывающих весь набор данных.
Проблема имеет область данных и несколько ограничений эксклюзивности. Ограничение эксклюзивности устанавливает, какие данные не должны быть в одном наборе.
Цель состоит в том, чтобы найти минимальное количество наборов. Количество наборов не обязательно должно быть максимально сбалансированным (но было бы неплохо).
Пример 1:
Domain = {1, 2, 3, 4, 5, 6}
Exclusivity = 1!=2, 3!=4, 4!=5, 5!=6,
Answer is two sets: {1, 3, 5}, {2, 4, 6}
Пример 2:
Domain = {1, 2, 3, 4, 5, 6}
Exclusivity = 1!=2, 2!=3, 3!=4, 4!=5
anwser is two sets: {1, 3, 5, 6}, {2, 4}
Пример 3:
Domain = {1, 2, 3, 4, 5}
Exclusivity = 1!=2, 2!=3, 3!=4, 4!=5, 5!=1
answer is three sets : {1, 3}, {2, 4}, {5}
Пример 4:
Domain = {1, 2, 3, 4, 5}
Exclusivity = 1!=2!=3!=4, 4!=5,
answer is four sets : {1, 5}, {2}, {3}, {4}
Знак! = Здесь транзитивен.
Кто-нибудь знает такой алгоритм для эффективного решения этой проблемы. Я не мог вспомнить ни одного алгоритма, который я изучал в школе, который решал бы эту проблему, но это было более 10 лет назад.
Помощь приветствуется.
JT