1. с/к “Эффективные алгоритмы”
Лекция 4: Приближенные алгоритмы
А. Куликов
Computer Science клуб при ПОМИ
http://logic.pdmi.ras.ru/∼infclub/
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 1 / 25
2. План лекции
1 Задача о взвешенном вершинном покрытии
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 2 / 25
3. План лекции
1 Задача о взвешенном вершинном покрытии
2 Задача о минимальном множестве представителей
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 2 / 25
4. План лекции
1 Задача о взвешенном вершинном покрытии
2 Задача о минимальном множестве представителей
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 3 / 25
5. Задача о вершинном покрытии
Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 4 / 25
6. Задача о вершинном покрытии
Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 4 / 25
7. Задача о вершинном покрытии
Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.
Мы уже знаем очень простой детерминированный
2-приближенный алгоритм для задачи о вершинном покрытии.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 4 / 25
8. Задача о вершинном покрытии
Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.
Мы уже знаем очень простой детерминированный
2-приближенный алгоритм для задачи о вершинном покрытии.
Сейчас мы приведем вероятностный 2-приближенный алгоритм.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 4 / 25
9. Задача о вершинном покрытии
Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.
Мы уже знаем очень простой детерминированный
2-приближенный алгоритм для задачи о вершинном покрытии.
Сейчас мы приведем вероятностный 2-приближенный алгоритм.
Говоря, что вероятностный алгоритм является 2-приближенным,
мы имеем в виду, что математическое ожидание выдаваемого им
результата не более чем в два раза хуже оптимального.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 4 / 25
12. Алгоритм
Алгоритм
Rand-Approx-Vertex-Cover(G )
C =∅
пока есть непокрытое ребро, выбрать случайно один из его концов
и добавить его к множеству C
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 5 / 25
13. Алгоритм
Алгоритм
Rand-Approx-Vertex-Cover(G )
C =∅
пока есть непокрытое ребро, выбрать случайно один из его концов
и добавить его к множеству C
вернуть C
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 5 / 25
14. Алгоритм
Алгоритм
Rand-Approx-Vertex-Cover(G )
C =∅
пока есть непокрытое ребро, выбрать случайно один из его концов
и добавить его к множеству C
вернуть C
Лемма
Алгоритм Rand-Approx-Vertex-Cover является 2-приближенным.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 5 / 25
16. Доказательство
Доказательство
Пусть Copt — минимальное вершинное покрытие.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 6 / 25
17. Доказательство
Доказательство
Пусть Copt — минимальное вершинное покрытие.
Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
содержится в Copt .
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 6 / 25
18. Доказательство
Доказательство
Пусть Copt — минимальное вершинное покрытие.
Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
содержится в Copt .
Значит, на каждом шаге алгоритм добавляет в C вершину из Copt
с вероятностью хотя бы 1/2.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 6 / 25
19. Доказательство
Доказательство
Пусть Copt — минимальное вершинное покрытие.
Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
содержится в Copt .
Значит, на каждом шаге алгоритм добавляет в C вершину из Copt
с вероятностью хотя бы 1/2.
Назовем такой шаг успешным.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 6 / 25
20. Доказательство
Доказательство
Пусть Copt — минимальное вершинное покрытие.
Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
содержится в Copt .
Значит, на каждом шаге алгоритм добавляет в C вершину из Copt
с вероятностью хотя бы 1/2.
Назовем такой шаг успешным.
Ясно, что алгоритм может сделать не более |Copt | успешных
шагов.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 6 / 25
21. Доказательство
Доказательство
Пусть Copt — минимальное вершинное покрытие.
Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
содержится в Copt .
Значит, на каждом шаге алгоритм добавляет в C вершину из Copt
с вероятностью хотя бы 1/2.
Назовем такой шаг успешным.
Ясно, что алгоритм может сделать не более |Copt | успешных
шагов.
Значит, мат. ожидание общего количества шагов (а это есть |C |)
не превосходит 2|Copt |.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 6 / 25
22. Задача о взвешенном вершинном покрытии
Определение
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 7 / 25
23. Задача о взвешенном вершинном покрытии
Определение
Дан граф G = (V , E ), в котором каждой вершине v присвоен
некоторый вес w (v ).
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 7 / 25
24. Задача о взвешенном вершинном покрытии
Определение
Дан граф G = (V , E ), в котором каждой вершине v присвоен
некоторый вес w (v ).
Задача о взвешенном вершинном покрытии заключается в
нахождении вершинного покрытия минимального веса.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 7 / 25
25. Задача о взвешенном вершинном покрытии
Определение
Дан граф G = (V , E ), в котором каждой вершине v присвоен
некоторый вес w (v ).
Задача о взвешенном вершинном покрытии заключается в
нахождении вершинного покрытия минимального веса.
Замечание
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 7 / 25
26. Задача о взвешенном вершинном покрытии
Определение
Дан граф G = (V , E ), в котором каждой вершине v присвоен
некоторый вес w (v ).
Задача о взвешенном вершинном покрытии заключается в
нахождении вершинного покрытия минимального веса.
Замечание
Можно построить 2-приближенный алгоритм для задачи о
взвешенном вершинном покрытии, модифицировав предыдущий
алгоритм следующим образом: если ребро (u, v ) еще не покрыто,
(︁ )︁−1
1 1 1
то с вероятностью w (u) w (u) + w (v ) добавляем в покрытие
(︁ )︁−1
1 1 1
вершину u, а с вероятностью w (v ) w (u) + w (v ) — вершину v .
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 7 / 25
27. Формулировка в виде задачи целочисленного линейного
программирования
Формулировка в виде задачи целочисленного линейного
программирования
∑︁
min w (v )x(v )
v ∈V
x(v1 ) + x(v2 ) ≥ 1, (v1 , v2 ) ∈ E
x(v ) ∈ {0, 1}, v ∈ V
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 8 / 25
29. Алгоритм
Алгоритм
Заменим условие x(v ) ∈ {0, 1} на x(v ) ≥ 0 и решим полученную
задачу.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 9 / 25
30. Алгоритм
Алгоритм
Заменим условие x(v ) ∈ {0, 1} на x(v ) ≥ 0 и решим полученную
задачу.
Пусть {^(v )}v ∈V — найденное решение.
x
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 9 / 25
31. Алгоритм
Алгоритм
Заменим условие x(v ) ∈ {0, 1} на x(v ) ≥ 0 и решим полученную
задачу.
Пусть {^(v )}v ∈V — найденное решение.
x
Зададим тогда такой набор:
{︃
1, если x (v ) ≥ 1/2
^
x(v ) =
0, в противном случае
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 9 / 25
32. Алгоритм
Алгоритм
Заменим условие x(v ) ∈ {0, 1} на x(v ) ≥ 0 и решим полученную
задачу.
Пусть {^(v )}v ∈V — найденное решение.
x
Зададим тогда такой набор:
{︃
1, если x (v ) ≥ 1/2
^
x(v ) =
0, в противном случае
Положим C = {v ∈ V |x(v ) = 1}.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 9 / 25
33. Алгоритм
Алгоритм
Заменим условие x(v ) ∈ {0, 1} на x(v ) ≥ 0 и решим полученную
задачу.
Пусть {^(v )}v ∈V — найденное решение.
x
Зададим тогда такой набор:
{︃
1, если x (v ) ≥ 1/2
^
x(v ) =
0, в противном случае
Положим C = {v ∈ V |x(v ) = 1}.
Найденное решение является допустимым (то есть покрытием),
поскольку для каждого ребра (u, v ) выполнено неравенство
x (u) + x (v ) ≥ 1, а значит, x (u) ≥ 1/2 или x (v ) ≥ 1/2.
^ ^ ^ ^
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 9 / 25
34. Алгоритм
Алгоритм
Заменим условие x(v ) ∈ {0, 1} на x(v ) ≥ 0 и решим полученную
задачу.
Пусть {^(v )}v ∈V — найденное решение.
x
Зададим тогда такой набор:
{︃
1, если x (v ) ≥ 1/2
^
x(v ) =
0, в противном случае
Положим C = {v ∈ V |x(v ) = 1}.
Найденное решение является допустимым (то есть покрытием),
поскольку для каждого ребра (u, v ) выполнено неравенство
x (u) + x (v ) ≥ 1, а значит, x (u) ≥ 1/2 или x (v ) ≥ 1/2.
^ ^ ^ ^
∑︀ ∑︀
w (C ) = v ∈V w (v )x(v ) ≤ 2 v ∈V w (v )^(v ) ≤ 2w (Copt ).
x
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 9 / 25
37. Еще один алгоритм
Алгоритм
Weighted-Vertex-Cover-1(G , w )
C =∅
пока есть непокрытое ребро (v1 , v2 ), для которого w (v1 ) > 0 и
w (v2 ) > 0, повторять:
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 10 / 25
38. Еще один алгоритм
Алгоритм
Weighted-Vertex-Cover-1(G , w )
C =∅
пока есть непокрытое ребро (v1 , v2 ), для которого w (v1 ) > 0 и
w (v2 ) > 0, повторять:
������ = min{w (v1 ), w (v2 )}
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 10 / 25
39. Еще один алгоритм
Алгоритм
Weighted-Vertex-Cover-1(G , w )
C =∅
пока есть непокрытое ребро (v1 , v2 ), для которого w (v1 ) > 0 и
w (v2 ) > 0, повторять:
������ = min{w (v1 ), w (v2 )}
w (v1 ) = w (v1 ) − ������
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 10 / 25
40. Еще один алгоритм
Алгоритм
Weighted-Vertex-Cover-1(G , w )
C =∅
пока есть непокрытое ребро (v1 , v2 ), для которого w (v1 ) > 0 и
w (v2 ) > 0, повторять:
������ = min{w (v1 ), w (v2 )}
w (v1 ) = w (v1 ) − ������
w (v2 ) = w (v2 ) − ������
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 10 / 25
41. Еще один алгоритм
Алгоритм
Weighted-Vertex-Cover-1(G , w )
C =∅
пока есть непокрытое ребро (v1 , v2 ), для которого w (v1 ) > 0 и
w (v2 ) > 0, повторять:
������ = min{w (v1 ), w (v2 )}
w (v1 ) = w (v1 ) − ������
w (v2 ) = w (v2 ) − ������
вернуть множество всех вершин веса 0
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 10 / 25
43. Переформулировка
Алгоритм
Weighted-Vertex-Cover-2(G , w )
если для каждого ребра (v1 , v2 ) ∈ E либо w (v1 ) = 0, либо
w (v2 ) = 0, вернуть множество вершин веса 0
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 11 / 25
44. Переформулировка
Алгоритм
Weighted-Vertex-Cover-2(G , w )
если для каждого ребра (v1 , v2 ) ∈ E либо w (v1 ) = 0, либо
w (v2 ) = 0, вернуть множество вершин веса 0
в противном случае выберем ребро, для которого w (v1 ) > 0 и
w (v2 ) > 0
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 11 / 25
45. Переформулировка
Алгоритм
Weighted-Vertex-Cover-2(G , w )
если для каждого ребра (v1 , v2 ) ∈ E либо w (v1 ) = 0, либо
w (v2 ) = 0, вернуть множество вершин веса 0
в противном случае выберем ребро, для которого w (v1 ) > 0 и
w (v2 ) > 0
определим весовую функцию ������ так:
{︃
min{w (v1 ), w (v2 )}, если v ∈ {v1 , v2 }
������(v ) =
0, в противном случае
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 11 / 25
46. Переформулировка
Алгоритм
Weighted-Vertex-Cover-2(G , w )
если для каждого ребра (v1 , v2 ) ∈ E либо w (v1 ) = 0, либо
w (v2 ) = 0, вернуть множество вершин веса 0
в противном случае выберем ребро, для которого w (v1 ) > 0 и
w (v2 ) > 0
определим весовую функцию ������ так:
{︃
min{w (v1 ), w (v2 )}, если v ∈ {v1 , v2 }
������(v ) =
0, в противном случае
вернуть Weighted-Vertex-Cover-2(G , w − ������)
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 11 / 25
49. Анализ алгоритма
Лемма
Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным.
Доказательство
Обозначим через OPT(w ), OPT(w − ������), OPT(������) веса оптимальных
покрытий с весовыми функциями w , w − ������, ������, соответственно, а
w −������ ������
через Copt , Copt , Copt — сами оптимальные покрытия.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 12 / 25
50. Анализ алгоритма
Лемма
Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным.
Доказательство
Обозначим через OPT(w ), OPT(w − ������), OPT(������) веса оптимальных
покрытий с весовыми функциями w , w − ������, ������, соответственно, а
w −������ ������
через Copt , Copt , Copt — сами оптимальные покрытия.
w −������ ������
w (Copt ) = (w − ������)(Copt ) + ������(Copt ) ≥ (w − ������)(Coptw −������ ) + ������(Copt )
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 12 / 25
51. Анализ алгоритма
Лемма
Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным.
Доказательство
Обозначим через OPT(w ), OPT(w − ������), OPT(������) веса оптимальных
покрытий с весовыми функциями w , w − ������, ������, соответственно, а
w −������ ������
через Copt , Copt , Copt — сами оптимальные покрытия.
w −������ ������
w (Copt ) = (w − ������)(Copt ) + ������(Copt ) ≥ (w − ������)(Coptw −������ ) + ������(Copt )
OPT(w ) ≥ OPT(w − ������) + OPT(������)
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 12 / 25
52. Анализ алгоритма
Лемма
Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным.
Доказательство
Обозначим через OPT(w ), OPT(w − ������), OPT(������) веса оптимальных
покрытий с весовыми функциями w , w − ������, ������, соответственно, а
w −������ ������
через Copt , Copt , Copt — сами оптимальные покрытия.
w −������ ������
w (Copt ) = (w − ������)(Copt ) + ������(Copt ) ≥ (w − ������)(Coptw −������ ) + ������(Copt )
OPT(w ) ≥ OPT(w − ������) + OPT(������)
∑︀
Доказываем утверждение по индукцией по v ∈V w (v ).
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 12 / 25
53. Анализ алгоритма
Лемма
Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным.
Доказательство
Обозначим через OPT(w ), OPT(w − ������), OPT(������) веса оптимальных
покрытий с весовыми функциями w , w − ������, ������, соответственно, а
w −������ ������
через Copt , Copt , Copt — сами оптимальные покрытия.
w −������ ������
w (Copt ) = (w − ������)(Copt ) + ������(Copt ) ≥ (w − ������)(Coptw −������ ) + ������(Copt )
OPT(w ) ≥ OPT(w − ������) + OPT(������)
∑︀
Доказываем утверждение по индукцией по v ∈V w (v ).
Если есть вершинное покрытие веса 0, то алгоритм обязательно
его найдет.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 12 / 25
55. Доказательство (продолжение)
Доказательство
В противном случае алгоритм вызывает себя рекурсивно для
весовой функции w − ������.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 13 / 25
56. Доказательство (продолжение)
Доказательство
В противном случае алгоритм вызывает себя рекурсивно для
весовой функции w − ������.
По индукционному предположению мы знаем, что
(w − ������)(C ) ≤ 2OPT(w − ������).
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 13 / 25
57. Доказательство (продолжение)
Доказательство
В противном случае алгоритм вызывает себя рекурсивно для
весовой функции w − ������.
По индукционному предположению мы знаем, что
(w − ������)(C ) ≤ 2OPT(w − ������).
Также ������(C ) ≤ 2 min{w (v1 ), w (v2 )} ≤ 2OPT(������).
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 13 / 25
58. Доказательство (продолжение)
Доказательство
В противном случае алгоритм вызывает себя рекурсивно для
весовой функции w − ������.
По индукционному предположению мы знаем, что
(w − ������)(C ) ≤ 2OPT(w − ������).
Также ������(C ) ≤ 2 min{w (v1 ), w (v2 )} ≤ 2OPT(������).
Таким образом, w (C ) ≤ 2(OPT(w − ������) + OPT(������)) ≤ 2OPT (w ).
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 13 / 25
59. Еще один метод
Исходная Двойственная
∑︁ ∑︁
min w (v )x(v ) max y (e)
v ∈V e∈E
∑︁
x(v1 ) + x(v2 ) ≥ 1, (v1 , v2 ) ∈ E y (e) ≤ w (v ), v ∈ V
e:v ∈e
x(v ) ≥ 0, v ∈ V y (e) ≥ 0, e ∈ E
∑︀
Из двойственности мы знаем, что w (Copt ) ≥ e∈E y (e), для любого
допустимого решения y .
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 14 / 25
61. Алгоритм
Алгоритм
положить y (e) = 0 для всех e ∈ E
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 15 / 25
62. Алгоритм
Алгоритм
положить y (e) = 0 для всех e ∈ E
пока есть ребро e = (v1 , v2 ), такое что y (e) можно увеличить,
увеличить y (e), обратив хотя бы одно их ограничений
∑︀
( e:v ∈e ≤ w (v )) в равенство
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 15 / 25
63. Алгоритм
Алгоритм
положить y (e) = 0 для всех e ∈ E
пока есть ребро e = (v1 , v2 ), такое что y (e) можно увеличить,
увеличить y (e), обратив хотя бы одно их ограничений
∑︀
( e:v ∈e ≤ w (v )) в равенство
вернуть множество C , состоящее из всех вершин, для которых
соотвеьствующие ограничения обращены в равенства
Анализ
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 15 / 25
64. Алгоритм
Алгоритм
положить y (e) = 0 для всех e ∈ E
пока есть ребро e = (v1 , v2 ), такое что y (e) можно увеличить,
увеличить y (e), обратив хотя бы одно их ограничений
∑︀
( e:v ∈e ≤ w (v )) в равенство
вернуть множество C , состоящее из всех вершин, для которых
соотвеьствующие ограничения обращены в равенства
Анализ
ясно, что найденное множество покрытием является
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 15 / 25
65. Алгоритм
Алгоритм
положить y (e) = 0 для всех e ∈ E
пока есть ребро e = (v1 , v2 ), такое что y (e) можно увеличить,
увеличить y (e), обратив хотя бы одно их ограничений
∑︀
( e:v ∈e ≤ w (v )) в равенство
вернуть множество C , состоящее из всех вершин, для которых
соотвеьствующие ограничения обращены в равенства
Анализ
ясно, что найденное множество покрытием является
∑︀ ∑︀ ∑︀ ∑︀
w (C ) = v ∈C w (v ) = v ∈C e:v ∈e y (e) ≤ 2 e∈E y (e) ≤
2w (Copt )
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 15 / 25
66. План лекции
1 Задача о взвешенном вершинном покрытии
2 Задача о минимальном множестве представителей
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 16 / 25
67. Задача о минимальном множестве представителей
Определение
Задача о минимальном множестве представителей (hitting set problem)
заключается в нахождении по данному множеству X = {x1 , . . . , xm } и
множеству его подмножеств S1 , . . . , Sn ⊆ X такого множества C ⊆ X ,
что C ∩ Si ̸= ∅ для любого i.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 17 / 25
68. Задача о минимальном множестве представителей
Определение
Задача о минимальном множестве представителей (hitting set problem)
заключается в нахождении по данному множеству X = {x1 , . . . , xm } и
множеству его подмножеств S1 , . . . , Sn ⊆ X такого множества C ⊆ X ,
что C ∩ Si ̸= ∅ для любого i.
NP-трудность
NP-трудность легко доказывается сведением от вершинного покрытия.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 17 / 25
69. Задача о покрытии множествами
Определение
Задача о покрытии множествами (set cover problem) заключается в
нахождении по данному универсальному множеству U = {u1 , . . . , un } и
множеству его подмножеств S1 , . . . , Sm , в объединении покрывающих
все множество U, минимального набора подмножеств, покрывающего
все множество U и имеющего минимальный возможный вес.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 18 / 25
71. Двойственная задача
Двойственность
По входу задачи о минимальном множестве представителей
построим следующий двудольный граф:
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 19 / 25
72. Двойственная задача
Двойственность
По входу задачи о минимальном множестве представителей
построим следующий двудольный граф:
слева будут вершины x1 , . . . , xm , справа — S1 , . . . , Sn ;
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 19 / 25
73. Двойственная задача
Двойственность
По входу задачи о минимальном множестве представителей
построим следующий двудольный граф:
слева будут вершины x1 , . . . , xm , справа — S1 , . . . , Sn ;
вершину xi соединяем ребром с вершиной Sj , если xi ∈ Sj .
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 19 / 25
74. Двойственная задача
Двойственность
По входу задачи о минимальном множестве представителей
построим следующий двудольный граф:
слева будут вершины x1 , . . . , xm , справа — S1 , . . . , Sn ;
вершину xi соединяем ребром с вершиной Sj , если xi ∈ Sj .
Тогда требуется найти такое минимальное множество вершин в
левой доли, что любая вершина из правой части имеет соседа в
этом множестве.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 19 / 25
75. Двойственная задача
Двойственность
По входу задачи о минимальном множестве представителей
построим следующий двудольный граф:
слева будут вершины x1 , . . . , xm , справа — S1 , . . . , Sn ;
вершину xi соединяем ребром с вершиной Sj , если xi ∈ Sj .
Тогда требуется найти такое минимальное множество вершин в
левой доли, что любая вершина из правой части имеет соседа в
этом множестве.
Точно такой же граф строится по входу задачи о покрытии
множествами (слева — подмножества, справа — элементы
универсального множества).
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 19 / 25
77. Задача линейного программирования
Задача линейного программирования
Задача о минимальном множестве представителей легко
записывается в виде задачи целочисленного линейного
программирования.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 20 / 25
78. Задача линейного программирования
Задача линейного программирования
Задача о минимальном множестве представителей легко
записывается в виде задачи целочисленного линейного
программирования.
Пусть xi = 1, если xi ∈ C , и xi = 0 в противном случае.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 20 / 25
79. Задача линейного программирования
Задача линейного программирования
Задача о минимальном множестве представителей легко
записывается в виде задачи целочисленного линейного
программирования.
Пусть xi = 1, если xi ∈ C , и xi = 0 в противном случае.
Тогда задача запишется так:
m
∑︁
min xi
i=1
∑︁
xi ≥ 1, 1 ≤ j ≤ n
i∈Sj
xi ∈ {0, 1}, 1 ≤ i ≤ m
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 20 / 25
81. Релаксация
Релаксация
Итак, если x1 , . . . , xn — оптимальное решение для полученной
задачи, то C = {i|xi = 1} является минимальным множеством
представителей.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 21 / 25
82. Релаксация
Релаксация
Итак, если x1 , . . . , xn — оптимальное решение для полученной
задачи, то C = {i|xi = 1} является минимальным множеством
представителей.
Заменим условие xi ∈ {0, 1} на условие 0 ≤ xi ≤ 1 и решим
полученную задачу линейного программирования.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 21 / 25
83. Релаксация
Релаксация
Итак, если x1 , . . . , xn — оптимальное решение для полученной
задачи, то C = {i|xi = 1} является минимальным множеством
представителей.
Заменим условие xi ∈ {0, 1} на условие 0 ≤ xi ≤ 1 и решим
полученную задачу линейного программирования.
Пусть x1 , . . . , xm — найденное оптимальное решение.
^ ^
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 21 / 25
84. Релаксация
Релаксация
Итак, если x1 , . . . , xn — оптимальное решение для полученной
задачи, то C = {i|xi = 1} является минимальным множеством
представителей.
Заменим условие xi ∈ {0, 1} на условие 0 ≤ xi ≤ 1 и решим
полученную задачу линейного программирования.
Пусть x1 , . . . , xm — найденное оптимальное решение.
^ ^
∑︀m
Ясно, что i=1 xi является нижней оценкой на размер
^
минимального множества представителей Copt .
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 21 / 25
85. Релаксация
Релаксация
Итак, если x1 , . . . , xn — оптимальное решение для полученной
задачи, то C = {i|xi = 1} является минимальным множеством
представителей.
Заменим условие xi ∈ {0, 1} на условие 0 ≤ xi ≤ 1 и решим
полученную задачу линейного программирования.
Пусть x1 , . . . , xm — найденное оптимальное решение.
^ ^
∑︀m
Ясно, что i=1 xi является нижней оценкой на размер
^
минимального множества представителей Copt .
Рассмотрим теперь такой целочисленный набор: присваиваем xi
значение 1 с вероятностью xi .
^
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 21 / 25
86. Релаксация
Релаксация
Итак, если x1 , . . . , xn — оптимальное решение для полученной
задачи, то C = {i|xi = 1} является минимальным множеством
представителей.
Заменим условие xi ∈ {0, 1} на условие 0 ≤ xi ≤ 1 и решим
полученную задачу линейного программирования.
Пусть x1 , . . . , xm — найденное оптимальное решение.
^ ^
∑︀m
Ясно, что i=1 xi является нижней оценкой на размер
^
минимального множества представителей Copt .
Рассмотрим теперь такой целочисленный набор: присваиваем xi
значение 1 с вероятностью xi .
^
Положим C = {i|xi = 1}.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 21 / 25
88. Оценка вероятности
Оценка вероятности
Конечно, C может и не быть допустимым решением (то есть не
содержать ни одного представителя какого-то множества Sj ).
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 22 / 25
89. Оценка вероятности
Оценка вероятности
Конечно, C может и не быть допустимым решением (то есть не
содержать ни одного представителя какого-то множества Sj ).
Мы хотим оценить сверху вероятность того, что C ∩ Sj = ∅.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 22 / 25
90. Оценка вероятности
Оценка вероятности
Конечно, C может и не быть допустимым решением (то есть не
содержать ни одного представителя какого-то множества Sj ).
Мы хотим оценить сверху вероятность того, что C ∩ Sj = ∅.
Пусть |Sj | = k.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 22 / 25
91. Оценка вероятности
Оценка вероятности
Конечно, C может и не быть допустимым решением (то есть не
содержать ни одного представителя какого-то множества Sj ).
Мы хотим оценить сверху вероятность того, что C ∩ Sj = ∅.
Пусть |Sj | = k.
∑︀
Мы знаем, что i∈Sj xi ≥ 1.
^
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 22 / 25
92. Оценка вероятности
Оценка вероятности
Конечно, C может и не быть допустимым решением (то есть не
содержать ни одного представителя какого-то множества Sj ).
Мы хотим оценить сверху вероятность того, что C ∩ Sj = ∅.
Пусть |Sj | = k.
∑︀
Мы знаем, что i∈Sj xi ≥ 1.
^
(︃ ∑︀ )︃k
∏︁ i∈Sj (1 − xi )
^
Pr(C ∩Sj = ∅) = (1−^i ) ≤
x ≤ (1−1/k)k < e −1
k
i∈Sj
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 22 / 25
94. Повторение эксперимента
Повторение эксперимента
Если взять объединение t = log(2n) таких множеств C , то
вероятность того, что C не будет содержать ни одного
представителя множества Sj , будет не более (e −1 )log(2n) = 1/2n.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 23 / 25
95. Повторение эксперимента
Повторение эксперимента
Если взять объединение t = log(2n) таких множеств C , то
вероятность того, что C не будет содержать ни одного
представителя множества Sj , будет не более (e −1 )log(2n) = 1/2n.
Значит, такое объединение с вероятностью хотя бы 1/2 является
множеством представителей.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 23 / 25
96. Повторение эксперимента
Повторение эксперимента
Если взять объединение t = log(2n) таких множеств C , то
вероятность того, что C не будет содержать ни одного
представителя множества Sj , будет не более (e −1 )log(2n) = 1/2n.
Значит, такое объединение с вероятностью хотя бы 1/2 является
множеством представителей.
Выбор t = log(2n) таких множеств C равносилен присваиванию xi
значения 1 с вероятностью 1 − (1 − xi )t .
^
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 23 / 25
97. Повторение эксперимента
Повторение эксперимента
Если взять объединение t = log(2n) таких множеств C , то
вероятность того, что C не будет содержать ни одного
представителя множества Sj , будет не более (e −1 )log(2n) = 1/2n.
Значит, такое объединение с вероятностью хотя бы 1/2 является
множеством представителей.
Выбор t = log(2n) таких множеств C равносилен присваиванию xi
значения 1 с вероятностью 1 − (1 − xi )t .
^
∑︀m
Мат. ожидание размера C равно i=1 xi ≤ Copt .
^
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 23 / 25
98. Повторение эксперимента
Повторение эксперимента
Если взять объединение t = log(2n) таких множеств C , то
вероятность того, что C не будет содержать ни одного
представителя множества Sj , будет не более (e −1 )log(2n) = 1/2n.
Значит, такое объединение с вероятностью хотя бы 1/2 является
множеством представителей.
Выбор t = log(2n) таких множеств C равносилен присваиванию xi
значения 1 с вероятностью 1 − (1 − xi )t .
^
∑︀m
Мат. ожидание размера C равно i=1 xi ≤ Copt .
^
Таким образом, мат. ожидание размера построенного множества
представителей не более чем в log n раз хуже оптимального.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 23 / 25
99. Что мы узнали за сегодня?
Что мы узнали за сегодня?
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 24 / 25
100. Что мы узнали за сегодня?
Что мы узнали за сегодня?
Несколько 2-приближенных алгоритмов для задачи о взвешенном
вершинном покрытии.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 24 / 25
101. Что мы узнали за сегодня?
Что мы узнали за сегодня?
Несколько 2-приближенных алгоритмов для задачи о взвешенном
вершинном покрытии.
log n-приближенный алгоритм для задачи о минимальном
множестве представителей.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 24 / 25
102. Что мы узнали за сегодня?
Что мы узнали за сегодня?
Несколько 2-приближенных алгоритмов для задачи о взвешенном
вершинном покрытии.
log n-приближенный алгоритм для задачи о минимальном
множестве представителей.
Некоторые из приближенных алгоритмов являются
вероятностными. В таком случае оценивается отношение мат.
ожидания результата к оптимальному результату.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 24 / 25
103. Что мы узнали за сегодня?
Что мы узнали за сегодня?
Несколько 2-приближенных алгоритмов для задачи о взвешенном
вершинном покрытии.
log n-приближенный алгоритм для задачи о минимальном
множестве представителей.
Некоторые из приближенных алгоритмов являются
вероятностными. В таком случае оценивается отношение мат.
ожидания результата к оптимальному результату.
Рассмотренные алгоритмы находят вещественное решение
соответствующей задачи линейного программирования, а потом
некоторым образом строят из него целочисленное решение.
А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 24 / 25