Установить проблему с крышкой - Set cover problem

В установить проблему прикрытия это классический вопрос в комбинаторика, Информатика, исследование операций, и теория сложности. Это один из 21 NP-полная задача Карпа показано как НП-полный в 1972 г.

Это проблема, «изучение которой привело к разработке фундаментальных методов для всей области» аппроксимационные алгоритмы.[1]

Учитывая набор элементов (называется вселенная ) и сборник из наборы, чьи союз равняется вселенной, задача покрытия набора состоит в том, чтобы идентифицировать наименьшую подгруппу чей союз равен вселенной. Например, рассмотрим вселенную и набор наборов . Ясно, что объединение является . Однако мы можем покрыть все элементы следующим меньшим количеством наборов: .

Более формально, учитывая вселенную и семья подмножеств , а крышка это подсемейство множеств, объединение которых . В комплекте покрытие проблема решения, вход - пара и целое число ; вопрос в том, есть ли в комплекте покрытие размера или менее. В комплекте покрытие проблема оптимизации, вход - пара , и задача состоит в том, чтобы найти покрытие множества, использующее наименьшее количество множеств.

Вариант решения покрытия множества: НП-полный, а оптимизация / поисковая версия обложки набора NP-жесткий.[2]

Если каждому набору назначена стоимость, он становится взвешенный установить проблему с крышкой.

Формулировка целочисленной линейной программы

Задачу минимального покрытия можно сформулировать следующим образом целочисленная линейная программа (ILP).[3]

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

Этот ILP принадлежит к более общему классу ILP для покрытие проблем. разрыв целостности этой ПДОДИ не более , так что это расслабление дает фактор- алгоритм аппроксимации для задачи минимального покрытия (где это размер Вселенной).[4]

В оболочке взвешенных наборов наборы имеют веса. Обозначим вес множества к . Тогда целочисленная линейная программа, описывающая взвешенное покрытие множества, идентична приведенной выше, за исключением того, что целевая функция для минимизации равна .

Формулировка набора ударов

Покрытие множества эквивалентно проблема с набором. Это видно из наблюдения, что пример покрытия множества может рассматриваться как произвольный двудольный граф, с наборами, представленными вершинами слева, вселенная, представленная вершинами справа, и ребрами, представляющими включение элементов в наборы. Затем задача состоит в том, чтобы найти подмножество левых вершин с минимальной мощностью, которое покрывает все правые вершины. В задаче о множестве ударов цель состоит в том, чтобы покрыть левые вершины, используя минимальное подмножество правых вершин. Таким образом, переход от одной задачи к другой достигается перестановкой двух наборов вершин.

Жадный алгоритм

Существует жадный алгоритм для полиномиальной аппроксимации покрытия множества, которое выбирает множества по одному правилу: на каждом этапе выбирается множество, которое содержит наибольшее количество непокрытых элементов. Это можно показать[5] что этот алгоритм достигает отношения аппроксимации , куда размер покрываемого набора. Другими словами, он находит покрытие, которое может быть раз больше минимального, где это номер гармоники:

Этот жадный алгоритм фактически достигает отношения приближения куда - набор максимальной мощности . За плотные экземпляры, однако существует -приближающий алгоритм для каждого .[6]

Тесный пример жадного алгоритма с k = 3

Есть стандартный пример, на котором жадный алгоритм достигает коэффициента аппроксимации Вселенная состоит из элементы. Система набора состоит из попарно непересекающиеся множества с размерами соответственно, а также два дополнительных непересекающихся множества , каждый из которых содержит половину элементов из каждого . На этом входе жадный алгоритм берет наборы, именно в таком порядке, а оптимальное решение состоит только из и . Пример такого входа для изображен справа.

Результаты неприемлемости показывают, что жадный алгоритм по сути является наилучшим из возможных алгоритмов полиномиальной аппроксимации для покрытия множества до членов более низкого порядка (см. Результаты неприближаемости ниже) при вероятных предположениях о сложности. Более тщательный анализ жадного алгоритма показывает, что коэффициент аппроксимации точно равен .[7]

Низкочастотные системы

Если каждый элемент встречается не более чем в ж наборов, то решение может быть найдено за полиномиальное время, которое приближает оптимум с точностью до множителя ж с помощью LP релаксация.

Если ограничение заменяется на для всех S в в показанной целочисленной линейной программе над, то она становится (нецелочисленной) линейной программой L. Алгоритм можно описать следующим образом:

  1. Найдите оптимальное решение О для программы L с использованием некоторого полиномиального метода решения линейных программ.
  2. Выбрать все наборы S для которого соответствующая переменная ИксS имеет значение не менее 1 /ж в растворе О.[8]

Результаты неприближаемости

Когда относится к размеру Вселенной, Лунд и Яннакакис (1994) показал, что покрытие множества не может быть аппроксимировано за полиномиальное время с точностью до множителя , пока не НП имеет квазиполиномиальное время алгоритмы. Feige (1998) улучшили эту нижнюю оценку до при тех же предположениях, что по существу соответствует коэффициенту аппроксимации, достигаемому жадным алгоритмом. Раз и Сафра (1997) установил нижнюю границу , куда - некоторая константа при более слабом предположении, что пНПАналогичный результат с более высоким значением было недавно доказано Алон, Мошковиц и Сафра (2006). Dinur & Steurer (2013) показал оптимальную несовместимость, доказав, что она не может быть приближена к пока не пНП.

Крышка утяжеленного набора

Расслабляющий указана целочисленная линейная программа для взвешенного покрытия множества над, можно использовать рандомизированное округление получить -факторное приближение. Соответствующий анализ для невзвешенного покрытия множеств представлен в Рандомизированное округление # Алгоритм рандомизированного округления для заданного покрытия и может быть адаптирован к взвешенному случаю.[9]

Связанные проблемы

  • Набор ударов является эквивалентной переработкой набора обложек.
  • Крышка Vertex является частным случаем набора ударов.
  • Крышка края является частным случаем Set Cover.
  • Обложка геометрического набора является частным случаем Set Cover, когда вселенная представляет собой набор точек в и множества индуцированы пересечением вселенной и геометрических фигур (например, дисков, прямоугольников).
  • Комплект упаковки
  • Проблема максимального покрытия состоит в том, чтобы выбрать не более k наборов, чтобы охватить как можно больше элементов.
  • Доминирующий набор - это задача выбора такого набора вершин (доминирующего множества) в графе, чтобы все остальные вершины были смежными хотя бы с одной вершиной в доминирующем множестве. Было показано, что проблема Доминирующего множества является NP-завершенной за счет сокращения из укрытия Сета.
  • Проблема с точным покрытием состоит в том, чтобы выбрать крышку набора без элемента, входящего более чем в один набор покрытия.

Примечания

  1. ^ Вазирани (2001), п. 15)
  2. ^ Корте и Выген 2012, п. 414.
  3. ^ Вазирани (2001), п. 108)
  4. ^ Вазирани (2001), стр. 110–112).
  5. ^ Чватал, В. Жадная эвристика для задачи о покрытии множеств. Математика исследования операций Vol. 4, No. 3 (август 1979 г.), стр. 233-235
  6. ^ Карпинский и Зеликовский 1998
  7. ^ Славик Петр Тщательный анализ жадного алгоритма установки покрытия. STOC'96, страницы 435-441, Дои:10.1145/237814.237991
  8. ^ Вазирани (2001), стр. 118–119).
  9. ^ Вазирани (2001), Глава 14)

Рекомендации

внешняя ссылка