алгоритм возврата для заданного покрытия - PullRequest
1 голос
/ 30 октября 2010

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

Жадный подход почти всегда выбирает больше наборов, чемоптимальное количество комплектов.

Ответы [ 2 ]

2 голосов
/ 30 октября 2010

В этой бумаге для решения задач покрытия используется релаксация линейного программирования.

По сути, релаксация ПО дает хорошие границы и может использоваться для определения решений, которые во многих случаях являются оптимальными.Между прочим, когда я в последний раз смотрел на LP-решатели с открытым исходным кодом (~ 2003), я не был впечатлен (некоторые дали неверные результаты), но, похоже, сейчас есть приличные LP-решатели с открытым исходным кодом.

1 голос
/ 30 октября 2010

Ваша проблема нуждается в небольшом уточнении - кажется, вам дано семейство подмножеств $$ S_1, \ ldots, S_n $$ множества A, такое, что объединение подмножеств равно A, и вы хотите минимальное количество подмножеств, объединение которых по-прежнему равно A.

Основной подход является ветвлением и связан с некоторыми эвристиками. Например, если конкретный элемент A находится только в одном подмножестве $$ S_i $$, то вы должны выбрать $$ S_i $$. Точно так же, если $$ S_k $$ является подмножеством $$ S_j $$, то нет причин рассматривать $$ S_k $$; если элемент $$ a_i $$ находится в каждом подмножестве, в котором находится $$ a_j $$, то вы можете не задумываться над $$ a_i $$.

Для ветвления и связывания вам нужна хорошая ограничивающая эвристика. Нижние границы могут быть получены из независимых множеств (если есть k элементов $$ i_1, \ ldots, i_L $$ в A, таких что каждый, если $$ i_p $$ содержится в $$ A_p $$ и $$ i_q $$ содержится в $$ A_q $$ тогда $$ A_p $$ и $$ A_q $$ не пересекаются). Лучшие нижние границы получаются из релаксации LP, описанной выше.

Система минимизации логики Espresso от Berkeley имеет очень качественный комплект покрывающего двигателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...