Greedy Covering

833 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
833
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Greedy Covering

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

×