SlideShare a Scribd company logo
с/к “Эффективные алгоритмы”
                Лекция 3: Приближенные алгоритмы

                                      А. Куликов

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




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




1   Задача о коммивояжере




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




1   Задача о коммивояжере



2   Задача о рюкзаке




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


Определение




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


Определение
      Приближенный алгоритм A имеет относительную оценку точности
      (relative performance guarantee) ������, если для любого входа I
      выполняется неравенство




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


Определение
      Приближенный алгоритм A имеет относительную оценку точности
      (relative performance guarantee) ������, если для любого входа I
      выполняется неравенство
            A(I )/OPT(I ) ≥ ������ для максимизационной задачи;




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


Определение
      Приближенный алгоритм A имеет относительную оценку точности
      (relative performance guarantee) ������, если для любого входа I
      выполняется неравенство
            A(I )/OPT(I ) ≥ ������ для максимизационной задачи;
            A(I )/OPT(I ) ≤ ������ для минимизационной задачи.




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


Определение
      Приближенный алгоритм A имеет относительную оценку точности
      (relative performance guarantee) ������, если для любого входа I
      выполняется неравенство
            A(I )/OPT(I ) ≥ ������ для максимизационной задачи;
            A(I )/OPT(I ) ≤ ������ для минимизационной задачи.
      Такие алгоритмы мы называем ������-приближенными.




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


Определение
      Приближенный алгоритм A имеет относительную оценку точности
      (relative performance guarantee) ������, если для любого входа I
      выполняется неравенство
            A(I )/OPT(I ) ≥ ������ для максимизационной задачи;
            A(I )/OPT(I ) ≤ ������ для минимизационной задачи.
      Такие алгоритмы мы называем ������-приближенными.

Замечание
Для оптимизационных задач ������ ≤ 1, для минимизационных — ������ ≥ 1.
Алгоритм тем лучше, чем ближе ������ к 1.




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы      3 / 26
Полиномиальная приближенная схема

Определение




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

Определение
      Пусть дана максимизационная задача Π.




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

Определение
      Пусть дана максимизационная задача Π.
      Π имеет полиномиальную приближенную схему (polynomial time
      approximation scheme, PTAS), если




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

Определение
      Пусть дана максимизационная задача Π.
      Π имеет полиномиальную приближенную схему (polynomial time
      approximation scheme, PTAS), если
         1   для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для
             Π;




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

Определение
      Пусть дана максимизационная задача Π.
      Π имеет полиномиальную приближенную схему (polynomial time
      approximation scheme, PTAS), если
         1   для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для
             Π;
         2   для любого ������ > 0 время работы такого алгоритма зависит от n
             полиномиально.




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

Определение
      Пусть дана максимизационная задача Π.
      Π имеет полиномиальную приближенную схему (polynomial time
      approximation scheme, PTAS), если
         1   для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для
             Π;
         2   для любого ������ > 0 время работы такого алгоритма зависит от n
             полиномиально.
      Если же время работы такого алгоритма полиномиально не
      только по n, но и по 1/������, то полученная схема называется
      полностью полиномиальной приближенной схемой (fully
      polynomial time approximation scheme, FPTAS).




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

Определение
      Пусть дана максимизационная задача Π.
      Π имеет полиномиальную приближенную схему (polynomial time
      approximation scheme, PTAS), если
         1   для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для
             Π;
         2   для любого ������ > 0 время работы такого алгоритма зависит от n
             полиномиально.
      Если же время работы такого алгоритма полиномиально не
      только по n, но и по 1/������, то полученная схема называется
      полностью полиномиальной приближенной схемой (fully
      polynomial time approximation scheme, FPTAS).
      Определение для минимизационной задачи полностью
      аналогично.


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




1   Задача о коммивояжере



2   Задача о рюкзаке




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

Определение




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

Определение
      Дан полный неориентированный граф G = (V , E ), каждому ребру
      (u, v ) которого приписана некоторая стоимость c(u, v ).




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

Определение
      Дан полный неориентированный граф G = (V , E ), каждому ребру
      (u, v ) которого приписана некоторая стоимость c(u, v ).
      Задача о коммивояжере (travelling salesman problem, TSP)
      заключается в нахождении в графе гамильтонова цикла
      минимальной стоимости.




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

Определение
      Дан полный неориентированный граф G = (V , E ), каждому ребру
      (u, v ) которого приписана некоторая стоимость c(u, v ).
      Задача о коммивояжере (travelling salesman problem, TSP)
      заключается в нахождении в графе гамильтонова цикла
      минимальной стоимости.
      Задача о коммивояжере в метрическом пространстве (metric TSP)
      есть частный случай задачи о коммивояжере, где расстояния
      входного графа удовлетворяют неравенству треугольника:

                       c(u, w ) ≤ c(u, v ) + c(v , w ) ∀u, v , w ∈ V .




А. Куликов (CS клуб при ПОМИ)    3. Приближенные алгоритмы               6 / 26
NP-трудность




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   7 / 26
NP-трудность

      Задача о коммивояжере является NP-трудной.




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   7 / 26
NP-трудность

      Задача о коммивояжере является NP-трудной.
      Тривиальный алгоритм перебирает все возможные пути за время
      n!.




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы      7 / 26
NP-трудность

      Задача о коммивояжере является NP-трудной.
      Тривиальный алгоритм перебирает все возможные пути за время
      n!.
      Наилучший известный на данный момент алгоритм основан на
      динамическом программировании и имеет время работы (а также
      память) 2n .




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы      7 / 26
NP-трудность

      Задача о коммивояжере является NP-трудной.
      Тривиальный алгоритм перебирает все возможные пути за время
      n!.
      Наилучший известный на данный момент алгоритм основан на
      динамическом программировании и имеет время работы (а также
      память) 2n .
      Задача о коммивояжере в метрическом пространстве тоже
      является NP-трудной.




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы      7 / 26
NP-трудность

      Задача о коммивояжере является NP-трудной.
      Тривиальный алгоритм перебирает все возможные пути за время
      n!.
      Наилучший известный на данный момент алгоритм основан на
      динамическом программировании и имеет время работы (а также
      память) 2n .
      Задача о коммивояжере в метрическом пространстве тоже
      является NP-трудной.
            допустим, мы умеем решать эту задачу за полиномиальное время




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы             7 / 26
NP-трудность

      Задача о коммивояжере является NP-трудной.
      Тривиальный алгоритм перебирает все возможные пути за время
      n!.
      Наилучший известный на данный момент алгоритм основан на
      динамическом программировании и имеет время работы (а также
      память) 2n .
      Задача о коммивояжере в метрическом пространстве тоже
      является NP-трудной.
            допустим, мы умеем решать эту задачу за полиномиальное время
            возьмем произвольный граф и присвоим всем его ребрам вес 1




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы             7 / 26
NP-трудность

      Задача о коммивояжере является NP-трудной.
      Тривиальный алгоритм перебирает все возможные пути за время
      n!.
      Наилучший известный на данный момент алгоритм основан на
      динамическом программировании и имеет время работы (а также
      память) 2n .
      Задача о коммивояжере в метрическом пространстве тоже
      является NP-трудной.
            допустим, мы умеем решать эту задачу за полиномиальное время
            возьмем произвольный граф и присвоим всем его ребрам вес 1
            между любыми двумя не соединенными ребром вершинами
            добавим ребро веса 2




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы             7 / 26
NP-трудность

      Задача о коммивояжере является NP-трудной.
      Тривиальный алгоритм перебирает все возможные пути за время
      n!.
      Наилучший известный на данный момент алгоритм основан на
      динамическом программировании и имеет время работы (а также
      память) 2n .
      Задача о коммивояжере в метрическом пространстве тоже
      является NP-трудной.
            допустим, мы умеем решать эту задачу за полиномиальное время
            возьмем произвольный граф и присвоим всем его ребрам вес 1
            между любыми двумя не соединенными ребром вершинами
            добавим ребро веса 2
            тогда построение минимального гамильтонова цикла в полученном
            графе эквивалентно ответу на вопрос, существует ли в исходном
            графе гамильтонов цикл


А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы             7 / 26
2-оптимальный алгоритм



Алгоритм
Approx-TSP(G )




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   8 / 26
2-оптимальный алгоритм



Алгоритм
Approx-TSP(G )
      строим минимальное остовное дерево T графа G




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   8 / 26
2-оптимальный алгоритм



Алгоритм
Approx-TSP(G )
      строим минимальное остовное дерево T графа G
      продублируем каждое ребро дерева T и в полученном графе
      найдем эйлеров цикл




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы       8 / 26
2-оптимальный алгоритм



Алгоритм
Approx-TSP(G )
      строим минимальное остовное дерево T графа G
      продублируем каждое ребро дерева T и в полученном графе
      найдем эйлеров цикл
      выкинем из полученного цикла все повторения вершин и вернем
      полученный цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
                                                                        e

                                                            b       f       g

                                                   c

                                                                h




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g

                                                   c

                                                                h




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл




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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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


     Алгоритм
     Approx-TSP(G )                                         a       d
           строим минимальное
                                                                        e
           остовное дерево T
           графа G                                          b       f       g
           продублируем каждое
           ребро дерева T и в                      c
           полученном графе
                                                                h
           найдем эйлеров цикл
           выкинем из полученного
           цикла все повторения
           вершин и вернем
           полученный цикл

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

Теорема
Алгоритм Approx-TSP является 2-приближенным.




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

Теорема
Алгоритм Approx-TSP является 2-приближенным.

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




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

Теорема
Алгоритм Approx-TSP является 2-приближенным.

Доказательство
      пусть WT — вес минимального остовного дерева, а Wopt — вес
      оптимального гамильтонова цикла




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

Теорема
Алгоритм Approx-TSP является 2-приближенным.

Доказательство
      пусть WT — вес минимального остовного дерева, а Wopt — вес
      оптимального гамильтонова цикла
      WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва
      цикла получается остовное дерево




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

Теорема
Алгоритм Approx-TSP является 2-приближенным.

Доказательство
      пусть WT — вес минимального остовного дерева, а Wopt — вес
      оптимального гамильтонова цикла
      WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва
      цикла получается остовное дерево
      каждое ребро построенного гамильтонова цикла заменяет
      какой-то путь эйлерова цикла, длина которого по неравенству
      треугольника не менее длины этого ребра




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

Теорема
Алгоритм Approx-TSP является 2-приближенным.

Доказательство
      пусть WT — вес минимального остовного дерева, а Wopt — вес
      оптимального гамильтонова цикла
      WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва
      цикла получается остовное дерево
      каждое ребро построенного гамильтонова цикла заменяет
      какой-то путь эйлерова цикла, длина которого по неравенству
      треугольника не менее длины этого ребра
      значит, длина найденного пути не превосходит 2WT , а
      следовательно, и 2Wopt


А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы           10 / 26
3/2-оптимальный алгоритм


Алгоритм
Approx-TSP-Improved(G )




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   11 / 26
3/2-оптимальный алгоритм


Алгоритм
Approx-TSP-Improved(G )
      строим минимальное остовное дерево T графа G




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   11 / 26
3/2-оптимальный алгоритм


Алгоритм
Approx-TSP-Improved(G )
      строим минимальное остовное дерево T графа G
      найдем минимальное полное паросочетание всех вершин дерева T
      нечетной степени




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы      11 / 26
3/2-оптимальный алгоритм


Алгоритм
Approx-TSP-Improved(G )
      строим минимальное остовное дерево T графа G
      найдем минимальное полное паросочетание всех вершин дерева T
      нечетной степени
      добавим найденные ребра в дерево T и найдем в полученном
      графе эйлеров цикл




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы        11 / 26
3/2-оптимальный алгоритм


Алгоритм
Approx-TSP-Improved(G )
      строим минимальное остовное дерево T графа G
      найдем минимальное полное паросочетание всех вершин дерева T
      нечетной степени
      добавим найденные ребра в дерево T и найдем в полученном
      графе эйлеров цикл
      выкинем из полученного цикла все повторения вершин и вернем
      полученный цикл




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы        11 / 26
О чем вы забыли меня спросить?




      О чем вы забыли меня спросить?




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   12 / 26
О чем вы забыли меня спросить?




      О том, как искать минимальное полное паросочетание в графе.




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы       12 / 26
О чем вы забыли меня спросить?




      О том, как искать минимальное полное паросочетание в графе.
      Давайте пока просто поверим в то, что оно находится за
      полиномиальное время.




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы       12 / 26
Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   13 / 26
Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.

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




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   13 / 26
Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.

Доказательство
      как и в предыдущем доказательстве, вес построенного цикла не
      провосходит WT + WP , где WP — вес минимального
      паросочетания вершин нечетной степени дерева T




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы        13 / 26
Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.

Доказательство
      как и в предыдущем доказательстве, вес построенного цикла не
      провосходит WT + WP , где WP — вес минимального
      паросочетания вершин нечетной степени дерева T
      нужно показать, что WP ≤ Wopt /2




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы        13 / 26
Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.

Доказательство
      как и в предыдущем доказательстве, вес построенного цикла не
      провосходит WT + WP , где WP — вес минимального
      паросочетания вершин нечетной степени дерева T
      нужно показать, что WP ≤ Wopt /2
      обозначим через A множество всех вершин нечетной степени
      дерева T




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы        13 / 26
Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.

Доказательство
      как и в предыдущем доказательстве, вес построенного цикла не
      провосходит WT + WP , где WP — вес минимального
      паросочетания вершин нечетной степени дерева T
      нужно показать, что WP ≤ Wopt /2
      обозначим через A множество всех вершин нечетной степени
      дерева T
      рассмотрим такой гамильтонов цикл на вершинах множества A:
      вершины множества A в нем будут встречаться в такой
      последовательности, в какой они идут в оптимальном
      гамильтонов цикле графа G

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



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




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



Доказательство
      важно отметить, что нам не нужно строить такой цикл; нам важен
      лишь факт его существования




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



Доказательство
      важно отметить, что нам не нужно строить такой цикл; нам важен
      лишь факт его существования
      разбив вершины только что построенного цикла на четные и
      нечетные, мы получим два паросочетания




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



Доказательство
      важно отметить, что нам не нужно строить такой цикл; нам важен
      лишь факт его существования
      разбив вершины только что построенного цикла на четные и
      нечетные, мы получим два паросочетания
      вес хотя бы одного из них будет не более Wopt /2




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



Доказательство
      важно отметить, что нам не нужно строить такой цикл; нам важен
      лишь факт его существования
      разбив вершины только что построенного цикла на четные и
      нечетные, мы получим два паросочетания
      вес хотя бы одного из них будет не более Wopt /2
      значит, и вес минимального паросочетания не превосходит
      Wopt /2




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы        14 / 26
Известные оценки



Факт




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



Факт
                                     117
      Если P ̸= NP, то не существует 116 -приближенного алгоритма для
      задачи о коммивояжере в метрическом пространстве.




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



Факт
                                     117
      Если P ̸= NP, то не существует 116 -приближенного алгоритма для
      задачи о коммивояжере в метрическом пространстве.
      3/2 — лучшее известное приближение для задачи о
      коммивояжере в метрическом пространстве.




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



Факт
                                     117
      Если P ̸= NP, то не существует 116 -приближенного алгоритма для
      задачи о коммивояжере в метрическом пространстве.
      3/2 — лучшее известное приближение для задачи о
      коммивояжере в метрическом пространстве.
      Для случая, когда все ребра имеют вес 1 или 2, известен
      5/6-приближенный алгоритм.




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы        15 / 26
Неприближаемость задачи о коммивояжере

Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   16 / 26
Неприближаемость задачи о коммивояжере

Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.

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




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   16 / 26
Неприближаемость задачи о коммивояжере

Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.

Доказательство
      предположим, что такой алгоритм все-таки существует




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   16 / 26
Неприближаемость задачи о коммивояжере

Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.

Доказательство
      предположим, что такой алгоритм все-таки существует
      возьмем произвольный граф и присвоим всем его ребрам вес 1




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы      16 / 26
Неприближаемость задачи о коммивояжере

Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.

Доказательство
      предположим, что такой алгоритм все-таки существует
      возьмем произвольный граф и присвоим всем его ребрам вес 1
      между любыми двумя не соединенными ребром вершинами
      добавим ребро веса cn + 1




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы      16 / 26
Неприближаемость задачи о коммивояжере

Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.

Доказательство
      предположим, что такой алгоритм все-таки существует
      возьмем произвольный граф и присвоим всем его ребрам вес 1
      между любыми двумя не соединенными ребром вершинами
      добавим ребро веса cn + 1
      заметим теперь, что если в исходном графе существует
      гамильтонов цикл, то в новом графе существует гамильтонов
      цикл веса n



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


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




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


Доказательство
      если же такого цикла в исходном графе нет, то самый дешевый
      цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc




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


Доказательство
      если же такого цикла в исходном графе нет, то самый дешевый
      цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc
      таким образом, с помощью ������(n)-приближенного алгоритма для
      задачи о коммивояжере мы можем понять, стоимость
      оптимального цикла в построенном графе превосходит n или нет




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


Доказательство
      если же такого цикла в исходном графе нет, то самый дешевый
      цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc
      таким образом, с помощью ������(n)-приближенного алгоритма для
      задачи о коммивояжере мы можем понять, стоимость
      оптимального цикла в построенном графе превосходит n или нет
      а это позволит нам понять (за полиномиальное время!), есть в
      исходном графе гамильтонов цикл или нет




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


Доказательство
      если же такого цикла в исходном графе нет, то самый дешевый
      цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc
      таким образом, с помощью ������(n)-приближенного алгоритма для
      задачи о коммивояжере мы можем понять, стоимость
      оптимального цикла в построенном графе превосходит n или нет
      а это позволит нам понять (за полиномиальное время!), есть в
      исходном графе гамильтонов цикл или нет
      но тогда P = NP




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




1   Задача о коммивояжере



2   Задача о рюкзаке




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

Определение




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

Определение
      Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
      p1 , . . . , pn ∈ N, а также общий вес W .




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

Определение
      Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
      p1 , . . . , pn ∈ N, а также общий вес W .
      Задача о рюкзаке (knapsack problem) заключается в нахождении
                                                ∑︀
      такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
      ∑︀
        i∈I pi максимально.




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

Определение
      Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
      p1 , . . . , pn ∈ N, а также общий вес W .
      Задача о рюкзаке (knapsack problem) заключается в нахождении
                                                ∑︀
      такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
      ∑︀
        i∈I pi максимально.
      НУО, maxi∈[1..n] wi ≤ W .




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

Определение
      Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
      p1 , . . . , pn ∈ N, а также общий вес W .
      Задача о рюкзаке (knapsack problem) заключается в нахождении
                                                ∑︀
      такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
      ∑︀
        i∈I pi максимально.
      НУО, maxi∈[1..n] wi ≤ W .

Факт




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

Определение
      Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
      p1 , . . . , pn ∈ N, а также общий вес W .
      Задача о рюкзаке (knapsack problem) заключается в нахождении
                                                ∑︀
      такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
      ∑︀
        i∈I pi максимально.
      НУО, maxi∈[1..n] wi ≤ W .

Факт
      Задача о рюкзаке является NP-трудной.




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

Определение
      Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
      p1 , . . . , pn ∈ N, а также общий вес W .
      Задача о рюкзаке (knapsack problem) заключается в нахождении
                                                ∑︀
      такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
      ∑︀
        i∈I pi максимально.
      НУО, maxi∈[1..n] wi ≤ W .

Факт
      Задача о рюкзаке является NP-трудной.
      Одна из знаменитых 21-й NP-полной задачи Карпа.



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

Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )




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

Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
       ∑︀
   S := i∈[1..n] pi




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

Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
       ∑︀
   S := i∈[1..n] pi
      P := maxi∈[1..n] pi




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

Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
       ∑︀
   S := i∈[1..n] pi
      P := maxi∈[1..n] pi
      через w (k, p) обозначим минимальный объем, необходимый для
      того, чтобы уложить предметы с номерами, не превосходящими
      k ∈ [1..n], общей стоимостью не менее p ≤ S




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

Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
       ∑︀
   S := i∈[1..n] pi
      P := maxi∈[1..n] pi
      через w (k, p) обозначим минимальный объем, необходимый для
      того, чтобы уложить предметы с номерами, не превосходящими
      k ∈ [1..n], общей стоимостью не менее p ≤ S
      в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до
      S




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

Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
       ∑︀
   S := i∈[1..n] pi
      P := maxi∈[1..n] pi
      через w (k, p) обозначим минимальный объем, необходимый для
      того, чтобы уложить предметы с номерами, не превосходящими
      k ∈ [1..n], общей стоимостью не менее p ≤ S
      в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до
      S
            w (0, 0) = 0; w (0, p) = ∞, p > 0




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

Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
       ∑︀
   S := i∈[1..n] pi
      P := maxi∈[1..n] pi
      через w (k, p) обозначим минимальный объем, необходимый для
      того, чтобы уложить предметы с номерами, не превосходящими
      k ∈ [1..n], общей стоимостью не менее p ≤ S
      в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до
      S
            w (0, 0) = 0; w (0, p) = ∞, p > 0
            w (k + 1, p) = min{w (k, p), w (k, p − pk+1 ) + wk+1 }




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

Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
       ∑︀
   S := i∈[1..n] pi
      P := maxi∈[1..n] pi
      через w (k, p) обозначим минимальный объем, необходимый для
      того, чтобы уложить предметы с номерами, не превосходящими
      k ∈ [1..n], общей стоимостью не менее p ≤ S
      в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до
      S
            w (0, 0) = 0; w (0, p) = ∞, p > 0
            w (k + 1, p) = min{w (k, p), w (k, p − pk+1 ) + wk+1 }
      return максимальное p, для которого w (n, p) ≤ W



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




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


      Ясно, что алгоритм работает не более, чем nS, то есть не более
      n2 P.




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


      Ясно, что алгоритм работает не более, чем nS, то есть не более
      n2 P.
      Значит, мы могли бы решить задачу за полиномиальное время,
      если бы pi были достаточно маленькими.




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


      Ясно, что алгоритм работает не более, чем nS, то есть не более
      n2 P.
      Значит, мы могли бы решить задачу за полиномиальное время,
      если бы pi были достаточно маленькими.
      Идея: выберем достаточно большое число и разделим на него все
      стоимости. Оптимальное решение не перестанет быть
      оптимальным, а время работы алгоритма уменьшится.




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


      Ясно, что алгоритм работает не более, чем nS, то есть не более
      n2 P.
      Значит, мы могли бы решить задачу за полиномиальное время,
      если бы pi были достаточно маленькими.
      Идея: выберем достаточно большое число и разделим на него все
      стоимости. Оптимальное решение не перестанет быть
      оптимальным, а время работы алгоритма уменьшится.
      В чем же тогда подвох?




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


      Ясно, что алгоритм работает не более, чем nS, то есть не более
      n2 P.
      Значит, мы могли бы решить задачу за полиномиальное время,
      если бы pi были достаточно маленькими.
      Идея: выберем достаточно большое число и разделим на него все
      стоимости. Оптимальное решение не перестанет быть
      оптимальным, а время работы алгоритма уменьшится.
      В чем же тогда подвох?
      Стоимости могут перестать быть целыми после деления.




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


      Ясно, что алгоритм работает не более, чем nS, то есть не более
      n2 P.
      Значит, мы могли бы решить задачу за полиномиальное время,
      если бы pi были достаточно маленькими.
      Идея: выберем достаточно большое число и разделим на него все
      стоимости. Оптимальное решение не перестанет быть
      оптимальным, а время работы алгоритма уменьшится.
      В чем же тогда подвох?
      Стоимости могут перестать быть целыми после деления.
      Округлим их и будем надеяться, что потеряли мы от этого не
      очень много.



А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы          21 / 26
Полностью полиномиальная приближенная схема




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   22 / 26
Полностью полиномиальная приближенная схема


      итак, пусть задан ������, определяющий, с какой точностью мы хотим
      найти ответ




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы        22 / 26
Полностью полиномиальная приближенная схема


      итак, пусть задан ������, определяющий, с какой точностью мы хотим
      найти ответ
                         P
      пусть K������ =     (1+1/������)n




А. Куликов (CS клуб при ПОМИ)     3. Приближенные алгоритмы      22 / 26
Полностью полиномиальная приближенная схема


      итак, пусть задан ������, определяющий, с какой точностью мы хотим
      найти ответ
                         P
      пусть K������ =     (1+1/������)n
      поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉




А. Куликов (CS клуб при ПОМИ)     3. Приближенные алгоритмы      22 / 26
Полностью полиномиальная приближенная схема


      итак, пусть задан ������, определяющий, с какой точностью мы хотим
      найти ответ
                         P
      пусть K������ =     (1+1/������)n
      поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉
      запустим Psuedopoly-Knapsack на полученном наборе
      стоимостей




А. Куликов (CS клуб при ПОМИ)     3. Приближенные алгоритмы      22 / 26
Полностью полиномиальная приближенная схема


      итак, пусть задан ������, определяющий, с какой точностью мы хотим
      найти ответ
                         P
      пусть K������ =     (1+1/������)n
      поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉
      запустим Psuedopoly-Knapsack на полученном наборе
      стоимостей
      время работы алгорита не превосходит n2 max pi′ ≤ n3 P(1 + 1/������)/P




А. Куликов (CS клуб при ПОМИ)     3. Приближенные алгоритмы         22 / 26
Полностью полиномиальная приближенная схема


      итак, пусть задан ������, определяющий, с какой точностью мы хотим
      найти ответ
                         P
      пусть K������ =     (1+1/������)n
      поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉
      запустим Psuedopoly-Knapsack на полученном наборе
      стоимостей
      время работы алгорита не превосходит n2 max pi′ ≤ n3 P(1 + 1/������)/P
      осталось доказать, что полученный алгоритм дает достаточно
      хорошее приближение




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




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



      пусть A������ — общая стоимость набора предметов, который вернул
      алгоритм




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



      пусть A������ — общая стоимость набора предметов, который вернул
      алгоритм
      заметим, что A������ ≥ Aopt − K������ n: псевдополиномиальный алгоритм
      находит точное решение, поэтому отклонение могло появиться
      только при округлении; при округлении могло потеряться не более
      1 на каждом предмете, эта потеря домножается на K������ при
      обратном переходе от pi′ к pi




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы        23 / 26
Оценка приближения (продолжение)




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы   24 / 26
Оценка приближения (продолжение)


      Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой
      предмет




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы       24 / 26
Оценка приближения (продолжение)


      Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой
      предмет
      тогда

                                    A������   Aopt − K������
                                        ≥            =
                                   Aopt     Aopt
                                   Pn               1          1
                       1−                    ≥1−          =
                            Aopt n(1 + 1/������)     1 + 1/������   ������ + 1




А. Куликов (CS клуб при ПОМИ)   3. Приближенные алгоритмы            24 / 26
Оценка приближения (продолжение)


      Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой
      предмет
      тогда

                                    A������   Aopt − K������
                                        ≥            =
                                   Aopt     Aopt
                                   Pn               1          1
                       1−                    ≥1−          =
                            Aopt n(1 + 1/������)     1 + 1/������   ������ + 1

      следовательно, A������ ≥ (1 − ������)Aopt




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




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




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




Что мы узнали за сегодня?
      3/2-приближенный алгоритм для задачи о коммивояжере в
      метрическом пространстве.




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




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




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




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

More Related Content

What's hot

04 - Квантовые вычисления. Вычислимость и алгоритм
04 - Квантовые вычисления. Вычислимость и алгоритм04 - Квантовые вычисления. Вычислимость и алгоритм
04 - Квантовые вычисления. Вычислимость и алгоритм
Roman Brovko
 
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
Alexey Paznikov
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05Computer Science Club
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Mikhail Kurnosov
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
Mikhail Kurnosov
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Mikhail Kurnosov
 
20080316 efficientalgorithms kulikov_lecture17
20080316 efficientalgorithms kulikov_lecture1720080316 efficientalgorithms kulikov_lecture17
20080316 efficientalgorithms kulikov_lecture17Computer Science Club
 
20091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture0920091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture09Computer Science Club
 
TMPA-2013 Popesko: Verification of Programmable and Configurable Networks Usi...
TMPA-2013 Popesko: Verification of Programmable and Configurable Networks Usi...TMPA-2013 Popesko: Verification of Programmable and Configurable Networks Usi...
TMPA-2013 Popesko: Verification of Programmable and Configurable Networks Usi...Iosif Itkin
 

What's hot (10)

04 - Квантовые вычисления. Вычислимость и алгоритм
04 - Квантовые вычисления. Вычислимость и алгоритм04 - Квантовые вычисления. Вычислимость и алгоритм
04 - Квантовые вычисления. Вычислимость и алгоритм
 
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
20080316 efficientalgorithms kulikov_lecture17
20080316 efficientalgorithms kulikov_lecture1720080316 efficientalgorithms kulikov_lecture17
20080316 efficientalgorithms kulikov_lecture17
 
20091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture0920091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture09
 
TMPA-2013 Popesko: Verification of Programmable and Configurable Networks Usi...
TMPA-2013 Popesko: Verification of Programmable and Configurable Networks Usi...TMPA-2013 Popesko: Verification of Programmable and Configurable Networks Usi...
TMPA-2013 Popesko: Verification of Programmable and Configurable Networks Usi...
 

Viewers also liked

slideshare
slideshareslideshare
slideshare
Kayl Dreck
 
Augmented Reality and Sport
Augmented Reality and SportAugmented Reality and Sport
Augmented Reality and Sport
Paolo Nesi
 
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
Paolo Nesi
 
Paisajes Coloristas- Painter Phan Thu Trang
Paisajes Coloristas- Painter Phan Thu TrangPaisajes Coloristas- Painter Phan Thu Trang
Paisajes Coloristas- Painter Phan Thu Trangmaditabalnco
 
20120512 repeatsinsymbolicsequences shur_lecture03-04
20120512 repeatsinsymbolicsequences shur_lecture03-0420120512 repeatsinsymbolicsequences shur_lecture03-04
20120512 repeatsinsymbolicsequences shur_lecture03-04Computer Science Club
 
Día de la tierra
Día de la tierraDía de la tierra
Día de la tierra
AngielAlvarado
 
Internet profundo y internet invisible
Internet profundo y internet invisibleInternet profundo y internet invisible
Internet profundo y internet invisible
CYNTIA
 
Mobiilioppiminen laajennetussa työssäoppimisessa
Mobiilioppiminen laajennetussa työssäoppimisessaMobiilioppiminen laajennetussa työssäoppimisessa
Mobiilioppiminen laajennetussa työssäoppimisessaPauliina Venho
 
Lean Architecture
Lean ArchitectureLean Architecture
Lean Architecture
Diego Pacheco
 
Service Map API, Smart City API, Open Data API
Service Map API, Smart City API, Open Data APIService Map API, Smart City API, Open Data API
Service Map API, Smart City API, Open Data API
Paolo Nesi
 
ldc dev-clojure
ldc dev-clojureldc dev-clojure
ldc dev-clojure
Diego Pacheco
 
Batman o longo dia das bruxas 05
Batman   o longo dia das bruxas 05Batman   o longo dia das bruxas 05
Batman o longo dia das bruxas 05Marcos Donato
 
Vnm+bcpt+11.05.09
Vnm+bcpt+11.05.09Vnm+bcpt+11.05.09
Vnm+bcpt+11.05.09Truong Tho
 
APRETOSCANA, lo sportello APRE della toscana
APRETOSCANA, lo sportello APRE della toscanaAPRETOSCANA, lo sportello APRE della toscana
APRETOSCANA, lo sportello APRE della toscana
Paolo Nesi
 
20091213 cryptoprotocols nikolenko_lecture11
20091213 cryptoprotocols nikolenko_lecture1120091213 cryptoprotocols nikolenko_lecture11
20091213 cryptoprotocols nikolenko_lecture11Computer Science Club
 

Viewers also liked (20)

Dam Nghi Lon
Dam Nghi LonDam Nghi Lon
Dam Nghi Lon
 
slideshare
slideshareslideshare
slideshare
 
Augmented Reality and Sport
Augmented Reality and SportAugmented Reality and Sport
Augmented Reality and Sport
 
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
 
Paisajes Coloristas- Painter Phan Thu Trang
Paisajes Coloristas- Painter Phan Thu TrangPaisajes Coloristas- Painter Phan Thu Trang
Paisajes Coloristas- Painter Phan Thu Trang
 
20120512 repeatsinsymbolicsequences shur_lecture03-04
20120512 repeatsinsymbolicsequences shur_lecture03-0420120512 repeatsinsymbolicsequences shur_lecture03-04
20120512 repeatsinsymbolicsequences shur_lecture03-04
 
Día de la tierra
Día de la tierraDía de la tierra
Día de la tierra
 
Internet profundo y internet invisible
Internet profundo y internet invisibleInternet profundo y internet invisible
Internet profundo y internet invisible
 
Mobiilioppiminen laajennetussa työssäoppimisessa
Mobiilioppiminen laajennetussa työssäoppimisessaMobiilioppiminen laajennetussa työssäoppimisessa
Mobiilioppiminen laajennetussa työssäoppimisessa
 
20111012202555
2011101220255520111012202555
20111012202555
 
Lean Architecture
Lean ArchitectureLean Architecture
Lean Architecture
 
Service Map API, Smart City API, Open Data API
Service Map API, Smart City API, Open Data APIService Map API, Smart City API, Open Data API
Service Map API, Smart City API, Open Data API
 
ldc dev-clojure
ldc dev-clojureldc dev-clojure
ldc dev-clojure
 
Batman o longo dia das bruxas 05
Batman   o longo dia das bruxas 05Batman   o longo dia das bruxas 05
Batman o longo dia das bruxas 05
 
Hora
HoraHora
Hora
 
Vnm+bcpt+11.05.09
Vnm+bcpt+11.05.09Vnm+bcpt+11.05.09
Vnm+bcpt+11.05.09
 
APRETOSCANA, lo sportello APRE della toscana
APRETOSCANA, lo sportello APRE della toscanaAPRETOSCANA, lo sportello APRE della toscana
APRETOSCANA, lo sportello APRE della toscana
 
20121028 seminar msr_marat-akhin
20121028 seminar msr_marat-akhin20121028 seminar msr_marat-akhin
20121028 seminar msr_marat-akhin
 
Philippines
PhilippinesPhilippines
Philippines
 
20091213 cryptoprotocols nikolenko_lecture11
20091213 cryptoprotocols nikolenko_lecture1120091213 cryptoprotocols nikolenko_lecture11
20091213 cryptoprotocols nikolenko_lecture11
 

Similar to 20071007 efficientalgorithms kulikov_lecture03

20091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture0520091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture05Computer 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
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15Computer Science Club
 
20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02Computer Science Club
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03Computer Science Club
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08Computer Science Club
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Positive Hack Days
 
20090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture0220090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture02Computer Science Club
 
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
Iosif Itkin
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06Computer Science Club
 
p01.pdf
p01.pdfp01.pdf
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
simple_people
 
Algorithms For Np Hard Problems
Algorithms For Np Hard ProblemsAlgorithms For Np Hard Problems
Algorithms For Np Hard ProblemsLiloSEA
 
Исследование операций и методы оптимизации
Исследование операций и методы оптимизацииИсследование операций и методы оптимизации
Исследование операций и методы оптимизации
Jakobow
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
Alexey Paznikov
 
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
 
алгоритмизация
алгоритмизацияалгоритмизация
алгоритмизацияisva69
 
Лекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеЛекция 8 Динамическое программирование
Лекция 8 Динамическое программирование
simple_people
 

Similar to 20071007 efficientalgorithms kulikov_lecture03 (20)

20091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture0520091101 algorithmsfornphardproblems kulikov_lecture05
20091101 algorithmsfornphardproblems kulikov_lecture05
 
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
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
 
20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
 
20090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture0220090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture02
 
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
 
лекция 8
лекция 8лекция 8
лекция 8
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06
 
p01.pdf
p01.pdfp01.pdf
p01.pdf
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
Algorithms For Np Hard Problems
Algorithms For Np Hard ProblemsAlgorithms For Np Hard Problems
Algorithms For Np Hard Problems
 
Исследование операций и методы оптимизации
Исследование операций и методы оптимизацииИсследование операций и методы оптимизации
Исследование операций и методы оптимизации
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
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. принципы
 
алгоритмизация
алгоритмизацияалгоритмизация
алгоритмизация
 
Лекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеЛекция 8 Динамическое программирование
Лекция 8 Динамическое программирование
 

More from Computer Science Club

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
Computer Science Club
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
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
 

20071007 efficientalgorithms kulikov_lecture03

  • 1. с/к “Эффективные алгоритмы” Лекция 3: Приближенные алгоритмы А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 1 / 26
  • 2. План лекции 1 Задача о коммивояжере А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 2 / 26
  • 3. План лекции 1 Задача о коммивояжере 2 Задача о рюкзаке А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 2 / 26
  • 4. Приближенный алгоритм Определение А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
  • 5. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
  • 6. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство A(I )/OPT(I ) ≥ ������ для максимизационной задачи; А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
  • 7. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство A(I )/OPT(I ) ≥ ������ для максимизационной задачи; A(I )/OPT(I ) ≤ ������ для минимизационной задачи. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
  • 8. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство A(I )/OPT(I ) ≥ ������ для максимизационной задачи; A(I )/OPT(I ) ≤ ������ для минимизационной задачи. Такие алгоритмы мы называем ������-приближенными. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
  • 9. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство A(I )/OPT(I ) ≥ ������ для максимизационной задачи; A(I )/OPT(I ) ≤ ������ для минимизационной задачи. Такие алгоритмы мы называем ������-приближенными. Замечание Для оптимизационных задач ������ ≤ 1, для минимизационных — ������ ≥ 1. Алгоритм тем лучше, чем ближе ������ к 1. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
  • 10. Полиномиальная приближенная схема Определение А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
  • 11. Полиномиальная приближенная схема Определение Пусть дана максимизационная задача Π. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
  • 12. Полиномиальная приближенная схема Определение Пусть дана максимизационная задача Π. Π имеет полиномиальную приближенную схему (polynomial time approximation scheme, PTAS), если А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
  • 13. Полиномиальная приближенная схема Определение Пусть дана максимизационная задача Π. Π имеет полиномиальную приближенную схему (polynomial time approximation scheme, PTAS), если 1 для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для Π; А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
  • 14. Полиномиальная приближенная схема Определение Пусть дана максимизационная задача Π. Π имеет полиномиальную приближенную схему (polynomial time approximation scheme, PTAS), если 1 для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для Π; 2 для любого ������ > 0 время работы такого алгоритма зависит от n полиномиально. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
  • 15. Полиномиальная приближенная схема Определение Пусть дана максимизационная задача Π. Π имеет полиномиальную приближенную схему (polynomial time approximation scheme, PTAS), если 1 для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для Π; 2 для любого ������ > 0 время работы такого алгоритма зависит от n полиномиально. Если же время работы такого алгоритма полиномиально не только по n, но и по 1/������, то полученная схема называется полностью полиномиальной приближенной схемой (fully polynomial time approximation scheme, FPTAS). А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
  • 16. Полиномиальная приближенная схема Определение Пусть дана максимизационная задача Π. Π имеет полиномиальную приближенную схему (polynomial time approximation scheme, PTAS), если 1 для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для Π; 2 для любого ������ > 0 время работы такого алгоритма зависит от n полиномиально. Если же время работы такого алгоритма полиномиально не только по n, но и по 1/������, то полученная схема называется полностью полиномиальной приближенной схемой (fully polynomial time approximation scheme, FPTAS). Определение для минимизационной задачи полностью аналогично. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
  • 17. План лекции 1 Задача о коммивояжере 2 Задача о рюкзаке А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 5 / 26
  • 18. Задача о коммивояжере Определение А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 6 / 26
  • 19. Задача о коммивояжере Определение Дан полный неориентированный граф G = (V , E ), каждому ребру (u, v ) которого приписана некоторая стоимость c(u, v ). А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 6 / 26
  • 20. Задача о коммивояжере Определение Дан полный неориентированный граф G = (V , E ), каждому ребру (u, v ) которого приписана некоторая стоимость c(u, v ). Задача о коммивояжере (travelling salesman problem, TSP) заключается в нахождении в графе гамильтонова цикла минимальной стоимости. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 6 / 26
  • 21. Задача о коммивояжере Определение Дан полный неориентированный граф G = (V , E ), каждому ребру (u, v ) которого приписана некоторая стоимость c(u, v ). Задача о коммивояжере (travelling salesman problem, TSP) заключается в нахождении в графе гамильтонова цикла минимальной стоимости. Задача о коммивояжере в метрическом пространстве (metric TSP) есть частный случай задачи о коммивояжере, где расстояния входного графа удовлетворяют неравенству треугольника: c(u, w ) ≤ c(u, v ) + c(v , w ) ∀u, v , w ∈ V . А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 6 / 26
  • 22. NP-трудность А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
  • 23. NP-трудность Задача о коммивояжере является NP-трудной. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
  • 24. NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
  • 25. NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
  • 26. NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
  • 27. NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. допустим, мы умеем решать эту задачу за полиномиальное время А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
  • 28. NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. допустим, мы умеем решать эту задачу за полиномиальное время возьмем произвольный граф и присвоим всем его ребрам вес 1 А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
  • 29. NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. допустим, мы умеем решать эту задачу за полиномиальное время возьмем произвольный граф и присвоим всем его ребрам вес 1 между любыми двумя не соединенными ребром вершинами добавим ребро веса 2 А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
  • 30. NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. допустим, мы умеем решать эту задачу за полиномиальное время возьмем произвольный граф и присвоим всем его ребрам вес 1 между любыми двумя не соединенными ребром вершинами добавим ребро веса 2 тогда построение минимального гамильтонова цикла в полученном графе эквивалентно ответу на вопрос, существует ли в исходном графе гамильтонов цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
  • 31. 2-оптимальный алгоритм Алгоритм Approx-TSP(G ) А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 8 / 26
  • 32. 2-оптимальный алгоритм Алгоритм Approx-TSP(G ) строим минимальное остовное дерево T графа G А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 8 / 26
  • 33. 2-оптимальный алгоритм Алгоритм Approx-TSP(G ) строим минимальное остовное дерево T графа G продублируем каждое ребро дерева T и в полученном графе найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 8 / 26
  • 34. 2-оптимальный алгоритм Алгоритм Approx-TSP(G ) строим минимальное остовное дерево T графа G продублируем каждое ребро дерева T и в полученном графе найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 8 / 26
  • 35. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d e b f g c h А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 36. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g c h А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 37. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 38. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 39. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 40. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 41. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 42. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 43. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 44. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 45. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 46. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 47. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 48. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 49. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 50. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 51. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 52. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 53. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 54. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 55. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 56. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 57. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 58. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 59. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 60. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 61. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 62. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 63. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 64. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 65. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 66. Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное e остовное дерево T графа G b f g продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
  • 67. Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
  • 68. Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
  • 69. Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
  • 70. Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва цикла получается остовное дерево А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
  • 71. Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва цикла получается остовное дерево каждое ребро построенного гамильтонова цикла заменяет какой-то путь эйлерова цикла, длина которого по неравенству треугольника не менее длины этого ребра А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
  • 72. Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва цикла получается остовное дерево каждое ребро построенного гамильтонова цикла заменяет какой-то путь эйлерова цикла, длина которого по неравенству треугольника не менее длины этого ребра значит, длина найденного пути не превосходит 2WT , а следовательно, и 2Wopt А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
  • 73. 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 11 / 26
  • 74. 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) строим минимальное остовное дерево T графа G А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 11 / 26
  • 75. 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) строим минимальное остовное дерево T графа G найдем минимальное полное паросочетание всех вершин дерева T нечетной степени А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 11 / 26
  • 76. 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) строим минимальное остовное дерево T графа G найдем минимальное полное паросочетание всех вершин дерева T нечетной степени добавим найденные ребра в дерево T и найдем в полученном графе эйлеров цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 11 / 26
  • 77. 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) строим минимальное остовное дерево T графа G найдем минимальное полное паросочетание всех вершин дерева T нечетной степени добавим найденные ребра в дерево T и найдем в полученном графе эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 11 / 26
  • 78. О чем вы забыли меня спросить? О чем вы забыли меня спросить? А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 12 / 26
  • 79. О чем вы забыли меня спросить? О том, как искать минимальное полное паросочетание в графе. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 12 / 26
  • 80. О чем вы забыли меня спросить? О том, как искать минимальное полное паросочетание в графе. Давайте пока просто поверим в то, что оно находится за полиномиальное время. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 12 / 26
  • 81. Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
  • 82. Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
  • 83. Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство как и в предыдущем доказательстве, вес построенного цикла не провосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
  • 84. Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство как и в предыдущем доказательстве, вес построенного цикла не провосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T нужно показать, что WP ≤ Wopt /2 А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
  • 85. Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство как и в предыдущем доказательстве, вес построенного цикла не провосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T нужно показать, что WP ≤ Wopt /2 обозначим через A множество всех вершин нечетной степени дерева T А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
  • 86. Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство как и в предыдущем доказательстве, вес построенного цикла не провосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T нужно показать, что WP ≤ Wopt /2 обозначим через A множество всех вершин нечетной степени дерева T рассмотрим такой гамильтонов цикл на вершинах множества A: вершины множества A в нем будут встречаться в такой последовательности, в какой они идут в оптимальном гамильтонов цикле графа G А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
  • 87. Доказательство (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 14 / 26
  • 88. Доказательство (продолжение) Доказательство важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 14 / 26
  • 89. Доказательство (продолжение) Доказательство важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования разбив вершины только что построенного цикла на четные и нечетные, мы получим два паросочетания А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 14 / 26
  • 90. Доказательство (продолжение) Доказательство важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования разбив вершины только что построенного цикла на четные и нечетные, мы получим два паросочетания вес хотя бы одного из них будет не более Wopt /2 А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 14 / 26
  • 91. Доказательство (продолжение) Доказательство важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования разбив вершины только что построенного цикла на четные и нечетные, мы получим два паросочетания вес хотя бы одного из них будет не более Wopt /2 значит, и вес минимального паросочетания не превосходит Wopt /2 А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 14 / 26
  • 92. Известные оценки Факт А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 15 / 26
  • 93. Известные оценки Факт 117 Если P ̸= NP, то не существует 116 -приближенного алгоритма для задачи о коммивояжере в метрическом пространстве. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 15 / 26
  • 94. Известные оценки Факт 117 Если P ̸= NP, то не существует 116 -приближенного алгоритма для задачи о коммивояжере в метрическом пространстве. 3/2 — лучшее известное приближение для задачи о коммивояжере в метрическом пространстве. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 15 / 26
  • 95. Известные оценки Факт 117 Если P ̸= NP, то не существует 116 -приближенного алгоритма для задачи о коммивояжере в метрическом пространстве. 3/2 — лучшее известное приближение для задачи о коммивояжере в метрическом пространстве. Для случая, когда все ребра имеют вес 1 или 2, известен 5/6-приближенный алгоритм. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 15 / 26
  • 96. Неприближаемость задачи о коммивояжере Теорема Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
  • 97. Неприближаемость задачи о коммивояжере Теорема Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
  • 98. Неприближаемость задачи о коммивояжере Теорема Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство предположим, что такой алгоритм все-таки существует А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
  • 99. Неприближаемость задачи о коммивояжере Теорема Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство предположим, что такой алгоритм все-таки существует возьмем произвольный граф и присвоим всем его ребрам вес 1 А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
  • 100. Неприближаемость задачи о коммивояжере Теорема Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство предположим, что такой алгоритм все-таки существует возьмем произвольный граф и присвоим всем его ребрам вес 1 между любыми двумя не соединенными ребром вершинами добавим ребро веса cn + 1 А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
  • 101. Неприближаемость задачи о коммивояжере Теорема Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство предположим, что такой алгоритм все-таки существует возьмем произвольный граф и присвоим всем его ребрам вес 1 между любыми двумя не соединенными ребром вершинами добавим ребро веса cn + 1 заметим теперь, что если в исходном графе существует гамильтонов цикл, то в новом графе существует гамильтонов цикл веса n А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
  • 102. Доказательство (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 17 / 26
  • 103. Доказательство (продолжение) Доказательство если же такого цикла в исходном графе нет, то самый дешевый цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 17 / 26
  • 104. Доказательство (продолжение) Доказательство если же такого цикла в исходном графе нет, то самый дешевый цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc таким образом, с помощью ������(n)-приближенного алгоритма для задачи о коммивояжере мы можем понять, стоимость оптимального цикла в построенном графе превосходит n или нет А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 17 / 26
  • 105. Доказательство (продолжение) Доказательство если же такого цикла в исходном графе нет, то самый дешевый цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc таким образом, с помощью ������(n)-приближенного алгоритма для задачи о коммивояжере мы можем понять, стоимость оптимального цикла в построенном графе превосходит n или нет а это позволит нам понять (за полиномиальное время!), есть в исходном графе гамильтонов цикл или нет А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 17 / 26
  • 106. Доказательство (продолжение) Доказательство если же такого цикла в исходном графе нет, то самый дешевый цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc таким образом, с помощью ������(n)-приближенного алгоритма для задачи о коммивояжере мы можем понять, стоимость оптимального цикла в построенном графе превосходит n или нет а это позволит нам понять (за полиномиальное время!), есть в исходном графе гамильтонов цикл или нет но тогда P = NP А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 17 / 26
  • 107. План лекции 1 Задача о коммивояжере 2 Задача о рюкзаке А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 18 / 26
  • 108. Задача о рюкзаке Определение А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
  • 109. Задача о рюкзаке Определение Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями p1 , . . . , pn ∈ N, а также общий вес W . А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
  • 110. Задача о рюкзаке Определение Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями p1 , . . . , pn ∈ N, а также общий вес W . Задача о рюкзаке (knapsack problem) заключается в нахождении ∑︀ такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и ∑︀ i∈I pi максимально. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
  • 111. Задача о рюкзаке Определение Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями p1 , . . . , pn ∈ N, а также общий вес W . Задача о рюкзаке (knapsack problem) заключается в нахождении ∑︀ такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и ∑︀ i∈I pi максимально. НУО, maxi∈[1..n] wi ≤ W . А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
  • 112. Задача о рюкзаке Определение Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями p1 , . . . , pn ∈ N, а также общий вес W . Задача о рюкзаке (knapsack problem) заключается в нахождении ∑︀ такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и ∑︀ i∈I pi максимально. НУО, maxi∈[1..n] wi ≤ W . Факт А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
  • 113. Задача о рюкзаке Определение Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями p1 , . . . , pn ∈ N, а также общий вес W . Задача о рюкзаке (knapsack problem) заключается в нахождении ∑︀ такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и ∑︀ i∈I pi максимально. НУО, maxi∈[1..n] wi ≤ W . Факт Задача о рюкзаке является NP-трудной. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
  • 114. Задача о рюкзаке Определение Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями p1 , . . . , pn ∈ N, а также общий вес W . Задача о рюкзаке (knapsack problem) заключается в нахождении ∑︀ такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и ∑︀ i∈I pi максимально. НУО, maxi∈[1..n] wi ≤ W . Факт Задача о рюкзаке является NP-трудной. Одна из знаменитых 21-й NP-полной задачи Карпа. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
  • 115. Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
  • 116. Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
  • 117. Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi P := maxi∈[1..n] pi А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
  • 118. Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi P := maxi∈[1..n] pi через w (k, p) обозначим минимальный объем, необходимый для того, чтобы уложить предметы с номерами, не превосходящими k ∈ [1..n], общей стоимостью не менее p ≤ S А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
  • 119. Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi P := maxi∈[1..n] pi через w (k, p) обозначим минимальный объем, необходимый для того, чтобы уложить предметы с номерами, не превосходящими k ∈ [1..n], общей стоимостью не менее p ≤ S в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до S А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
  • 120. Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi P := maxi∈[1..n] pi через w (k, p) обозначим минимальный объем, необходимый для того, чтобы уложить предметы с номерами, не превосходящими k ∈ [1..n], общей стоимостью не менее p ≤ S в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до S w (0, 0) = 0; w (0, p) = ∞, p > 0 А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
  • 121. Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi P := maxi∈[1..n] pi через w (k, p) обозначим минимальный объем, необходимый для того, чтобы уложить предметы с номерами, не превосходящими k ∈ [1..n], общей стоимостью не менее p ≤ S в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до S w (0, 0) = 0; w (0, p) = ∞, p > 0 w (k + 1, p) = min{w (k, p), w (k, p − pk+1 ) + wk+1 } А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
  • 122. Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi P := maxi∈[1..n] pi через w (k, p) обозначим минимальный объем, необходимый для того, чтобы уложить предметы с номерами, не превосходящими k ∈ [1..n], общей стоимостью не менее p ≤ S в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до S w (0, 0) = 0; w (0, p) = ∞, p > 0 w (k + 1, p) = min{w (k, p), w (k, p − pk+1 ) + wk+1 } return максимальное p, для которого w (n, p) ≤ W А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
  • 123. Анализ времени работы А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
  • 124. Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
  • 125. Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
  • 126. Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. Идея: выберем достаточно большое число и разделим на него все стоимости. Оптимальное решение не перестанет быть оптимальным, а время работы алгоритма уменьшится. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
  • 127. Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. Идея: выберем достаточно большое число и разделим на него все стоимости. Оптимальное решение не перестанет быть оптимальным, а время работы алгоритма уменьшится. В чем же тогда подвох? А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
  • 128. Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. Идея: выберем достаточно большое число и разделим на него все стоимости. Оптимальное решение не перестанет быть оптимальным, а время работы алгоритма уменьшится. В чем же тогда подвох? Стоимости могут перестать быть целыми после деления. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
  • 129. Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. Идея: выберем достаточно большое число и разделим на него все стоимости. Оптимальное решение не перестанет быть оптимальным, а время работы алгоритма уменьшится. В чем же тогда подвох? Стоимости могут перестать быть целыми после деления. Округлим их и будем надеяться, что потеряли мы от этого не очень много. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
  • 130. Полностью полиномиальная приближенная схема А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
  • 131. Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
  • 132. Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
  • 133. Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉ А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
  • 134. Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉ запустим Psuedopoly-Knapsack на полученном наборе стоимостей А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
  • 135. Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉ запустим Psuedopoly-Knapsack на полученном наборе стоимостей время работы алгорита не превосходит n2 max pi′ ≤ n3 P(1 + 1/������)/P А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
  • 136. Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉ запустим Psuedopoly-Knapsack на полученном наборе стоимостей время работы алгорита не превосходит n2 max pi′ ≤ n3 P(1 + 1/������)/P осталось доказать, что полученный алгоритм дает достаточно хорошее приближение А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
  • 137. Оценка приближения А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 23 / 26
  • 138. Оценка приближения пусть A������ — общая стоимость набора предметов, который вернул алгоритм А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 23 / 26
  • 139. Оценка приближения пусть A������ — общая стоимость набора предметов, который вернул алгоритм заметим, что A������ ≥ Aopt − K������ n: псевдополиномиальный алгоритм находит точное решение, поэтому отклонение могло появиться только при округлении; при округлении могло потеряться не более 1 на каждом предмете, эта потеря домножается на K������ при обратном переходе от pi′ к pi А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 23 / 26
  • 140. Оценка приближения (продолжение) А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 24 / 26
  • 141. Оценка приближения (продолжение) Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой предмет А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 24 / 26
  • 142. Оценка приближения (продолжение) Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой предмет тогда A������ Aopt − K������ ≥ = Aopt Aopt Pn 1 1 1− ≥1− = Aopt n(1 + 1/������) 1 + 1/������ ������ + 1 А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 24 / 26
  • 143. Оценка приближения (продолжение) Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой предмет тогда A������ Aopt − K������ ≥ = Aopt Aopt Pn 1 1 1− ≥1− = Aopt n(1 + 1/������) 1 + 1/������ ������ + 1 следовательно, A������ ≥ (1 − ������)Aopt А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 24 / 26
  • 144. Что мы узнали за сегодня? Что мы узнали за сегодня? А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 25 / 26
  • 145. Что мы узнали за сегодня? Что мы узнали за сегодня? 3/2-приближенный алгоритм для задачи о коммивояжере в метрическом пространстве. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 25 / 26
  • 146. Что мы узнали за сегодня? Что мы узнали за сегодня? 3/2-приближенный алгоритм для задачи о коммивояжере в метрическом пространстве. Полностью полиномиальную приближенную схему для задачи о рюкзаке. А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 25 / 26
  • 147. Спасибо за внимание! А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 26 / 26