Приближенные алгоритмы Задача о покрытии множествами Алгоритмы на основе ЛП

advertisement
Приближенные алгоритмы
Задача о покрытии множествами
Алгоритмы на основе ЛП
Задача о покрытии множествами
• Дано: множество элементов E={e1,…,en},
набор его подмножеств S = {S1,…, Sm}, Sm  E,
и веса подмножеств w: S → Q+.
• Найти покрытие наименьшего веса.
• S'  S является покрытием, если любой
элемент из U принадлежит хотя бы одному
элементу из S' .
Кратность
• Пусть fi – кратность элемента ei, то есть
число множеств из S, в которые он входит.
• Пусть f = maxi=1,…,n fi.
Задача «Вершинное покрытие»
• Условие. Задан граф G и целое число k.
• Вопрос. Существует ли вершинное
покрытие мощности k?
• Вершинное покрытие это множество
вершин V′  V такое, что каждое ребро
имеет граничную точку в V′ .
Задача линейного программирования
z  x   c1 x1    cn xn  min
a11 x1    a1n xn  b1

am1 x1    amn xn  bm
xi  0 for i  1,  , n.
5
ЦЛПset
(задача о покрытии множествами)
m
w x
minimize
j 1
s.t.
x
j
j
1,
i  1,..., n
x j  0, 1
j  1,..., m
j:ei S j
j
*
Z
Обозначим через IP значение оптимального решения ЦЛП
для некоторого примера задачи о покрытии множествами.
*
Тогда Z IP = OPT, где OPT значение оптимального решения
этого примера задачи о покрытии множествами.
ЛПset
(задача о покрытии множествами)
m
w x
minimize
j 1
s.t.
x
j:ei S j
j
xj  0
1,
j
j
i  1,..., n
j  1,..., m
*
Z
Обозначим через LP значение оптимального решения ЛП.
Любое оптимальное решение задачи ЦЛП является допус*
тимым решением задачи ЛП и имеет значение Z IP .
*
*
 Z IP
 OPT.
Следовательно, Z LP
Алгоритм
«Округление ЛПset»
1) Найти оптимальное решение
ЛП-релаксации.
2) Выбрать все множества Sj,
для которых xj ≥ 1/f.
f-приближение
Теорема 8.1
Алгоритм «Округление ЛП set» является
f-приближенным алгоритмом для задачи
о покрытии множествами.
Доказательство.
• ei  E: (1)   xj ≥ 1/f (ei  Sj)  все элементы покрыты.
• Так как xj ≥ 1/f для всех выбранных S, стоимость
полученного покрытия превышает стоимость дробного
покрытия не больше чем в f раз.
2-приближение
Следствие 8.2
Алгоритм «Округление ЛП set» является
2-приближенным алгоритмом для задачи
о вершинном покрытии.
Точный пример (гиперграф)
V1
V2
V3
Vk
V=V1V2 … Vk
nk гиперребер
Каждое гиперребро соответствует
элементу, вершина – множеству
(nk множеств; стоимость всех 1),
которое содержит инцидентные
элементы-гиперребра.
Прямая и двойственная задачи
n
c x
j 1
j
j
 min
n
s.t.
a x
j 1
ij
x j  0,
j
 bi ,
i  1, , m
j  1, , n
m
b y
i 1
i
i
 max
m
s.t.
a
i 1
ij
yi  ci ,
yi  0,
j  1,, n
i  1, , m
Двойственная программа ДЛП set
(задача о покрытии множествами)
n
y
maximize
s.t.
y
i:ei S j
i
yi  0,
i 1
 wj ,
i
j  1,...,m,
i  1,...,n.
Свойства решений
• Пусть x ― допустимое решение задачи ЛПset .
• Пусть y ― допустимое решение задачи ДЛПset .
n
n
m
m
 y   y x  x  y  x w .
i 1
i
i 1
i
j:ei S j
j
j 1
j
i:ei S j
i
j 1
j
j
Следовательно, любое допустимое решение ДЛПset
не больше оптимального решения ЛПset :
n
*
y

Z
 i LP  OPT .
i 1
1-ая теорема двойственности
Прямая и двойственная к ним задачи либо
одновременно разрешимы, либо одновременно
неразрешимы. При этом в первом случае
значения целевых функций этих задач
совпадают, а во втором случае, по крайней
мере, одна из задач неразрешима в силу
несовместности ее ограничений.
m
n
j 1
i 1
*
*
w
x

y
 j j  i.
Алгоритм
«Округление ДЛПset»
1) Найти оптимальное решение y*
двойственной программы ДЛП set .
2) Выбрать все множества Sj ,
*
y
для которых  i  w j .
i:ei S j
Допустимость
• Лемма 8.3
Пусть S ― набор подмножеств, выбранных
алгоритмом «Округление ДЛПset». Тогда S
является покрытием.
Доказательство (1)
• Пусть существует некоторый непокрытый
элемент ek. Тогда для каждого Sj содержащего
элемент ek должно быть выполнено  yi*  w j .
i:ei S j
• Пусть ε ― наименьшая разность между правой и
левой частью этого неравенства среди всех
ограничений включающих ek,


  min  w j 
j:ek S j


*
y

i .

i:ei S j

Доказательство (2)
• Рассмотрим новое двойственное решение y, в
котором yk  yk*   и все остальные компоненты
решения y равны тем же значениям, что и в y*.
• Тогда y является допустимым двойственным
решением поскольку для всех j таких, что ek  Sj,
*

y

y
 i  i    w j , по выбору ,
i:ei S j
i:ei S j
 yi 
*
y
 i  wj.
а для всех j таких, что ek  Sj, i:e S
i:ei S j
i
j
• Получаем противоречие с оптимальностью y*,
n
n
i 1
i 1
*

y

y
 i  i.
f-приближение
Теорема 8.4
Алгоритм «Округление ДЛПset» является
f-приближенным алгоритмом для задачи
о покрытии множествами.
Доказательство (неформальное)
*
y
Множество Sj выбирается в покрытие, если  i  w j .
i:ei S j
• Можно сказать, что стоимость выбранного
множества покрывается стоимостью yi* каждого
элемента, входящего в это множество.
• Так как каждый элемент входит не более чем
в f множеств, то суммарная стоимость не
m
превосходит величины
f  yi*.
i 1
Доказательство (формальное)
• Пусть S ― набор подмножеств, выбранных
алгоритмом.
*
y
i  wj.
• Так как Sj  S только, если i:e
i S j
• Оценим стоимость покрытия S.
 wj 
S j S '
*
*


y

S

S
'
:
e

S
y
 i  j
i
j
i
n

S j S ' i:ei S j
i 1
n
n
i 1
i 1
  f i yi*  f  yi*  f  OPT .
Свойства решений
n
n
m
m
 y   y x  x  y  x w .
i 1
i
i
i 1
j:ei S j
j
j 1
m
n
j 1
i 1
j
i:ei S j
i
j 1
j
j
*
*
w
x

y
 j j  i.
То есть для оптимальных решений x* и y*
оба неравенства выполняются как равенства.
2-ая теорема двойственности
• Допустимые решения x′ и y′ соответственно
прямой и двойственной задачи оптимальны
тогда и только тогда, когда
m


j : x j  c j   aij yi   0.
i 1


 m

i : yi   aij x j  bi   0.
 i 1

Сравнение решений алгоритмов
«Округление ЛПset» и «Округление ДЛПset »
• Пусть xj* > 0 в некотором оптимальном
решении ЛПset.
• Тогда соответствующее двойственное неравенство для Sj должно выполняться как равенство в
любом оптимальном решении ДЛПset.
• Алгоритм «Округление ЛПset» выбирает Sj в
покрытие S, когда xj* ≥ 1/f >0.
• Но тогда по условию дополняющей нежесткости
алгоритм «Округление ДЛПset » выберет Sj в
покрытие S и, следовательно, S  S .
n
c x
j 1
j
Релаксированные условия
дополняющей нежесткости
 min
 b y  max
n
j
j 1
n
s.t.
a
j 1
ij
x j  bi ,
i  1, , m
i
i
m
s.t.
a
i 1
x j  0,
j  1, , n
ij
yi  ci ,
yi  0,
j  1, , n
i  1, , m
Прямое условие
  1, j,1  j  n : x j  0 
cj

m
  aij yi  c j .
i 1
Двойственное условие
m
  1, i,1  i  m : yi  0  bi   aij x j  bi .
i 1
Соотношение между
целевыми функциями
• Утверждение 8.5
Если x и y прямое и двойственное
допустимые решения, удовлетворяющие
релаксированным условиям дополняющей
нежесткости, то
n
c x
j 1
j
m
j
   bi yi .
i 1
Доказательство Утверждения 8.5
n
c x
j 1
j
 m

     aij yi  x j 
j 1  i 1

primal
j
n
m
 n
 dual
     aij x j  yi    bi yi .
i 1  j 1
i 1

m
Идея прямо-двойственной схемы
• Алгоритм начинает работу с прямого недопустимого решения и с
двойственного допустимого решения. Как правило это тривиальное
решение x = 0 и y = 0.
• Итеративно улучшается допустимость прямого решения и
оптимальность двойственного решения, так чтобы в конце получить
допустимое прямое решение, при котором выполнены
релаксированные условия дополняющей нежесткости для
выбранных α и β.
• При расширении прямое решение всегда остается целочисленным.
• Улучшение прямого и двойственного решения происходит совместно,
то есть текущее прямое решение используется для улучшения
двойственного и наоборот.
• В конце стоимость двойственного решения используется как нижняя
оценка на величину оптимального решения.
α = 1, β = f
Прямое условие
S j  S : x j  0 
y
i:ei S j
Двойственное условие
i : yi  0  1 
Множество S называется строгим, если
i
 wj
x
j:ei S j
y
i:ei S j
i
j
 f
 wj.
Каждый элемент имеющий ненулевое двойственное
значение может быть покрыт не более f раз.
Прямо-двойственный алгоритм
0)
1)
2)
•
•
•
3)
Input (U, Ω, c: Ω → Q+)
x ← 0, y ← 0 .
Until все элементы не покрыты, do
Выбрать непокрытый элемент, например e, и
увеличить ye до тех пор пока какое-либо множество
не станет строгим.
Поместить все строгие множества в покрытие и
обновить x.
Объявить все элементы появляющиеся в этих
множествах «покрытыми».
Output (x)
f-приближение
• Теорема 8.6
Прямо-двойственный алгоритм является
f-приближенным алгоритмом для задачи
о покрытии.
Доказательство Теоремы 8.6
• Алгоритм останавливается когда все элементы покрыты
(допустимость).
• В покрытие выбираются только строгие множества и
значения yi элементов, которые в них входят больше не
изменяются (допустимость и прямое условие).
• Каждый элемент входит не больше чем в f множеств по
условию задачи (двойственное условие).
• Следовательно алгоритм находит допустимое решение и
по утверждению 8.5 является f-приближенным.
Точный пример
1
1
e1
f=n
e2
1
en-1
en
en+1
1+ε
Download