Greedy Covering
Click here to load reader
-
Upload
stas-fomin -
Category
Documents
-
view
689 -
download
0
Transcript of Greedy Covering
Жадные алгоритмы в задачах о покрытии
Н.Н. Кузюрин С.А. Фомин
10 октября 2008 г.
1 / 31
Приближенный алгоритм с гарантированной точностью
Определение
Алгоритм называется C -приближенным, если при любых исходныхданных он находит допустимое решение со значением целевойфункции, отличающимся от оптимума не более чем в C раз.
2 / 31
Покрытие множества
Задача
«Покрытие множества»a.
Множество X , |X | = m.Семейство подмножеств {S1, . . . ,Sn}, Sj ⊆ X .X = ∪n
j=1Sj (покрытие гарантировано).
Найти минимальное по мощности множество подмножеств,покрывающее X :
|J| → min,
J ⊆ {1, 2, . . . , n},X = ∪j∈JSj .
aSet cover, в англоязычной литературе.
3 / 31
Жадный алгоритм в задаче о покрытии
Выбор на каждомшаге подмножества,покрывающегомаксимальное числоеще непокрытыхэлементов:
4 / 31
Покрытие на каждом шаге
ЛеммаXk — число непокрытых элементов после k-го шага.M — размер минимального покрытия.
Xk+1 ≤ Xk −Xk
M= Xk(1− 1/M). (1)
Доказательство.1 Пусть X непокрытых покрываются минимум M ′ подмножествами.2 Алгоритм за шаг покроет не меньше X
M′ .3 Иначе, оптимальное покрытие должно покрывать меньше M ′ · X
M′
элементов.4 Т.к M ′ ≤ M, получаем доказательство (1).
5 / 31
Покрытие на каждом шаге
ЛеммаXk — число непокрытых элементов после k-го шага.M — размер минимального покрытия.
Xk+1 ≤ Xk −Xk
M= Xk(1− 1/M). (1)
Доказательство.1 Пусть X непокрытых покрываются минимум M ′ подмножествами.2 Алгоритм за шаг покроет не меньше X
M′ .3 Иначе, оптимальное покрытие должно покрывать меньше M ′ · X
M′
элементов.4 Т.к M ′ ≤ M, получаем доказательство (1).
6 / 31
Покрытие на каждом шаге
ЛеммаXk — число непокрытых элементов после k-го шага.M — размер минимального покрытия.
Xk+1 ≤ Xk −Xk
M= Xk(1− 1/M). (1)
Доказательство.1 Пусть X непокрытых покрываются минимум M ′ подмножествами.2 Алгоритм за шаг покроет не меньше X
M′ .3 Иначе, оптимальное покрытие должно покрывать меньше M ′ · X
M′
элементов.4 Т.к M ′ ≤ M, получаем доказательство (1).
7 / 31
Покрытие на каждом шаге
ЛеммаXk — число непокрытых элементов после k-го шага.M — размер минимального покрытия.
Xk+1 ≤ Xk −Xk
M= Xk(1− 1/M). (1)
Доказательство.1 Пусть X непокрытых покрываются минимум M ′ подмножествами.2 Алгоритм за шаг покроет не меньше X
M′ .3 Иначе, оптимальное покрытие должно покрывать меньше M ′ · X
M′
элементов.4 Т.к M ′ ≤ M, получаем доказательство (1).
8 / 31
Покрытие на каждом шаге
ЛеммаXk — число непокрытых элементов после k-го шага.M — размер минимального покрытия.
Xk+1 ≤ Xk −Xk
M= Xk(1− 1/M). (1)
Доказательство.1 Пусть X непокрытых покрываются минимум M ′ подмножествами.2 Алгоритм за шаг покроет не меньше X
M′ .3 Иначе, оптимальное покрытие должно покрывать меньше M ′ · X
M′
элементов.4 Т.к M ′ ≤ M, получаем доказательство (1).
9 / 31
Точность жадного алгоритма: верхняя оценка
ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 1 + ln m раз.
Доказательство.Xi — число непокрытых элементов после i-го шага.M — оптимум.
1 Xk ≤ m(1− 1/M)k ≤ m exp(− kM )
2 Пусть k0 - последний шаг, когда m exp(− k0M ) ≥ 1.
3 Тогда при k1 = k0 + 1 будет Xk1 < 1.4 k1/M ≤ 1 + ln m
10 / 31
Точность жадного алгоритма: верхняя оценка
ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 1 + ln m раз.
Доказательство.Xi — число непокрытых элементов после i-го шага.M — оптимум.
1 Xk ≤ m(1− 1/M)k ≤ m exp(− kM )
2 Пусть k0 - последний шаг, когда m exp(− k0M ) ≥ 1.
3 Тогда при k1 = k0 + 1 будет Xk1 < 1.4 k1/M ≤ 1 + ln m
11 / 31
Точность жадного алгоритма: верхняя оценка
ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 1 + ln m раз.
Доказательство.Xi — число непокрытых элементов после i-го шага.M — оптимум.
1 Xk ≤ m(1− 1/M)k ≤ m exp(− kM )
2 Пусть k0 - последний шаг, когда m exp(− k0M ) ≥ 1.
3 Тогда при k1 = k0 + 1 будет Xk1 < 1.4 k1/M ≤ 1 + ln m
12 / 31
Точность жадного алгоритма: верхняя оценка
ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 1 + ln m раз.
Доказательство.Xi — число непокрытых элементов после i-го шага.M — оптимум.
1 Xk ≤ m(1− 1/M)k ≤ m exp(− kM )
2 Пусть k0 - последний шаг, когда m exp(− k0M ) ≥ 1.
3 Тогда при k1 = k0 + 1 будет Xk1 < 1.4 k1/M ≤ 1 + ln m
13 / 31
Точность жадного алгоритма: верхняя оценка
ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 1 + ln m раз.
Доказательство.Xi — число непокрытых элементов после i-го шага.M — оптимум.
1 Xk ≤ m(1− 1/M)k ≤ m exp(− kM )
2 Пусть k0 - последний шаг, когда m exp(− k0M ) ≥ 1.
3 Тогда при k1 = k0 + 1 будет Xk1 < 1.4 k1/M ≤ 1 + ln m
14 / 31
Точность жадного алгоритма: верхняя оценка
ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 1 + ln m раз.
Доказательство.Xi — число непокрытых элементов после i-го шага.M — оптимум.
1 Xk ≤ m(1− 1/M)k ≤ m exp(− kM )
2 Пусть k0 - последний шаг, когда m exp(− k0M ) ≥ 1.
3 Тогда при k1 = k0 + 1 будет Xk1 < 1.4 k1/M ≤ 1 + ln m
15 / 31
Как обмануть жадный алгоритм? Нижняя оценка.
16 / 31
k-покрытие множества
Задача«K-покрытие»Задано:
Множество X , |X | = m.Семейство подмножеств {S1, . . . ,Sn}, Sj ⊆ X .
Выбрать такие k подмножеств, чтобы мощность их объединения быламаксимальна:
| ∪j∈J Sj | → max,
J ⊆ {1, 2, . . . , n},|J| = k.
17 / 31
Жадный — (1− e−1)-приближенный для «k-покрытия»Доказательство.
Xi — число покрытых элементов после i-го шага.M — оптимум.
Xi+1 ≥ Xi +M − Xi
k=
M
k+ Xi
(1− 1
k
).
Xk ≥ M
k
[1 +
(1− 1
k
)+
(1− 1
k
)2
+ . . . +
(1− 1
k
)k]
=M
k
[1−
(1− 1
k
)k+1
1k
]= M
[1−
(1− 1
k
)k+1]
≥ M
[1− exp
{−k + 1
k
}]≥ M(1− e−1).
18 / 31
Жадный — (1− e−1)-приближенный для «k-покрытия»Доказательство.
Xi — число покрытых элементов после i-го шага.M — оптимум.
Xi+1 ≥ Xi +M − Xi
k=
M
k+ Xi
(1− 1
k
).
Xk ≥ M
k
[1 +
(1− 1
k
)+
(1− 1
k
)2
+ . . . +
(1− 1
k
)k]
=M
k
[1−
(1− 1
k
)k+1
1k
]= M
[1−
(1− 1
k
)k+1]
≥ M
[1− exp
{−k + 1
k
}]≥ M(1− e−1).
19 / 31
Жадный — (1− e−1)-приближенный для «k-покрытия»Доказательство.
Xi — число покрытых элементов после i-го шага.M — оптимум.
Xi+1 ≥ Xi +M − Xi
k=
M
k+ Xi
(1− 1
k
).
Xk ≥ M
k
[1 +
(1− 1
k
)+
(1− 1
k
)2
+ . . . +
(1− 1
k
)k]
=M
k
[1−
(1− 1
k
)k+1
1k
]= M
[1−
(1− 1
k
)k+1]
≥ M
[1− exp
{−k + 1
k
}]≥ M(1− e−1).
20 / 31
Вершинное покрытие
Определение«Вершинное покрытие»a.Для неориентированного графа G = (V , E ) подмножество вершинV ′ ⊆ V называется вершинным покрытием, если каждое ребро из Eсодержит хотя бы одну вершину из V ′.
aВ англоязычной литературе — Vertex Cover.
Задача
«Минимальное вершинное покрытие».Дан неориентированный граф G = (V , E ) (множество вершин V ,множество ребер E ). Найти вершинное покрытие минимальноймощности.
21 / 31
Вершинное покрытие
Определение«Вершинное покрытие»a.Для неориентированного графа G = (V , E ) подмножество вершинV ′ ⊆ V называется вершинным покрытием, если каждое ребро из Eсодержит хотя бы одну вершину из V ′.
aВ англоязычной литературе — Vertex Cover.
Задача
«Минимальное вершинное покрытие».Дан неориентированный граф G = (V , E ) (множество вершин V ,множество ребер E ). Найти вершинное покрытие минимальноймощности.
22 / 31
«Ленивый» алгоритм для вершинного покрытия
C ← ∅while ∃e = (u, v) : непокрытое ребро do
C ← C ∪ {u, v}Пометить «покрытими» все ребраинцидентные u и v .
end whilereturn C
Вершинноепокрытие — зеленое.
23 / 31
Определение
Паросочетаниеa — подмножество ребер графа, такое, что никакиедва ребра из этого подмножества не инцидентны какой-либо однойвершине.
aMatching в англоязычной литературе.
Определение
Совершенное паросочетаниеa — паросочетание, покрывающее всевершины графа.
aPerfect matching в англоязычной литературе.
24 / 31
Определение
Паросочетаниеa — подмножество ребер графа, такое, что никакиедва ребра из этого подмножества не инцидентны какой-либо однойвершине.
aMatching в англоязычной литературе.
Определение
Совершенное паросочетаниеa — паросочетание, покрывающее всевершины графа.
aPerfect matching в англоязычной литературе.
25 / 31
ТеоремаАлгоритм гарантирует точность 2 для задачи «Min Vertex Covering».
Доказательство.1 E ∗ — ребра, «попавшиеся алгоритму».2 E ∗ — совершенное паросочетание.3 |E ∗| = |C |/2
4 OPT ≥ |E ∗|: ∀ вершинное покрытие должно содержать покрайней мере одну вершину для каждого ребра из E ∗.
Получаем:|C | ≤ 2 · OPT .
26 / 31
ТеоремаАлгоритм гарантирует точность 2 для задачи «Min Vertex Covering».
Доказательство.1 E ∗ — ребра, «попавшиеся алгоритму».2 E ∗ — совершенное паросочетание.3 |E ∗| = |C |/2
4 OPT ≥ |E ∗|: ∀ вершинное покрытие должно содержать покрайней мере одну вершину для каждого ребра из E ∗.
Получаем:|C | ≤ 2 · OPT .
27 / 31
ТеоремаАлгоритм гарантирует точность 2 для задачи «Min Vertex Covering».
Доказательство.1 E ∗ — ребра, «попавшиеся алгоритму».2 E ∗ — совершенное паросочетание.3 |E ∗| = |C |/2
4 OPT ≥ |E ∗|: ∀ вершинное покрытие должно содержать покрайней мере одну вершину для каждого ребра из E ∗.
Получаем:|C | ≤ 2 · OPT .
28 / 31
ТеоремаАлгоритм гарантирует точность 2 для задачи «Min Vertex Covering».
Доказательство.1 E ∗ — ребра, «попавшиеся алгоритму».2 E ∗ — совершенное паросочетание.3 |E ∗| = |C |/2
4 OPT ≥ |E ∗|: ∀ вершинное покрытие должно содержать покрайней мере одну вершину для каждого ребра из E ∗.
Получаем:|C | ≤ 2 · OPT .
29 / 31
�Карта памяти� лекции
30 / 31