31

Click here to load reader

Greedy Covering

Embed Size (px)

Citation preview

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