Создайте минимум количество наборов для покрытия всех данных

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

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

Цель состоит в том, чтобы найти минимальное количество наборов. Количество наборов не обязательно должно быть максимально сбалансированным (но было бы неплохо).

Пример 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

6
задан J.T. 18 July 2011 в 14:36
поделиться