Top Banner

Click here to load reader

31

Greedy Covering

Jun 27, 2015

Download

Documents

Stas Fomin
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Greedy Covering

Жадные алгоритмы в задачах о покрытии

Н.Н. Кузюрин С.А. Фомин

10 октября 2008 г.

1 / 31

Page 2: Greedy Covering

Приближенный алгоритм с гарантированной точностью

Определение

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

2 / 31

Page 3: Greedy Covering

Покрытие множества

Задача

«Покрытие множества»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

Page 4: Greedy Covering

Жадный алгоритм в задаче о покрытии

Выбор на каждомшаге подмножества,покрывающегомаксимальное числоеще непокрытыхэлементов:

4 / 31

Page 5: Greedy Covering

Покрытие на каждом шаге

Лемма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

Page 6: Greedy Covering

Покрытие на каждом шаге

Лемма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

Page 7: Greedy Covering

Покрытие на каждом шаге

Лемма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

Page 8: Greedy Covering

Покрытие на каждом шаге

Лемма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

Page 9: Greedy Covering

Покрытие на каждом шаге

Лемма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

Page 10: Greedy Covering

Точность жадного алгоритма: верхняя оценка

ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 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

Page 11: Greedy Covering

Точность жадного алгоритма: верхняя оценка

ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 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

Page 12: Greedy Covering

Точность жадного алгоритма: верхняя оценка

ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 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

Page 13: Greedy Covering

Точность жадного алгоритма: верхняя оценка

ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 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

Page 14: Greedy Covering

Точность жадного алгоритма: верхняя оценка

ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 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

Page 15: Greedy Covering

Точность жадного алгоритма: верхняя оценка

ТеоремаРазмер покрытия, построенного жадным алгоритмом, превосходитминимальное не более чем в 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

Page 16: Greedy Covering

Как обмануть жадный алгоритм? Нижняя оценка.

16 / 31

Page 17: Greedy Covering

k-покрытие множества

Задача«K-покрытие»Задано:

Множество X , |X | = m.Семейство подмножеств {S1, . . . ,Sn}, Sj ⊆ X .

Выбрать такие k подмножеств, чтобы мощность их объединения быламаксимальна:

| ∪j∈J Sj | → max,

J ⊆ {1, 2, . . . , n},|J| = k.

17 / 31

Page 18: Greedy Covering

Жадный — (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

Page 19: Greedy Covering

Жадный — (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

Page 20: Greedy Covering

Жадный — (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

Page 21: Greedy Covering

Вершинное покрытие

Определение«Вершинное покрытие»a.Для неориентированного графа G = (V , E ) подмножество вершинV ′ ⊆ V называется вершинным покрытием, если каждое ребро из Eсодержит хотя бы одну вершину из V ′.

aВ англоязычной литературе — Vertex Cover.

Задача

«Минимальное вершинное покрытие».Дан неориентированный граф G = (V , E ) (множество вершин V ,множество ребер E ). Найти вершинное покрытие минимальноймощности.

21 / 31

Page 22: Greedy Covering

Вершинное покрытие

Определение«Вершинное покрытие»a.Для неориентированного графа G = (V , E ) подмножество вершинV ′ ⊆ V называется вершинным покрытием, если каждое ребро из Eсодержит хотя бы одну вершину из V ′.

aВ англоязычной литературе — Vertex Cover.

Задача

«Минимальное вершинное покрытие».Дан неориентированный граф G = (V , E ) (множество вершин V ,множество ребер E ). Найти вершинное покрытие минимальноймощности.

22 / 31

Page 23: Greedy Covering

«Ленивый» алгоритм для вершинного покрытия

C ← ∅while ∃e = (u, v) : непокрытое ребро do

C ← C ∪ {u, v}Пометить «покрытими» все ребраинцидентные u и v .

end whilereturn C

Вершинноепокрытие — зеленое.

23 / 31

Page 24: Greedy Covering

Определение

Паросочетаниеa — подмножество ребер графа, такое, что никакиедва ребра из этого подмножества не инцидентны какой-либо однойвершине.

aMatching в англоязычной литературе.

Определение

Совершенное паросочетаниеa — паросочетание, покрывающее всевершины графа.

aPerfect matching в англоязычной литературе.

24 / 31

Page 25: Greedy Covering

Определение

Паросочетаниеa — подмножество ребер графа, такое, что никакиедва ребра из этого подмножества не инцидентны какой-либо однойвершине.

aMatching в англоязычной литературе.

Определение

Совершенное паросочетаниеa — паросочетание, покрывающее всевершины графа.

aPerfect matching в англоязычной литературе.

25 / 31

Page 26: Greedy Covering

ТеоремаАлгоритм гарантирует точность 2 для задачи «Min Vertex Covering».

Доказательство.1 E ∗ — ребра, «попавшиеся алгоритму».2 E ∗ — совершенное паросочетание.3 |E ∗| = |C |/2

4 OPT ≥ |E ∗|: ∀ вершинное покрытие должно содержать покрайней мере одну вершину для каждого ребра из E ∗.

Получаем:|C | ≤ 2 · OPT .

26 / 31

Page 27: Greedy Covering

ТеоремаАлгоритм гарантирует точность 2 для задачи «Min Vertex Covering».

Доказательство.1 E ∗ — ребра, «попавшиеся алгоритму».2 E ∗ — совершенное паросочетание.3 |E ∗| = |C |/2

4 OPT ≥ |E ∗|: ∀ вершинное покрытие должно содержать покрайней мере одну вершину для каждого ребра из E ∗.

Получаем:|C | ≤ 2 · OPT .

27 / 31

Page 28: Greedy Covering

ТеоремаАлгоритм гарантирует точность 2 для задачи «Min Vertex Covering».

Доказательство.1 E ∗ — ребра, «попавшиеся алгоритму».2 E ∗ — совершенное паросочетание.3 |E ∗| = |C |/2

4 OPT ≥ |E ∗|: ∀ вершинное покрытие должно содержать покрайней мере одну вершину для каждого ребра из E ∗.

Получаем:|C | ≤ 2 · OPT .

28 / 31

Page 29: Greedy Covering

ТеоремаАлгоритм гарантирует точность 2 для задачи «Min Vertex Covering».

Доказательство.1 E ∗ — ребра, «попавшиеся алгоритму».2 E ∗ — совершенное паросочетание.3 |E ∗| = |C |/2

4 OPT ≥ |E ∗|: ∀ вершинное покрытие должно содержать покрайней мере одну вершину для каждого ребра из E ∗.

Получаем:|C | ≤ 2 · OPT .

29 / 31

Page 30: Greedy Covering

�Карта памяти� лекции

30 / 31

Page 31: Greedy Covering

Интернет поддержка курса

http://discopal.ispras.ru/

Вопросы?

31 / 31