Приближенные алгоритмы Задача о покрытии множествами Жадная стратегия Задача о покрытии множествами • Дано: множество элементов E={e1,…,en}, набор его подмножеств S = {S1,…, Sm}, Sm E, и веса подмножеств w: S → Q+. • Найти покрытие наименьшего веса. • S' S является покрытием, если любой элемент из U принадлежит хотя бы одному элементу из S' . Жадная стратегия • Пусть C будет множество элементов уже покрытое на предыдущих итерациях. Тогда αi = c(Si)/|Si – C| называется эффективностью множества Si и равна средней стоимости, с которой покрывается новый элемент. • Назовем ценой элемента e среднюю стоимость с которой он был покрыт. • Эквивалентно, когда множество S выбрано, мы можем понимать, что его стоимость равномерно распределена среди вновь покрытых элементов. Алгоритм Хватала 0) Input (U, S, c: S → Q+) 1) C , Sol 2) While C U do: Найти Si S – Sol, у которого αi=c(Si)/|Si – C| минимально. Sol Sol {Si} C С Si (Si – самое эффективное) price(e) = αi для всех e Si – C 3) Output (Sol) Анализ алгоритма Хватала • Упорядочим элементы из U в порядке, в котором они были покрыты алгоритмом. • Пусть это будет e1,…,en. • Лемма 6.1 Для каждого k {1,…,n}, price(ek) OPT/(n–k+1). Доказательство леммы 2.1 C S–C OPT OPT OPT OPT e1,…,ei –1 ei,…,ek,…,en Доказательство леммы 2.1 an a1 an an a1 a2 b1 b2 bn b1 bn bn Общая эффективность не больше чем OPT/(n – i + 1) OPT/(n – k + 1) Существует Sj S – C с αj OPT/(n – k + 1). price(ek) OPT/(n–k+1). ei,…,ek,…,en Оценка качества алгоритма Хватала Теорема 6.2 Алгоритм Хватала является Hn-приближенным алгоритмом для задачи «Покрытие множествами», где Hn=1+1/2+1/3+…+1/n. Доказательство: 1 1 cSi priceek 1 OPT n 2 SiC k 1 n Точность оценки 1+ ε ●●● 1/n 1/(n–1) 1/(n–2) 1/2 1 Примеры с ограниченной мощностью множеств Sj • Пусть g = maxj| Sj |. * • Напомним, что Z LP ― значение оптимального решения ЛПset. • Покажем, что алгоритм Хватала является Hg-приближенным алгоритмом для задачи «Покрытие множествами». Улучшенная оценка качества алгоритма Хватала Теорема 6.3 Алгоритм Хватала находит решение S такое, что * w H Z j g LP . S j S «Подгонка» двойственного решения • Для доказательства теоремы построим недопустиn мое двойственное решение y такое, что w j yi . S S i 1 • Затем покажем, что решение y=(1/Hg)y является допустимым двойственным решением. n * • Тогда i 1 yi Z LP . • Отсюда j n w y S j S j i 1 n i H g yi H g OPT . i 1 Недопустимое двойственное решение • Пусть алгоритм Хватала добавляет множество Sj на итерации k. Пусть Ŝj ― множество элементов, покрываемых на этой итерации. • Для каждого ei Ŝj положим yi = wj / |Ŝj |. n • Имеем w j yi и w j yi . i:ei Sˆ j • Пусть y 1 y. Hg jI i 1 Допустимость y (1) • Осталось доказать, что y является допустимым решением двойственной задачи, то есть показать, что для каждого подмножества Sj, yi w j . i:ei S j • Пусть алгоритм Хватала сделал l итераций. • Рассмотрим произвольное подмножество Sj. • Пусть ak ― число элементов в этом подмножестве, непокрытых перед итерацией k, то есть a1 = |Sj| и al+1 = 0. Допустимость y (2) • Пусть Ak ― множество элементов из Sj, впервые покрываемых на итерации k. • То есть | Ak | = ak − ak−1. • Пусть на итерации k выбрано множество Sp. • Тогда для каждого элемента ei Ak имеем wp wj yi . H g Sˆ p H g ak wp wj yi . H g Sˆ p H g ak l y y i:ei S j i k 1 i:ei Ak i l wj k 1 H g ak ak ak 1 wj Hg l ak ak 1 k 1 ak 1 1 1 H g k 1 ak ak 1 ak 1 1 wj l wj Sj 1 wj H S wj. j H g i 1 i H g Задача «Максимальная выполнимость» • Дано: Набор f дизъюнкций на булевых переменных x1,…, xn, и веса дизъюнкций w: f → Q+. • Найти назначение истинности на булевых переменных, максимизирующее общий вес выполненных дизъюнкций . • Дизъюнкция c выполнена, если она принимает значение «истина» (c=1). Обозначения • W – общий вес выполненных дизъюнкций. • Для каждой дизъюнкции cf, случайная величина Wc обозначает вес вносимый дизъюнкцией c в W. W Wc , c f EWc wc Prc 1. Вероятностный алгоритм Джонсона 0) Input (x1,…, xn, f, w: f → Q+) 1) Независимо для каждого i: xi← 1 с вероятностью 0.5 и xi← 0, иначе. Назовем полученное назначение τ. 3) Output (τ) Оценка на вес дизъюнкций • Для k ≥ 1, αk=1–2–k. • Лемма 8.5 Если size(c)=k, то E[Wc]=αkwc. • Следствие 8.6 E[W] ≥ ½ OPT. Вычисление условных средних • Пусть a1,…, ai будет назначение истинности на переменных x1,…, xi. • Лемма 8.7 E[W| x1=a1,…, xi=ai] может быть вычислено за время ограниченное полиномом от размера входа. Дерандомизация • Теорема 8.8 Существует такое назначение истинности x1=a1,…, xn=an , что W(a1,…, an ) ≥ E[W] и оно может быть вычислено за полиномиальное время. Доказательство (индуктивный шаг) • E[W| x1=a1,…, xi=ai] = E[W| x1=a1,…, xi=ai, xi+1= True]/2 + + E[W| x1=a1,…, xi=ai, xi+1= False]/2 • Следовательно, либо E[W| x1=a1,…, xi=ai, xi+1= True] ≥ E[W| x1=a1,…, xi=ai], либо E[W| x1=a1,…, xi=ai, xi+1= False] ≥ E[W| x1=a1,…, xi=ai]. • Выберем назначение с большим средним. • Процедура требует n шагов, каждый из которых по лемме 8.7 выполняется за полиномиальное время. Комментарий • Подобная техника может быть использована и в более общем случае, даже если значения переменных зависят друг от друга. Действительно, E[W| x1=a1,…, xi=ai] = E[W| x1=a1,…, xi=ai, xi+1= True] ·Pr[xi+1= True| x1=a1,…, xi=ai] + E[W| x1=a1,…, xi=ai, xi+1= False] ·Pr[xi+1= False| x1=a1,…, xi=ai]. Pr[xi+1= True| x1=a1,…, xi=ai]+Pr[xi+1= False| x1=a1,…, xi=ai]=1. Следовательно, либо E[W| x1=a1,…, xi=ai, xi+1= True] ≥ E[W| x1=a1,…, xi=ai], либо E[W| x1=a1,…, xi=ai, xi+1= False] ≥ E[W| x1=a1,…, xi=ai]. ЦЛП задачи «Максимальная выполнимость» maximize w z c f s.t. c c y 1 y z , iS c i iS c zc 0, 1, yi 0, 1, i c c f i 1, ,n c f ЛП задачи «Максимальная выполнимость» maximize w z c f s.t. c c y 1 y z , iS c i iS c i c 1 zc 0, c f 1 yi 0, i 1, ,n c f Вероятностный алгоритм ЛП 0) Input (x1,…, xn, f, w: f → Q+) 1) Решить ЛП задачи «Максимальная выполнимость». Пусть (y*, z*) обозначает оптимальное решение. 2) Независимо для каждого i: xi← 1 с вероятностью yi*, и xi← 0, иначе. Назовем полученное назначение τ. 3) Output (τ) Оценка на вес дизъюнкций • Для k ≥ 1, βk=1– (1 –1/k)k. • Лемма 8.9 Если size(c)=k, то E[Wc] ≥ βkwcz*(c). Доказательство c x1 xk : k 1 y i k Pr c True 1 1 yi 1 i 1 k i 1 k k y i LP k z * ( c ) 1 1 i 1 1 1 . k k k Доказательство g(z) βk=1– (1 – 1/k)k g(z)=1– (1 – z/k)k g(z)=βk·z 0 1 k z * (c ) Prc True 1 1 k z * (c). k z 1–1/e • Следствие 8.10 E[W] ≥ βkOPT (если размер дизъюнкций ≤ k). EW EWc k wc zc* k OPT c f c f • Теорема 8.11 Дерандомизированный вероятностный алгоритм ЛП является (1–1/e)-приближенным алгоритмом. Идея (¾)-приближенного алгоритма • С равной вероятностью применим один из двух описанных алгоритмов. • Пусть b=0, если мы применили алгоритм Джонсона и b=1, иначе. • Пусть z* обозначает оптимальное решение ЛП. • Лемма 8.12 E[Wc] ≥ (3/4)wcz*(c). E[Wc] ≥ (3/4)wcz*(c) • • • • Пусть size(c)=k. Л 8.5 E[Wc|b=0] = αkwc ≥ αkwc z*(c) Л 8.9 E[Wc|b=1] ≥ βkwc z*(c) E[Wc] = (1/2)(E[Wc|b=0]+ E[Wc|b=1]) ≥ ≥ (1/2)wc z*(c)(αk+βk) • α1+ β1 = α2+ β2 = 3/2 • k ≥ 3, αk+ βk ≥ 7/8 + (1– 1/e) > 3/2 • E[Wc] ≥ (3/4)wcz*(c) Оценка на E[W] 3 3 3 EW EWc wc z * c OPTLP OPT 4 c f 4 4 c f Алгоритм Гоеманса-Вильямсона 0) Input (x1,…, xn, f, w: f → Q+) 1) Решить задачу дерандомизированным вероятностным алгоритмом Джонсона. Назовем полученное назначение τ1. 2) Решить задачу дерандомизированным вероятностным алгоритмом ЛП. Назовем полученное назначение τ2. 4) Output (лучшее из τ1 и τ2) (3/4)-приближенный алгоритм • Теорема 8.11 Алгоритм Гоеманса-Вильямсона (3/4)-приближенный алгоритм для задачи «Максимальная выполнимость».