SlideShare a Scribd company logo
1 of 104
Download to read offline
с/к “Эффективные алгоритмы”
                Лекция 4: Приближенные алгоритмы

                                      А. Куликов

                             Computer Science клуб при ПОМИ
                           http://logic.pdmi.ras.ru/∼infclub/




А. Куликов (CS клуб при ПОМИ)    4. Приближенные алгоритмы      1 / 25
План лекции




1   Задача о взвешенном вершинном покрытии




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   2 / 25
План лекции




1   Задача о взвешенном вершинном покрытии



2   Задача о минимальном множестве представителей




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   2 / 25
План лекции




1   Задача о взвешенном вершинном покрытии



2   Задача о минимальном множестве представителей




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   3 / 25
Задача о вершинном покрытии

Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          4 / 25
Задача о вершинном покрытии

Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          4 / 25
Задача о вершинном покрытии

Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.

      Мы уже знаем очень простой детерминированный
      2-приближенный алгоритм для задачи о вершинном покрытии.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          4 / 25
Задача о вершинном покрытии

Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.

      Мы уже знаем очень простой детерминированный
      2-приближенный алгоритм для задачи о вершинном покрытии.
      Сейчас мы приведем вероятностный 2-приближенный алгоритм.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          4 / 25
Задача о вершинном покрытии

Определение
Задача о вершинном покрытии (vertex cover problem) заключается в
нахождении по данному графу такого минимального множества его
вершин, что для любого ребра графа хотя бы один из его концов
принадлежит этому множеству.

      Мы уже знаем очень простой детерминированный
      2-приближенный алгоритм для задачи о вершинном покрытии.
      Сейчас мы приведем вероятностный 2-приближенный алгоритм.
      Говоря, что вероятностный алгоритм является 2-приближенным,
      мы имеем в виду, что математическое ожидание выдаваемого им
      результата не более чем в два раза хуже оптимального.



А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          4 / 25
Алгоритм


Алгоритм
Rand-Approx-Vertex-Cover(G )




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   5 / 25
Алгоритм


Алгоритм
Rand-Approx-Vertex-Cover(G )
      C =∅




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   5 / 25
Алгоритм


Алгоритм
Rand-Approx-Vertex-Cover(G )
      C =∅
      пока есть непокрытое ребро, выбрать случайно один из его концов
      и добавить его к множеству C




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы         5 / 25
Алгоритм


Алгоритм
Rand-Approx-Vertex-Cover(G )
      C =∅
      пока есть непокрытое ребро, выбрать случайно один из его концов
      и добавить его к множеству C
      вернуть C




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы         5 / 25
Алгоритм


Алгоритм
Rand-Approx-Vertex-Cover(G )
      C =∅
      пока есть непокрытое ребро, выбрать случайно один из его концов
      и добавить его к множеству C
      вернуть C

Лемма
Алгоритм Rand-Approx-Vertex-Cover является 2-приближенным.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы         5 / 25
Доказательство

Доказательство




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   6 / 25
Доказательство

Доказательство
      Пусть Copt — минимальное вершинное покрытие.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   6 / 25
Доказательство

Доказательство
      Пусть Copt — минимальное вершинное покрытие.
      Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
      содержится в Copt .




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы       6 / 25
Доказательство

Доказательство
      Пусть Copt — минимальное вершинное покрытие.
      Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
      содержится в Copt .
      Значит, на каждом шаге алгоритм добавляет в C вершину из Copt
      с вероятностью хотя бы 1/2.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы       6 / 25
Доказательство

Доказательство
      Пусть Copt — минимальное вершинное покрытие.
      Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
      содержится в Copt .
      Значит, на каждом шаге алгоритм добавляет в C вершину из Copt
      с вероятностью хотя бы 1/2.
      Назовем такой шаг успешным.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы       6 / 25
Доказательство

Доказательство
      Пусть Copt — минимальное вершинное покрытие.
      Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
      содержится в Copt .
      Значит, на каждом шаге алгоритм добавляет в C вершину из Copt
      с вероятностью хотя бы 1/2.
      Назовем такой шаг успешным.
      Ясно, что алгоритм может сделать не более |Copt | успешных
      шагов.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          6 / 25
Доказательство

Доказательство
      Пусть Copt — минимальное вершинное покрытие.
      Хотя бы один конец каждого ребра, рассмотренного алгоритмом,
      содержится в Copt .
      Значит, на каждом шаге алгоритм добавляет в C вершину из Copt
      с вероятностью хотя бы 1/2.
      Назовем такой шаг успешным.
      Ясно, что алгоритм может сделать не более |Copt | успешных
      шагов.
      Значит, мат. ожидание общего количества шагов (а это есть |C |)
      не превосходит 2|Copt |.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          6 / 25
Задача о взвешенном вершинном покрытии

Определение




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   7 / 25
Задача о взвешенном вершинном покрытии

Определение
      Дан граф G = (V , E ), в котором каждой вершине v присвоен
      некоторый вес w (v ).




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          7 / 25
Задача о взвешенном вершинном покрытии

Определение
      Дан граф G = (V , E ), в котором каждой вершине v присвоен
      некоторый вес w (v ).
      Задача о взвешенном вершинном покрытии заключается в
      нахождении вершинного покрытия минимального веса.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          7 / 25
Задача о взвешенном вершинном покрытии

Определение
      Дан граф G = (V , E ), в котором каждой вершине v присвоен
      некоторый вес w (v ).
      Задача о взвешенном вершинном покрытии заключается в
      нахождении вершинного покрытия минимального веса.

Замечание




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          7 / 25
Задача о взвешенном вершинном покрытии

Определение
      Дан граф 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
Формулировка в виде задачи целочисленного линейного
программирования


Формулировка в виде задачи целочисленного линейного
программирования
                                         ∑︁
                                   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
Алгоритм
Алгоритм




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   9 / 25
Алгоритм
Алгоритм
      Заменим условие x(v ) ∈ {0, 1} на x(v ) ≥ 0 и решим полученную
      задачу.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          9 / 25
Алгоритм
Алгоритм
      Заменим условие x(v ) ∈ {0, 1} на x(v ) ≥ 0 и решим полученную
      задачу.
      Пусть {^(v )}v ∈V — найденное решение.
             x




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          9 / 25
Алгоритм
Алгоритм
      Заменим условие x(v ) ∈ {0, 1} на x(v ) ≥ 0 и решим полученную
      задачу.
      Пусть {^(v )}v ∈V — найденное решение.
             x
      Зададим тогда такой набор:
                             {︃
                               1, если x (v ) ≥ 1/2
                                       ^
                     x(v ) =
                               0, в противном случае




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          9 / 25
Алгоритм
Алгоритм
      Заменим условие 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
Алгоритм
Алгоритм
      Заменим условие 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
Алгоритм
Алгоритм
      Заменим условие 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
Еще один алгоритм



Алгоритм
Weighted-Vertex-Cover-1(G , w )




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   10 / 25
Еще один алгоритм



Алгоритм
Weighted-Vertex-Cover-1(G , w )
      C =∅




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   10 / 25
Еще один алгоритм



Алгоритм
Weighted-Vertex-Cover-1(G , w )
      C =∅
      пока есть непокрытое ребро (v1 , v2 ), для которого w (v1 ) > 0 и
      w (v2 ) > 0, повторять:




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы                 10 / 25
Еще один алгоритм



Алгоритм
Weighted-Vertex-Cover-1(G , w )
      C =∅
      пока есть непокрытое ребро (v1 , v2 ), для которого w (v1 ) > 0 и
      w (v2 ) > 0, повторять:
            ������ = min{w (v1 ), w (v2 )}




А. Куликов (CS клуб при ПОМИ)    4. Приближенные алгоритмы                10 / 25
Еще один алгоритм



Алгоритм
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
Еще один алгоритм



Алгоритм
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
Еще один алгоритм



Алгоритм
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
Переформулировка

Алгоритм
Weighted-Vertex-Cover-2(G , w )




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   11 / 25
Переформулировка

Алгоритм
Weighted-Vertex-Cover-2(G , w )
      если для каждого ребра (v1 , v2 ) ∈ E либо w (v1 ) = 0, либо
      w (v2 ) = 0, вернуть множество вершин веса 0




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы            11 / 25
Переформулировка

Алгоритм
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
Переформулировка

Алгоритм
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
Переформулировка

Алгоритм
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
Анализ алгоритма

Лемма
Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   12 / 25
Анализ алгоритма

Лемма
Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным.

Доказательство




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   12 / 25
Анализ алгоритма

Лемма
Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным.

Доказательство
      Обозначим через OPT(w ), OPT(w − ������), OPT(������) веса оптимальных
      покрытий с весовыми функциями w , w − ������, ������, соответственно, а
                    w −������  ������
      через Copt , Copt , Copt — сами оптимальные покрытия.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы        12 / 25
Анализ алгоритма

Лемма
Алгоритм 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
Анализ алгоритма

Лемма
Алгоритм 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
Анализ алгоритма

Лемма
Алгоритм 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
Анализ алгоритма

Лемма
Алгоритм 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
Доказательство (продолжение)



Доказательство




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   13 / 25
Доказательство (продолжение)



Доказательство
      В противном случае алгоритм вызывает себя рекурсивно для
      весовой функции w − ������.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы        13 / 25
Доказательство (продолжение)



Доказательство
      В противном случае алгоритм вызывает себя рекурсивно для
      весовой функции w − ������.
      По индукционному предположению мы знаем, что
      (w − ������)(C ) ≤ 2OPT(w − ������).




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы        13 / 25
Доказательство (продолжение)



Доказательство
      В противном случае алгоритм вызывает себя рекурсивно для
      весовой функции w − ������.
      По индукционному предположению мы знаем, что
      (w − ������)(C ) ≤ 2OPT(w − ������).
      Также ������(C ) ≤ 2 min{w (v1 ), w (v2 )} ≤ 2OPT(������).




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы        13 / 25
Доказательство (продолжение)



Доказательство
      В противном случае алгоритм вызывает себя рекурсивно для
      весовой функции 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
Еще один метод


     Исходная                                       Двойственная
                   ∑︁                                                   ∑︁
             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
Алгоритм

Алгоритм




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   15 / 25
Алгоритм

Алгоритм
      положить y (e) = 0 для всех e ∈ E




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   15 / 25
Алгоритм

Алгоритм
      положить y (e) = 0 для всех e ∈ E
      пока есть ребро e = (v1 , v2 ), такое что y (e) можно увеличить,
      увеличить y (e), обратив хотя бы одно их ограничений
       ∑︀
      ( e:v ∈e ≤ w (v )) в равенство




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы                15 / 25
Алгоритм

Алгоритм
      положить y (e) = 0 для всех e ∈ E
      пока есть ребро e = (v1 , v2 ), такое что y (e) можно увеличить,
      увеличить y (e), обратив хотя бы одно их ограничений
       ∑︀
      ( e:v ∈e ≤ w (v )) в равенство
      вернуть множество C , состоящее из всех вершин, для которых
      соотвеьствующие ограничения обращены в равенства

Анализ




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы                15 / 25
Алгоритм

Алгоритм
      положить y (e) = 0 для всех e ∈ E
      пока есть ребро e = (v1 , v2 ), такое что y (e) можно увеличить,
      увеличить y (e), обратив хотя бы одно их ограничений
       ∑︀
      ( e:v ∈e ≤ w (v )) в равенство
      вернуть множество C , состоящее из всех вершин, для которых
      соотвеьствующие ограничения обращены в равенства

Анализ
      ясно, что найденное множество покрытием является




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы                15 / 25
Алгоритм

Алгоритм
      положить 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
План лекции




1   Задача о взвешенном вершинном покрытии



2   Задача о минимальном множестве представителей




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   16 / 25
Задача о минимальном множестве представителей



Определение
Задача о минимальном множестве представителей (hitting set problem)
заключается в нахождении по данному множеству X = {x1 , . . . , xm } и
множеству его подмножеств S1 , . . . , Sn ⊆ X такого множества C ⊆ X ,
что C ∩ Si ̸= ∅ для любого i.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы         17 / 25
Задача о минимальном множестве представителей



Определение
Задача о минимальном множестве представителей (hitting set problem)
заключается в нахождении по данному множеству X = {x1 , . . . , xm } и
множеству его подмножеств S1 , . . . , Sn ⊆ X такого множества C ⊆ X ,
что C ∩ Si ̸= ∅ для любого i.

NP-трудность
NP-трудность легко доказывается сведением от вершинного покрытия.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы         17 / 25
Задача о покрытии множествами




Определение
Задача о покрытии множествами (set cover problem) заключается в
нахождении по данному универсальному множеству U = {u1 , . . . , un } и
множеству его подмножеств S1 , . . . , Sm , в объединении покрывающих
все множество U, минимального набора подмножеств, покрывающего
все множество U и имеющего минимальный возможный вес.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы          18 / 25
Двойственная задача


Двойственность




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   19 / 25
Двойственная задача


Двойственность
      По входу задачи о минимальном множестве представителей
      построим следующий двудольный граф:




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы      19 / 25
Двойственная задача


Двойственность
      По входу задачи о минимальном множестве представителей
      построим следующий двудольный граф:
            слева будут вершины x1 , . . . , xm , справа — S1 , . . . , Sn ;




А. Куликов (CS клуб при ПОМИ)     4. Приближенные алгоритмы                    19 / 25
Двойственная задача


Двойственность
      По входу задачи о минимальном множестве представителей
      построим следующий двудольный граф:
            слева будут вершины x1 , . . . , xm , справа — S1 , . . . , Sn ;
            вершину xi соединяем ребром с вершиной Sj , если xi ∈ Sj .




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы                      19 / 25
Двойственная задача


Двойственность
      По входу задачи о минимальном множестве представителей
      построим следующий двудольный граф:
            слева будут вершины x1 , . . . , xm , справа — S1 , . . . , Sn ;
            вершину xi соединяем ребром с вершиной Sj , если xi ∈ Sj .
      Тогда требуется найти такое минимальное множество вершин в
      левой доли, что любая вершина из правой части имеет соседа в
      этом множестве.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы                      19 / 25
Двойственная задача


Двойственность
      По входу задачи о минимальном множестве представителей
      построим следующий двудольный граф:
            слева будут вершины x1 , . . . , xm , справа — S1 , . . . , Sn ;
            вершину xi соединяем ребром с вершиной Sj , если xi ∈ Sj .
      Тогда требуется найти такое минимальное множество вершин в
      левой доли, что любая вершина из правой части имеет соседа в
      этом множестве.
      Точно такой же граф строится по входу задачи о покрытии
      множествами (слева — подмножества, справа — элементы
      универсального множества).




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы                      19 / 25
Задача линейного программирования
Задача линейного программирования




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   20 / 25
Задача линейного программирования
Задача линейного программирования
      Задача о минимальном множестве представителей легко
      записывается в виде задачи целочисленного линейного
      программирования.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   20 / 25
Задача линейного программирования
Задача линейного программирования
      Задача о минимальном множестве представителей легко
      записывается в виде задачи целочисленного линейного
      программирования.
      Пусть xi = 1, если xi ∈ C , и xi = 0 в противном случае.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы        20 / 25
Задача линейного программирования
Задача линейного программирования
      Задача о минимальном множестве представителей легко
      записывается в виде задачи целочисленного линейного
      программирования.
      Пусть 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
Релаксация

Релаксация




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   21 / 25
Релаксация

Релаксация
      Итак, если x1 , . . . , xn — оптимальное решение для полученной
      задачи, то C = {i|xi = 1} является минимальным множеством
      представителей.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы               21 / 25
Релаксация

Релаксация
      Итак, если x1 , . . . , xn — оптимальное решение для полученной
      задачи, то C = {i|xi = 1} является минимальным множеством
      представителей.
      Заменим условие xi ∈ {0, 1} на условие 0 ≤ xi ≤ 1 и решим
      полученную задачу линейного программирования.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы               21 / 25
Релаксация

Релаксация
      Итак, если x1 , . . . , xn — оптимальное решение для полученной
      задачи, то C = {i|xi = 1} является минимальным множеством
      представителей.
      Заменим условие xi ∈ {0, 1} на условие 0 ≤ xi ≤ 1 и решим
      полученную задачу линейного программирования.
      Пусть x1 , . . . , xm — найденное оптимальное решение.
            ^            ^




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы               21 / 25
Релаксация

Релаксация
      Итак, если x1 , . . . , xn — оптимальное решение для полученной
      задачи, то C = {i|xi = 1} является минимальным множеством
      представителей.
      Заменим условие xi ∈ {0, 1} на условие 0 ≤ xi ≤ 1 и решим
      полученную задачу линейного программирования.
      Пусть x1 , . . . , xm — найденное оптимальное решение.
            ^            ^
                  ∑︀m
      Ясно, что i=1 xi является нижней оценкой на размер
                           ^
      минимального множества представителей Copt .




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы               21 / 25
Релаксация

Релаксация
      Итак, если 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
Релаксация

Релаксация
      Итак, если 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
Оценка вероятности

Оценка вероятности




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   22 / 25
Оценка вероятности

Оценка вероятности
      Конечно, C может и не быть допустимым решением (то есть не
      содержать ни одного представителя какого-то множества Sj ).




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы       22 / 25
Оценка вероятности

Оценка вероятности
      Конечно, C может и не быть допустимым решением (то есть не
      содержать ни одного представителя какого-то множества Sj ).
      Мы хотим оценить сверху вероятность того, что C ∩ Sj = ∅.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы         22 / 25
Оценка вероятности

Оценка вероятности
      Конечно, C может и не быть допустимым решением (то есть не
      содержать ни одного представителя какого-то множества Sj ).
      Мы хотим оценить сверху вероятность того, что C ∩ Sj = ∅.
      Пусть |Sj | = k.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы         22 / 25
Оценка вероятности

Оценка вероятности
      Конечно, C может и не быть допустимым решением (то есть не
      содержать ни одного представителя какого-то множества Sj ).
      Мы хотим оценить сверху вероятность того, что C ∩ Sj = ∅.
      Пусть |Sj | = k.
                           ∑︀
      Мы знаем, что             i∈Sj   xi ≥ 1.
                                       ^




А. Куликов (CS клуб при ПОМИ)          4. Приближенные алгоритмы   22 / 25
Оценка вероятности

Оценка вероятности
      Конечно, 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
Повторение эксперимента


Повторение эксперимента




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   23 / 25
Повторение эксперимента


Повторение эксперимента
      Если взять объединение t = log(2n) таких множеств C , то
      вероятность того, что C не будет содержать ни одного
      представителя множества Sj , будет не более (e −1 )log(2n) = 1/2n.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы              23 / 25
Повторение эксперимента


Повторение эксперимента
      Если взять объединение t = log(2n) таких множеств C , то
      вероятность того, что C не будет содержать ни одного
      представителя множества Sj , будет не более (e −1 )log(2n) = 1/2n.
      Значит, такое объединение с вероятностью хотя бы 1/2 является
      множеством представителей.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы              23 / 25
Повторение эксперимента


Повторение эксперимента
      Если взять объединение 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
Повторение эксперимента


Повторение эксперимента
      Если взять объединение 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
Повторение эксперимента


Повторение эксперимента
      Если взять объединение 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
Что мы узнали за сегодня?


Что мы узнали за сегодня?




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   24 / 25
Что мы узнали за сегодня?


Что мы узнали за сегодня?
      Несколько 2-приближенных алгоритмов для задачи о взвешенном
      вершинном покрытии.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы     24 / 25
Что мы узнали за сегодня?


Что мы узнали за сегодня?
      Несколько 2-приближенных алгоритмов для задачи о взвешенном
      вершинном покрытии.
      log n-приближенный алгоритм для задачи о минимальном
      множестве представителей.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы     24 / 25
Что мы узнали за сегодня?


Что мы узнали за сегодня?
      Несколько 2-приближенных алгоритмов для задачи о взвешенном
      вершинном покрытии.
      log n-приближенный алгоритм для задачи о минимальном
      множестве представителей.
      Некоторые из приближенных алгоритмов являются
      вероятностными. В таком случае оценивается отношение мат.
      ожидания результата к оптимальному результату.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы         24 / 25
Что мы узнали за сегодня?


Что мы узнали за сегодня?
      Несколько 2-приближенных алгоритмов для задачи о взвешенном
      вершинном покрытии.
      log n-приближенный алгоритм для задачи о минимальном
      множестве представителей.
      Некоторые из приближенных алгоритмов являются
      вероятностными. В таком случае оценивается отношение мат.
      ожидания результата к оптимальному результату.
      Рассмотренные алгоритмы находят вещественное решение
      соответствующей задачи линейного программирования, а потом
      некоторым образом строят из него целочисленное решение.




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы         24 / 25
Спасибо за внимание!




А. Куликов (CS клуб при ПОМИ)   4. Приближенные алгоритмы   25 / 25

More Related Content

What's hot

A System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsA System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsIosif Itkin
 
Математическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповМатематическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповetyumentcev
 
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...etyumentcev
 
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципыHappyDev
 
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...Dev2Dev
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Alexey Paznikov
 
20091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture0920091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture09Computer Science Club
 
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL ModelsTMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL ModelsIosif Itkin
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02Computer Science Club
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevIosif Itkin
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08Computer Science Club
 
20071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture0720071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture07Computer Science Club
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Nikolay Grebenshikov
 
A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...Iosif Itkin
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Mikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10Computer Science Club
 
Opredelennyj integral
Opredelennyj integralOpredelennyj integral
Opredelennyj integralDimon4
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06Computer Science Club
 

What's hot (20)

A System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsA System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate Programs
 
Математическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принциповМатематическое обоснование S.O.L.I.D принципов
Математическое обоснование S.O.L.I.D принципов
 
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
математическое обоснование Solid принципов. Конференция dotnetconf (Челябинск...
 
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
2014.12.06 04 Евгений Тюменцев — Откуда появились s.o.l.i.d. принципы
 
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
Математическое обоснование SOLID принципов - Евгений Тюменцев Dev2Dev v2.0 30...
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
 
20091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture0920091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture09
 
Задача SLAM
Задача SLAMЗадача SLAM
Задача SLAM
 
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL ModelsTMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry Zaitsev
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08
 
20071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture0720071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture07
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10
 
Opredelennyj integral
Opredelennyj integralOpredelennyj integral
Opredelennyj integral
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06
 

Viewers also liked

Pairing with the queen
Pairing with the queenPairing with the queen
Pairing with the queenDiego Pacheco
 
10 quy luat cuoc song
10 quy luat cuoc song10 quy luat cuoc song
10 quy luat cuoc songTruong Tho
 
prof. Milan Konvit: Nove medium a clovek
prof. Milan Konvit: Nove medium a clovekprof. Milan Konvit: Nove medium a clovek
prof. Milan Konvit: Nove medium a clovekKISK FF MU
 
Natálie Bartasová (Letní škola 2013)
Natálie Bartasová (Letní škola 2013)Natálie Bartasová (Letní škola 2013)
Natálie Bartasová (Letní škola 2013)KISK FF MU
 
200801 Generating OpenMP and Pthreads code
200801 Generating OpenMP and Pthreads code200801 Generating OpenMP and Pthreads code
200801 Generating OpenMP and Pthreads codeJavier Gonzalez-Sanchez
 
Esos Locos Bajitos...Photographer Natalia Zokonova
Esos Locos Bajitos...Photographer Natalia ZokonovaEsos Locos Bajitos...Photographer Natalia Zokonova
Esos Locos Bajitos...Photographer Natalia Zokonovamaditabalnco
 
Flower Shoes- By Michel Tcherevkoff
Flower Shoes- By Michel TcherevkoffFlower Shoes- By Michel Tcherevkoff
Flower Shoes- By Michel Tcherevkoffmaditabalnco
 
User Experience 2011: Принципы композиции и модульные сетки при проектировани...
User Experience 2011: Принципы композиции и модульные сетки при проектировани...User Experience 2011: Принципы композиции и модульные сетки при проектировани...
User Experience 2011: Принципы композиции и модульные сетки при проектировани...Maria Chaykina
 
Inspirativní metodika pro pořádání oborových akcí
Inspirativní metodika pro pořádání oborových akcíInspirativní metodika pro pořádání oborových akcí
Inspirativní metodika pro pořádání oborových akcíKISK FF MU
 
споры о газовых камерах
споры о газовых камерахспоры о газовых камерах
споры о газовых камерахzalcman96
 
Le tecnologie del social learning e sistemi mobili
Le tecnologie del social learning e sistemi mobiliLe tecnologie del social learning e sistemi mobili
Le tecnologie del social learning e sistemi mobiliPaolo Nesi
 
Politisk kommunikasjon med ny teknologi
Politisk kommunikasjon med ny teknologiPolitisk kommunikasjon med ny teknologi
Politisk kommunikasjon med ny teknologiBente Kalsnes
 
Six Sigma Certification
Six Sigma CertificationSix Sigma Certification
Six Sigma CertificationJuan Burnett
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06Computer Science Club
 

Viewers also liked (20)

Jobs stories
Jobs storiesJobs stories
Jobs stories
 
Pairing with the queen
Pairing with the queenPairing with the queen
Pairing with the queen
 
10 quy luat cuoc song
10 quy luat cuoc song10 quy luat cuoc song
10 quy luat cuoc song
 
prof. Milan Konvit: Nove medium a clovek
prof. Milan Konvit: Nove medium a clovekprof. Milan Konvit: Nove medium a clovek
prof. Milan Konvit: Nove medium a clovek
 
Natálie Bartasová (Letní škola 2013)
Natálie Bartasová (Letní škola 2013)Natálie Bartasová (Letní škola 2013)
Natálie Bartasová (Letní škola 2013)
 
200801 Generating OpenMP and Pthreads code
200801 Generating OpenMP and Pthreads code200801 Generating OpenMP and Pthreads code
200801 Generating OpenMP and Pthreads code
 
Esos Locos Bajitos...Photographer Natalia Zokonova
Esos Locos Bajitos...Photographer Natalia ZokonovaEsos Locos Bajitos...Photographer Natalia Zokonova
Esos Locos Bajitos...Photographer Natalia Zokonova
 
Flower Shoes- By Michel Tcherevkoff
Flower Shoes- By Michel TcherevkoffFlower Shoes- By Michel Tcherevkoff
Flower Shoes- By Michel Tcherevkoff
 
Andres felipe rodriguez
Andres felipe rodriguezAndres felipe rodriguez
Andres felipe rodriguez
 
User Experience 2011: Принципы композиции и модульные сетки при проектировани...
User Experience 2011: Принципы композиции и модульные сетки при проектировани...User Experience 2011: Принципы композиции и модульные сетки при проектировани...
User Experience 2011: Принципы композиции и модульные сетки при проектировани...
 
Inspirativní metodika pro pořádání oborových akcí
Inspirativní metodika pro pořádání oborových akcíInspirativní metodika pro pořádání oborových akcí
Inspirativní metodika pro pořádání oborových akcí
 
споры о газовых камерах
споры о газовых камерахспоры о газовых камерах
споры о газовых камерах
 
Le tecnologie del social learning e sistemi mobili
Le tecnologie del social learning e sistemi mobiliLe tecnologie del social learning e sistemi mobili
Le tecnologie del social learning e sistemi mobili
 
Base De Datos Estampado
Base De Datos EstampadoBase De Datos Estampado
Base De Datos Estampado
 
CPR 196 Certificate Ardmore (1)
CPR 196 Certificate Ardmore (1)CPR 196 Certificate Ardmore (1)
CPR 196 Certificate Ardmore (1)
 
Politisk kommunikasjon med ny teknologi
Politisk kommunikasjon med ny teknologiPolitisk kommunikasjon med ny teknologi
Politisk kommunikasjon med ny teknologi
 
Six Sigma Certification
Six Sigma CertificationSix Sigma Certification
Six Sigma Certification
 
FO Color Pix
FO Color Pix FO Color Pix
FO Color Pix
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06
 
Qr koodit opetuksessa
Qr koodit opetuksessaQr koodit opetuksessa
Qr koodit opetuksessa
 

Similar to 20071014 efficientalgorithms kulikov_lecture04

20091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture0520091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture05Computer Science Club
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15Computer Science Club
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Positive Hack Days
 
20080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture1420080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture14Computer Science Club
 
20080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture1820080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture18Computer Science Club
 
20080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture1320080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture13Computer Science Club
 
20080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture1320080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture13Computer Science Club
 
20071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture1120071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture11Computer Science Club
 
20091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture0420091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture04Computer Science Club
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыsimple_people
 
20080323 efficientalgorithms kulikov_lecture19
20080323 efficientalgorithms kulikov_lecture1920080323 efficientalgorithms kulikov_lecture19
20080323 efficientalgorithms kulikov_lecture19Computer Science Club
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03Computer Science Club
 

Similar to 20071014 efficientalgorithms kulikov_lecture04 (14)

20091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture0520091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture05
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
 
20080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture1420080224 efficientalgorithms kulikov_lecture14
20080224 efficientalgorithms kulikov_lecture14
 
20130224 tsp csclub_spb
20130224 tsp csclub_spb20130224 tsp csclub_spb
20130224 tsp csclub_spb
 
20080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture1820080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture18
 
20080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture1320080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture13
 
20080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture1320080217 efficientalgorithms kulikov_lecture13
20080217 efficientalgorithms kulikov_lecture13
 
20071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture1120071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture11
 
20091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture0420091025 algorithmsfornphardproblems kulikov_lecture04
20091025 algorithmsfornphardproblems kulikov_lecture04
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
алгоритм
алгоритмалгоритм
алгоритм
 
20080323 efficientalgorithms kulikov_lecture19
20080323 efficientalgorithms kulikov_lecture1920080323 efficientalgorithms kulikov_lecture19
20080323 efficientalgorithms kulikov_lecture19
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03
 

More from Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

More from Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 

20071014 efficientalgorithms kulikov_lecture04

  • 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
  • 10. Алгоритм Алгоритм Rand-Approx-Vertex-Cover(G ) А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 5 / 25
  • 11. Алгоритм Алгоритм Rand-Approx-Vertex-Cover(G ) C =∅ А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 5 / 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
  • 15. Доказательство Доказательство А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 6 / 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
  • 28. Алгоритм Алгоритм А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 9 / 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
  • 35. Еще один алгоритм Алгоритм Weighted-Vertex-Cover-1(G , w ) А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 10 / 25
  • 36. Еще один алгоритм Алгоритм Weighted-Vertex-Cover-1(G , w ) C =∅ А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 10 / 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
  • 42. Переформулировка Алгоритм Weighted-Vertex-Cover-2(G , w ) А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 11 / 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
  • 47. Анализ алгоритма Лемма Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным. А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 12 / 25
  • 48. Анализ алгоритма Лемма Алгоритм Weighted-Vertex-Cover-2 является 2-приближенным. Доказательство А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 12 / 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
  • 54. Доказательство (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 13 / 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
  • 60. Алгоритм Алгоритм А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 15 / 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
  • 70. Двойственная задача Двойственность А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 19 / 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
  • 76. Задача линейного программирования Задача линейного программирования А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 20 / 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
  • 80. Релаксация Релаксация А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 21 / 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
  • 87. Оценка вероятности Оценка вероятности А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 22 / 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
  • 93. Повторение эксперимента Повторение эксперимента А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 23 / 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
  • 104. Спасибо за внимание! А. Куликов (CS клуб при ПОМИ) 4. Приближенные алгоритмы 25 / 25