SlideShare a Scribd company logo
Алгоритмы для NP-трудных задач
                Лекция 6: Приближенные алгоритмы

                                          А. Куликов

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




А. Куликов (Computer Science клуб)   6. Приближенные алгоритмы      1 / 28
План лекции



  1   Задача о коммивояжере
        Точный алгоритм для TSP
        2-приближенный алгоритм для Metric TSP
        3/2-приближенный алгоритм для Metric TSP
        Неприближаемость TSP




А. Куликов (Computer Science клуб)   6. Приближенные алгоритмы   2 / 28
План лекции



  1   Задача о коммивояжере
        Точный алгоритм для TSP
        2-приближенный алгоритм для Metric TSP
        3/2-приближенный алгоритм для Metric TSP
        Неприближаемость TSP


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




А. Куликов (Computer Science клуб)   6. Приближенные алгоритмы   2 / 28
Задача о коммивояжере


 План лекции



  1   Задача о коммивояжере
        Точный алгоритм для TSP
        2-приближенный алгоритм для Metric TSP
        3/2-приближенный алгоритм для Metric TSP
        Неприближаемость TSP


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы   3 / 28
Задача о коммивояжере


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


  Определение




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы   4 / 28
Задача о коммивояжере


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


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы   4 / 28
Задача о коммивояжере


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


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы    4 / 28
Задача о коммивояжере


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


  Определение
        Дан полный неориентированный граф 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 .



А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             4 / 28
Задача о коммивояжере


 NP-трудность




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы   5 / 28
Задача о коммивояжере


 NP-трудность

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы   5 / 28
Задача о коммивояжере


 NP-трудность

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы   5 / 28
Задача о коммивояжере


 NP-трудность

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы   5 / 28
Задача о коммивояжере


 NP-трудность

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы   5 / 28
Задача о коммивояжере


 NP-трудность

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы          5 / 28
Задача о коммивояжере


 NP-трудность

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы          5 / 28
Задача о коммивояжере


 NP-трудность

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы          5 / 28
Задача о коммивояжере


 NP-трудность

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

А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы          5 / 28
Задача о коммивояжере   Точный алгоритм для TSP


 План лекции



  1   Задача о коммивояжере
        Точный алгоритм для TSP
        2-приближенный алгоритм для Metric TSP
        3/2-приближенный алгоритм для Metric TSP
        Неприближаемость TSP


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                6 / 28
Задача о коммивояжере   Точный алгоритм для TSP


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


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                7 / 28
Задача о коммивояжере   Точный алгоритм для TSP


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


  Алгоритм
  Dynamic-TSP(G )
        для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждой
        вершины i ∈ S через Opt[S, i] будем обозначать длину
        кратчайшего маршрута, начнинающегося в вершине 1,
        проходящему через все вершины S − {i} и заканчивающегося в
        вершине i




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                7 / 28
Задача о коммивояжере   Точный алгоритм для TSP


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


  Алгоритм
  Dynamic-TSP(G )
        для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждой
        вершины i ∈ S через Opt[S, i] будем обозначать длину
        кратчайшего маршрута, начнинающегося в вершине 1,
        проходящему через все вершины S − {i} и заканчивающегося в
        вершине i
        последовательно заполнить матрицу:
        Opt[S, i] = min{Opt[S − {i}, j] + d (i, j) : j ∈ S − {i}}




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                7 / 28
Задача о коммивояжере   Точный алгоритм для TSP


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


  Алгоритм
  Dynamic-TSP(G )
        для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждой
        вершины i ∈ S через Opt[S, i] будем обозначать длину
        кратчайшего маршрута, начнинающегося в вершине 1,
        проходящему через все вершины S − {i} и заканчивающегося в
        вершине i
        последовательно заполнить матрицу:
        Opt[S, i] = min{Opt[S − {i}, j] + d (i, j) : j ∈ S − {i}}
        вернуть оптимальную стоимость маршрута:
        min{Opt[{2, . . . , n}, j] + d (j, 1) : 2 ≤ j ≤ n}



А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                7 / 28
Задача о коммивояжере   Точный алгоритм для TSP


 Сложность алгоритма



  Лемма
  Сложность алгоритма Dynamic-TSP по времени и по памяти есть
  poly(n)2n .




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                8 / 28
Задача о коммивояжере   Точный алгоритм для TSP


 Сложность алгоритма



  Лемма
  Сложность алгоритма Dynamic-TSP по времени и по памяти есть
  poly(n)2n .

  Факт
  Данный теоретический алгоритм был представлен в 1962-м году и до
  сих пор является самым быстрым из известных.




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                8 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 План лекции



  1   Задача о коммивояжере
        Точный алгоритм для TSP
        2-приближенный алгоритм для Metric TSP
        3/2-приближенный алгоритм для Metric TSP
        Неприближаемость TSP


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               9 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 2-оптимальный алгоритм



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               10 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 2-оптимальный алгоритм



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               10 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 2-оптимальный алгоритм



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               10 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 2-оптимальный алгоритм



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               10 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Пример работы алгоритма


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

                                                                  b          f            g

                                                          c

                                                                       h




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               11 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Пример работы алгоритма


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

                                                                       h




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               11 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Пример работы алгоритма


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               11 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Пример работы алгоритма


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               11 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Пример работы алгоритма


      Алгоритм
      Approx-TSP(G )                                              a          d
             строим минимальное
             остовное дерево T                                                      e
             графа G                                                                      g
                                                                  b          f
             продублируем каждое
             ребро дерева T и в                           c
             полученном графе
                                                                       h
             найдем эйлеров цикл
             выкинем из полученного
             цикла все повторения
             вершин и вернем
             полученный цикл
А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               11 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               12 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               12 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               12 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               12 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               12 / 28
Задача о коммивояжере   2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

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

А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                               12 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 План лекции



  1   Задача о коммивояжере
        Точный алгоритм для TSP
        2-приближенный алгоритм для Metric TSP
        3/2-приближенный алгоритм для Metric TSP
        Неприближаемость TSP


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 13 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 3/2-оптимальный алгоритм


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 14 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 3/2-оптимальный алгоритм


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 14 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 3/2-оптимальный алгоритм


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 14 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 3/2-оптимальный алгоритм


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 14 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 3/2-оптимальный алгоритм


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 14 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 15 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 15 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 15 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 15 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 15 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Анализ алгоритма

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

  Доказательство
      как и в предыдущем доказательстве, вес построенного цикла не
      провосходит WT + WP , где WP — вес минимального
      паросочетания вершин нечетной степени дерева T
        нужно показать, что WP ≤ Wopt /2
        обозначим через A множество всех вершин нечетной степени
        дерева T
        рассмотрим такой гамильтонов цикл на вершинах множества A:
        вершины множества A в нем будут встречаться в такой
        последовательности, в какой они идут в оптимальном
        гамильтоновом цикле графа G
А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 15 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 16 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 16 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 16 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 16 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 16 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Известные оценки



  Факт




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 17 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Известные оценки



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 17 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Известные оценки



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 17 / 28
Задача о коммивояжере   3/2-приближенный алгоритм для Metric TSP


 Известные оценки



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы                                 17 / 28
Задача о коммивояжере   Неприближаемость TSP


 План лекции



  1   Задача о коммивояжере
        Точный алгоритм для TSP
        2-приближенный алгоритм для Metric TSP
        3/2-приближенный алгоритм для Metric TSP
        Неприближаемость TSP


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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             18 / 28
Задача о коммивояжере   Неприближаемость TSP


 Неприближаемость задачи о коммивояжере

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             19 / 28
Задача о коммивояжере   Неприближаемость TSP


 Неприближаемость задачи о коммивояжере

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             19 / 28
Задача о коммивояжере   Неприближаемость TSP


 Неприближаемость задачи о коммивояжере

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             19 / 28
Задача о коммивояжере   Неприближаемость TSP


 Неприближаемость задачи о коммивояжере

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             19 / 28
Задача о коммивояжере   Неприближаемость TSP


 Неприближаемость задачи о коммивояжере

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

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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             19 / 28
Задача о коммивояжере   Неприближаемость TSP


 Неприближаемость задачи о коммивояжере

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

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


А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             19 / 28
Задача о коммивояжере   Неприближаемость TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             20 / 28
Задача о коммивояжере   Неприближаемость TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             20 / 28
Задача о коммивояжере   Неприближаемость TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             20 / 28
Задача о коммивояжере   Неприближаемость TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             20 / 28
Задача о коммивояжере   Неприближаемость TSP


 Доказательство (продолжение)



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




А. Куликов (Computer Science клуб)    6. Приближенные алгоритмы             20 / 28
Задача о рюкзаке


 План лекции



  1   Задача о коммивояжере
        Точный алгоритм для TSP
        2-приближенный алгоритм для Metric TSP
        3/2-приближенный алгоритм для Metric TSP
        Неприближаемость TSP


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   21 / 28
Задача о рюкзаке


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



  Определение




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   22 / 28
Задача о рюкзаке


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



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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   22 / 28
Задача о рюкзаке


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



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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   22 / 28
Задача о рюкзаке


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



  Определение
      Дано 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 .




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   22 / 28
Задача о рюкзаке


 Точный псевдополиномиальный алгоритм

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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   23 / 28
Задача о рюкзаке


 Точный псевдополиномиальный алгоритм

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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   23 / 28
Задача о рюкзаке


 Точный псевдополиномиальный алгоритм

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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   23 / 28
Задача о рюкзаке


 Точный псевдополиномиальный алгоритм

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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   23 / 28
Задача о рюкзаке


 Точный псевдополиномиальный алгоритм

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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   23 / 28
Задача о рюкзаке


 Точный псевдополиномиальный алгоритм

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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   23 / 28
Задача о рюкзаке


 Точный псевдополиномиальный алгоритм

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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы      23 / 28
Задача о рюкзаке


 Точный псевдополиномиальный алгоритм

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


А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы      23 / 28
Задача о рюкзаке


 Анализ времени работы




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   24 / 28
Задача о рюкзаке


 Анализ времени работы


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   24 / 28
Задача о рюкзаке


 Анализ времени работы


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   24 / 28
Задача о рюкзаке


 Анализ времени работы


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   24 / 28
Задача о рюкзаке


 Анализ времени работы


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   24 / 28
Задача о рюкзаке


 Анализ времени работы


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   24 / 28
Задача о рюкзаке


 Анализ времени работы


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


А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   24 / 28
Задача о рюкзаке


 Полностью полиномиальная приближенная схема




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   25 / 28
Задача о рюкзаке


 Полностью полиномиальная приближенная схема


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   25 / 28
Задача о рюкзаке


 Полностью полиномиальная приближенная схема


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   25 / 28
Задача о рюкзаке


 Полностью полиномиальная приближенная схема


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   25 / 28
Задача о рюкзаке


 Полностью полиномиальная приближенная схема


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   25 / 28
Задача о рюкзаке


 Полностью полиномиальная приближенная схема


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы    25 / 28
Задача о рюкзаке


 Полностью полиномиальная приближенная схема


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы    25 / 28
Задача о рюкзаке


 Оценка приближения




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   26 / 28
Задача о рюкзаке


 Оценка приближения




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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   26 / 28
Задача о рюкзаке


 Оценка приближения




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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   26 / 28
Задача о рюкзаке


 Оценка приближения (продолжение)




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   27 / 28
Задача о рюкзаке


 Оценка приближения (продолжение)


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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   27 / 28
Задача о рюкзаке


 Оценка приближения (продолжение)


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

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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы       27 / 28
Задача о рюкзаке


 Оценка приближения (продолжение)


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

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

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




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы       27 / 28
Задача о рюкзаке




          Спасибо за внимание!




А. Куликов (Computer Science клуб)       6. Приближенные алгоритмы   28 / 28

More Related Content

What's hot

5
55
20090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture0220090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture02Computer Science Club
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06Computer Science Club
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Mikhail Kurnosov
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)
Mikhail Kurnosov
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
Mikhail Kurnosov
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Alexey Paznikov
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
Mikhail Kurnosov
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03Computer Science Club
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Mikhail Kurnosov
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
romovpa
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Nikolay Grebenshikov
 
Введение в архитектуры нейронных сетей / HighLoad++ 2016
Введение в архитектуры нейронных сетей / HighLoad++ 2016Введение в архитектуры нейронных сетей / HighLoad++ 2016
Введение в архитектуры нейронных сетей / HighLoad++ 2016
Grigory Sapunov
 
13 встреча — Сжатие данных (Р. Одинцов)
13 встреча — Сжатие данных (Р. Одинцов)13 встреча — Сжатие данных (Р. Одинцов)
13 встреча — Сжатие данных (Р. Одинцов)
Smolensk Computer Science Club
 
Оценка сложности алгоритма
Оценка сложности алгоритмаОценка сложности алгоритма
Оценка сложности алгоритма
Нижегородский институт управления
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05Computer Science Club
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Nikolay Grebenshikov
 
2020 03-31-lection
2020 03-31-lection2020 03-31-lection
2020 03-31-lection
Olga Leshchenko
 
CSEDays. Александр Семенов
CSEDays. Александр СеменовCSEDays. Александр Семенов
CSEDays. Александр СеменовLiloSEA
 
20071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture0420071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture04Computer Science Club
 

What's hot (20)

5
55
5
 
20090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture0220090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture02
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
Введение в архитектуры нейронных сетей / HighLoad++ 2016
Введение в архитектуры нейронных сетей / HighLoad++ 2016Введение в архитектуры нейронных сетей / HighLoad++ 2016
Введение в архитектуры нейронных сетей / HighLoad++ 2016
 
13 встреча — Сжатие данных (Р. Одинцов)
13 встреча — Сжатие данных (Р. Одинцов)13 встреча — Сжатие данных (Р. Одинцов)
13 встреча — Сжатие данных (Р. Одинцов)
 
Оценка сложности алгоритма
Оценка сложности алгоритмаОценка сложности алгоритма
Оценка сложности алгоритма
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
 
2020 03-31-lection
2020 03-31-lection2020 03-31-lection
2020 03-31-lection
 
CSEDays. Александр Семенов
CSEDays. Александр СеменовCSEDays. Александр Семенов
CSEDays. Александр Семенов
 
20071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture0420071014 efficientalgorithms kulikov_lecture04
20071014 efficientalgorithms kulikov_lecture04
 

Viewers also liked

Incredible Paper Sculptures- By Carlos Meira
Incredible Paper Sculptures- By Carlos MeiraIncredible Paper Sculptures- By Carlos Meira
Incredible Paper Sculptures- By Carlos Meiramaditabalnco
 
Laďka Suchá: Dejte uživatelům slovo
Laďka Suchá: Dejte uživatelům slovoLaďka Suchá: Dejte uživatelům slovo
Laďka Suchá: Dejte uživatelům slovo
KISK FF MU
 
Arturo davalos salcedo
Arturo davalos salcedoArturo davalos salcedo
Arturo davalos salcedo
miguecord
 
Base participante
Base participante Base participante
Base participante
Erick Fenco
 
Formulario 210
Formulario 210Formulario 210
Formulario 210ABBEY0106
 
20100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-0320100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-03Computer Science Club
 
20091129 cryptoprotocols nikolenko_lecture09
20091129 cryptoprotocols nikolenko_lecture0920091129 cryptoprotocols nikolenko_lecture09
20091129 cryptoprotocols nikolenko_lecture09Computer Science Club
 
~$Derson trabalho (1)
~$Derson trabalho (1)~$Derson trabalho (1)
~$Derson trabalho (1)
Alan Franco
 
Matchmaking multiplace, formazione, incontri domanda offerta, ricerca industr...
Matchmaking multiplace, formazione, incontri domanda offerta, ricerca industr...Matchmaking multiplace, formazione, incontri domanda offerta, ricerca industr...
Matchmaking multiplace, formazione, incontri domanda offerta, ricerca industr...
Paolo Nesi
 
Batman o longo dia das bruxas 12
Batman   o longo dia das bruxas 12Batman   o longo dia das bruxas 12
Batman o longo dia das bruxas 12Marcos Donato
 
12. 3. Demystifikace Second Life Oborsky
12. 3.   Demystifikace Second Life  Oborsky12. 3.   Demystifikace Second Life  Oborsky
12. 3. Demystifikace Second Life OborskyKISK FF MU
 
20100418 hilberts tenth_problem_matiyasevich_lecture10
20100418 hilberts tenth_problem_matiyasevich_lecture1020100418 hilberts tenth_problem_matiyasevich_lecture10
20100418 hilberts tenth_problem_matiyasevich_lecture10Computer Science Club
 
Programma dettagliato corso implantologia sicoi cfi 2013
Programma dettagliato corso implantologia sicoi cfi 2013Programma dettagliato corso implantologia sicoi cfi 2013
Programma dettagliato corso implantologia sicoi cfi 2013Pier Luigi Cavagni
 
Folk a sant boi projecte
Folk a sant boi projecteFolk a sant boi projecte
Folk a sant boi projecteemmsantboi
 
O que está escrito
O que está escritoO que está escrito
O que está escritoFSBA
 

Viewers also liked (20)

Incredible Paper Sculptures- By Carlos Meira
Incredible Paper Sculptures- By Carlos MeiraIncredible Paper Sculptures- By Carlos Meira
Incredible Paper Sculptures- By Carlos Meira
 
Laďka Suchá: Dejte uživatelům slovo
Laďka Suchá: Dejte uživatelům slovoLaďka Suchá: Dejte uživatelům slovo
Laďka Suchá: Dejte uživatelům slovo
 
Arturo davalos salcedo
Arturo davalos salcedoArturo davalos salcedo
Arturo davalos salcedo
 
pedido para una farmacia
pedido para una farmaciapedido para una farmacia
pedido para una farmacia
 
Mi biografia
Mi biografiaMi biografia
Mi biografia
 
Base participante
Base participante Base participante
Base participante
 
Formulario 210
Formulario 210Formulario 210
Formulario 210
 
Praying
PrayingPraying
Praying
 
20100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-0320100425 model based_testing_kuliamin_lectures01-03
20100425 model based_testing_kuliamin_lectures01-03
 
20091129 cryptoprotocols nikolenko_lecture09
20091129 cryptoprotocols nikolenko_lecture0920091129 cryptoprotocols nikolenko_lecture09
20091129 cryptoprotocols nikolenko_lecture09
 
~$Derson trabalho (1)
~$Derson trabalho (1)~$Derson trabalho (1)
~$Derson trabalho (1)
 
plano4
plano4plano4
plano4
 
Matchmaking multiplace, formazione, incontri domanda offerta, ricerca industr...
Matchmaking multiplace, formazione, incontri domanda offerta, ricerca industr...Matchmaking multiplace, formazione, incontri domanda offerta, ricerca industr...
Matchmaking multiplace, formazione, incontri domanda offerta, ricerca industr...
 
Batman o longo dia das bruxas 12
Batman   o longo dia das bruxas 12Batman   o longo dia das bruxas 12
Batman o longo dia das bruxas 12
 
12. 3. Demystifikace Second Life Oborsky
12. 3.   Demystifikace Second Life  Oborsky12. 3.   Demystifikace Second Life  Oborsky
12. 3. Demystifikace Second Life Oborsky
 
20100418 hilberts tenth_problem_matiyasevich_lecture10
20100418 hilberts tenth_problem_matiyasevich_lecture1020100418 hilberts tenth_problem_matiyasevich_lecture10
20100418 hilberts tenth_problem_matiyasevich_lecture10
 
Programma dettagliato corso implantologia sicoi cfi 2013
Programma dettagliato corso implantologia sicoi cfi 2013Programma dettagliato corso implantologia sicoi cfi 2013
Programma dettagliato corso implantologia sicoi cfi 2013
 
Folk a sant boi projecte
Folk a sant boi projecteFolk a sant boi projecte
Folk a sant boi projecte
 
O que está escrito
O que está escritoO que está escrito
O que está escrito
 
1. cover ppl
1. cover ppl1. cover ppl
1. cover ppl
 

Similar to 20091101 algorithmsfornphardproblems kulikov_lecture06

20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03Computer 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
 
20070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture0120070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture01Computer Science Club
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15Computer Science Club
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15Computer Science Club
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Algorithms For Np Hard Problems
Algorithms For Np Hard ProblemsAlgorithms For Np Hard Problems
Algorithms For Np Hard ProblemsLiloSEA
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Positive Hack Days
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2
Vladimir Krylov
 
20071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture0720071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture07Computer Science Club
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Метод отдельных тел
Метод отдельных телМетод отдельных тел
Метод отдельных тел
Theoretical mechanics department
 
20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02Computer Science Club
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08Computer Science Club
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
Alexey Paznikov
 
Лекция 11: Методы разработки алгоритмов. Метод декомпозиции
Лекция 11: Методы разработки алгоритмов. Метод декомпозицииЛекция 11: Методы разработки алгоритмов. Метод декомпозиции
Лекция 11: Методы разработки алгоритмов. Метод декомпозицииMikhail Kurnosov
 
Методы обучения линейных моделей
Методы обучения линейных моделейМетоды обучения линейных моделей
Методы обучения линейных моделей
Alex
 
20130301 np algorithms_kulikov_lecture01_np
20130301 np algorithms_kulikov_lecture01_np20130301 np algorithms_kulikov_lecture01_np
20130301 np algorithms_kulikov_lecture01_npComputer Science Club
 

Similar to 20091101 algorithmsfornphardproblems kulikov_lecture06 (20)

20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03
 
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
 
20070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture0120070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture01
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
 
20080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture1520080309 efficientalgorithms kulikov_lecture15
20080309 efficientalgorithms kulikov_lecture15
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Algorithms For Np Hard Problems
Algorithms For Np Hard ProblemsAlgorithms For Np Hard Problems
Algorithms For Np Hard Problems
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2
 
20071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture0720071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture07
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
 
Метод отдельных тел
Метод отдельных телМетод отдельных тел
Метод отдельных тел
 
20070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture0220070930 efficientalgorithms kulikov_lecture02
20070930 efficientalgorithms kulikov_lecture02
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Лекция 11: Методы разработки алгоритмов. Метод декомпозиции
Лекция 11: Методы разработки алгоритмов. Метод декомпозицииЛекция 11: Методы разработки алгоритмов. Метод декомпозиции
Лекция 11: Методы разработки алгоритмов. Метод декомпозиции
 
Методы обучения линейных моделей
Методы обучения линейных моделейМетоды обучения линейных моделей
Методы обучения линейных моделей
 
20130301 np algorithms_kulikov_lecture01_np
20130301 np algorithms_kulikov_lecture01_np20130301 np algorithms_kulikov_lecture01_np
20130301 np algorithms_kulikov_lecture01_np
 

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
 

20091101 algorithmsfornphardproblems kulikov_lecture06

  • 1. Алгоритмы для NP-трудных задач Лекция 6: Приближенные алгоритмы А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 1 / 28
  • 2. План лекции 1 Задача о коммивояжере Точный алгоритм для TSP 2-приближенный алгоритм для Metric TSP 3/2-приближенный алгоритм для Metric TSP Неприближаемость TSP А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 2 / 28
  • 3. План лекции 1 Задача о коммивояжере Точный алгоритм для TSP 2-приближенный алгоритм для Metric TSP 3/2-приближенный алгоритм для Metric TSP Неприближаемость TSP 2 Задача о рюкзаке А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 2 / 28
  • 4. Задача о коммивояжере План лекции 1 Задача о коммивояжере Точный алгоритм для TSP 2-приближенный алгоритм для Metric TSP 3/2-приближенный алгоритм для Metric TSP Неприближаемость TSP 2 Задача о рюкзаке А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 3 / 28
  • 5. Задача о коммивояжере Задача о коммивояжере Определение А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 4 / 28
  • 6. Задача о коммивояжере Задача о коммивояжере Определение Дан полный неориентированный граф G = (V , E ), каждому ребру (u, v ) которого приписана некоторая стоимость c(u, v ). А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 4 / 28
  • 7. Задача о коммивояжере Задача о коммивояжере Определение Дан полный неориентированный граф G = (V , E ), каждому ребру (u, v ) которого приписана некоторая стоимость c(u, v ). Задача о коммивояжере (travelling salesman problem, TSP) заключается в нахождении в графе гамильтонова цикла минимальной стоимости. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 4 / 28
  • 8. Задача о коммивояжере Задача о коммивояжере Определение Дан полный неориентированный граф 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 . А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 4 / 28
  • 9. Задача о коммивояжере NP-трудность А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 5 / 28
  • 10. Задача о коммивояжере NP-трудность Задача о коммивояжере является NP-трудной. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 5 / 28
  • 11. Задача о коммивояжере NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 5 / 28
  • 12. Задача о коммивояжере NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 5 / 28
  • 13. Задача о коммивояжере NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 5 / 28
  • 14. Задача о коммивояжере NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. допустим, мы умеем решать эту задачу за полиномиальное время А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 5 / 28
  • 15. Задача о коммивояжере NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. допустим, мы умеем решать эту задачу за полиномиальное время возьмем произвольный граф и присвоим всем его ребрам вес 1 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 5 / 28
  • 16. Задача о коммивояжере NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. допустим, мы умеем решать эту задачу за полиномиальное время возьмем произвольный граф и присвоим всем его ребрам вес 1 между любыми двумя не соединенными ребром вершинами добавим ребро веса 2 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 5 / 28
  • 17. Задача о коммивояжере NP-трудность Задача о коммивояжере является NP-трудной. Тривиальный алгоритм перебирает все возможные пути за время n!. Наилучший известный на данный момент алгоритм основан на динамическом программировании и имеет время работы (а также память) 2n . Задача о коммивояжере в метрическом пространстве тоже является NP-трудной. допустим, мы умеем решать эту задачу за полиномиальное время возьмем произвольный граф и присвоим всем его ребрам вес 1 между любыми двумя не соединенными ребром вершинами добавим ребро веса 2 тогда построение минимального гамильтонова цикла в полученном графе эквивалентно ответу на вопрос, существует ли в исходном графе гамильтонов цикл А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 5 / 28
  • 18. Задача о коммивояжере Точный алгоритм для TSP План лекции 1 Задача о коммивояжере Точный алгоритм для TSP 2-приближенный алгоритм для Metric TSP 3/2-приближенный алгоритм для Metric TSP Неприближаемость TSP 2 Задача о рюкзаке А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 6 / 28
  • 19. Задача о коммивояжере Точный алгоритм для TSP Задача о коммивояжере Алгоритм Dynamic-TSP(G ) А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 7 / 28
  • 20. Задача о коммивояжере Точный алгоритм для TSP Задача о коммивояжере Алгоритм Dynamic-TSP(G ) для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждой вершины i ∈ S через Opt[S, i] будем обозначать длину кратчайшего маршрута, начнинающегося в вершине 1, проходящему через все вершины S − {i} и заканчивающегося в вершине i А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 7 / 28
  • 21. Задача о коммивояжере Точный алгоритм для TSP Задача о коммивояжере Алгоритм Dynamic-TSP(G ) для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждой вершины i ∈ S через Opt[S, i] будем обозначать длину кратчайшего маршрута, начнинающегося в вершине 1, проходящему через все вершины S − {i} и заканчивающегося в вершине i последовательно заполнить матрицу: Opt[S, i] = min{Opt[S − {i}, j] + d (i, j) : j ∈ S − {i}} А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 7 / 28
  • 22. Задача о коммивояжере Точный алгоритм для TSP Задача о коммивояжере Алгоритм Dynamic-TSP(G ) для каждого непустого подмножества S ⊆ {2, . . . , n} и для каждой вершины i ∈ S через Opt[S, i] будем обозначать длину кратчайшего маршрута, начнинающегося в вершине 1, проходящему через все вершины S − {i} и заканчивающегося в вершине i последовательно заполнить матрицу: Opt[S, i] = min{Opt[S − {i}, j] + d (i, j) : j ∈ S − {i}} вернуть оптимальную стоимость маршрута: min{Opt[{2, . . . , n}, j] + d (j, 1) : 2 ≤ j ≤ n} А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 7 / 28
  • 23. Задача о коммивояжере Точный алгоритм для TSP Сложность алгоритма Лемма Сложность алгоритма Dynamic-TSP по времени и по памяти есть poly(n)2n . А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 8 / 28
  • 24. Задача о коммивояжере Точный алгоритм для TSP Сложность алгоритма Лемма Сложность алгоритма Dynamic-TSP по времени и по памяти есть poly(n)2n . Факт Данный теоретический алгоритм был представлен в 1962-м году и до сих пор является самым быстрым из известных. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 8 / 28
  • 25. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP План лекции 1 Задача о коммивояжере Точный алгоритм для TSP 2-приближенный алгоритм для Metric TSP 3/2-приближенный алгоритм для Metric TSP Неприближаемость TSP 2 Задача о рюкзаке А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 9 / 28
  • 26. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP 2-оптимальный алгоритм Алгоритм Approx-TSP(G ) А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 10 / 28
  • 27. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP 2-оптимальный алгоритм Алгоритм Approx-TSP(G ) строим минимальное остовное дерево T графа G А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 10 / 28
  • 28. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP 2-оптимальный алгоритм Алгоритм Approx-TSP(G ) строим минимальное остовное дерево T графа G продублируем каждое ребро дерева T и в полученном графе найдем эйлеров цикл А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 10 / 28
  • 29. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP 2-оптимальный алгоритм Алгоритм Approx-TSP(G ) строим минимальное остовное дерево T графа G продублируем каждое ребро дерева T и в полученном графе найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 10 / 28
  • 30. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Пример работы алгоритма Алгоритм Approx-TSP(G ) a d e b f g c h А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 11 / 28
  • 31. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное остовное дерево T e графа G g b f c h А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 11 / 28
  • 32. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное остовное дерево T e графа G g b f продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 11 / 28
  • 33. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное остовное дерево T e графа G g b f продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 11 / 28
  • 34. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Пример работы алгоритма Алгоритм Approx-TSP(G ) a d строим минимальное остовное дерево T e графа G g b f продублируем каждое ребро дерева T и в c полученном графе h найдем эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 11 / 28
  • 35. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 12 / 28
  • 36. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 12 / 28
  • 37. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 12 / 28
  • 38. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва цикла получается остовное дерево А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 12 / 28
  • 39. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва цикла получается остовное дерево каждое ребро построенного гамильтонова цикла заменяет какой-то путь эйлерова цикла, длина которого по неравенству треугольника не менее длины этого ребра А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 12 / 28
  • 40. Задача о коммивояжере 2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP является 2-приближенным. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва цикла получается остовное дерево каждое ребро построенного гамильтонова цикла заменяет какой-то путь эйлерова цикла, длина которого по неравенству треугольника не менее длины этого ребра значит, длина найденного пути не превосходит 2WT , а следовательно, и 2Wopt А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 12 / 28
  • 41. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP План лекции 1 Задача о коммивояжере Точный алгоритм для TSP 2-приближенный алгоритм для Metric TSP 3/2-приближенный алгоритм для Metric TSP Неприближаемость TSP 2 Задача о рюкзаке А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 13 / 28
  • 42. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 14 / 28
  • 43. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) строим минимальное остовное дерево T графа G А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 14 / 28
  • 44. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) строим минимальное остовное дерево T графа G найдем минимальное полное паросочетание всех вершин дерева T нечетной степени А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 14 / 28
  • 45. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) строим минимальное остовное дерево T графа G найдем минимальное полное паросочетание всех вершин дерева T нечетной степени добавим найденные ребра в дерево T и найдем в полученном графе эйлеров цикл А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 14 / 28
  • 46. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP 3/2-оптимальный алгоритм Алгоритм Approx-TSP-Improved(G ) строим минимальное остовное дерево T графа G найдем минимальное полное паросочетание всех вершин дерева T нечетной степени добавим найденные ребра в дерево T и найдем в полученном графе эйлеров цикл выкинем из полученного цикла все повторения вершин и вернем полученный цикл А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 14 / 28
  • 47. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 15 / 28
  • 48. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 15 / 28
  • 49. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство как и в предыдущем доказательстве, вес построенного цикла не провосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 15 / 28
  • 50. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство как и в предыдущем доказательстве, вес построенного цикла не провосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T нужно показать, что WP ≤ Wopt /2 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 15 / 28
  • 51. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство как и в предыдущем доказательстве, вес построенного цикла не провосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T нужно показать, что WP ≤ Wopt /2 обозначим через A множество всех вершин нечетной степени дерева T А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 15 / 28
  • 52. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Анализ алгоритма Теорема Алгоритм Approx-TSP-Improved является 3/2-приближенным. Доказательство как и в предыдущем доказательстве, вес построенного цикла не провосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T нужно показать, что WP ≤ Wopt /2 обозначим через A множество всех вершин нечетной степени дерева T рассмотрим такой гамильтонов цикл на вершинах множества A: вершины множества A в нем будут встречаться в такой последовательности, в какой они идут в оптимальном гамильтоновом цикле графа G А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 15 / 28
  • 53. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Доказательство (продолжение) Доказательство А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 16 / 28
  • 54. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Доказательство (продолжение) Доказательство важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 16 / 28
  • 55. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Доказательство (продолжение) Доказательство важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования разбив вершины только что построенного цикла на четные и нечетные, мы получим два паросочетания А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 16 / 28
  • 56. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Доказательство (продолжение) Доказательство важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования разбив вершины только что построенного цикла на четные и нечетные, мы получим два паросочетания вес хотя бы одного из них будет не более Wopt /2 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 16 / 28
  • 57. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Доказательство (продолжение) Доказательство важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования разбив вершины только что построенного цикла на четные и нечетные, мы получим два паросочетания вес хотя бы одного из них будет не более Wopt /2 значит, и вес минимального паросочетания не превосходит Wopt /2 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 16 / 28
  • 58. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Известные оценки Факт А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 17 / 28
  • 59. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Известные оценки Факт Если P̸=NP, то не существует 117 -приближенного алгоритма для 116 задачи о коммивояжере в метрическом пространстве. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 17 / 28
  • 60. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Известные оценки Факт Если P̸=NP, то не существует 117 -приближенного алгоритма для 116 задачи о коммивояжере в метрическом пространстве. 3/2 — лучшее известное приближение для задачи о коммивояжере в метрическом пространстве. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 17 / 28
  • 61. Задача о коммивояжере 3/2-приближенный алгоритм для Metric TSP Известные оценки Факт Если P̸=NP, то не существует 117 -приближенного алгоритма для 116 задачи о коммивояжере в метрическом пространстве. 3/2 — лучшее известное приближение для задачи о коммивояжере в метрическом пространстве. Для случая, когда все ребра имеют вес 1 или 2, известен 5/6-приближенный алгоритм. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 17 / 28
  • 62. Задача о коммивояжере Неприближаемость TSP План лекции 1 Задача о коммивояжере Точный алгоритм для TSP 2-приближенный алгоритм для Metric TSP 3/2-приближенный алгоритм для Metric TSP Неприближаемость TSP 2 Задача о рюкзаке А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 18 / 28
  • 63. Задача о коммивояжере Неприближаемость TSP Неприближаемость задачи о коммивояжере Теорема Пусть P̸=NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 19 / 28
  • 64. Задача о коммивояжере Неприближаемость TSP Неприближаемость задачи о коммивояжере Теорема Пусть P̸=NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 19 / 28
  • 65. Задача о коммивояжере Неприближаемость TSP Неприближаемость задачи о коммивояжере Теорема Пусть P̸=NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство предположим, что такой алгоритм все-таки существует А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 19 / 28
  • 66. Задача о коммивояжере Неприближаемость TSP Неприближаемость задачи о коммивояжере Теорема Пусть P̸=NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство предположим, что такой алгоритм все-таки существует возьмем произвольный граф и присвоим всем его ребрам вес 1 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 19 / 28
  • 67. Задача о коммивояжере Неприближаемость TSP Неприближаемость задачи о коммивояжере Теорема Пусть P̸=NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство предположим, что такой алгоритм все-таки существует возьмем произвольный граф и присвоим всем его ребрам вес 1 между любыми двумя не соединенными ребром вершинами добавим ребро веса cn + 1 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 19 / 28
  • 68. Задача о коммивояжере Неприближаемость TSP Неприближаемость задачи о коммивояжере Теорема Пусть P̸=NP и ������(n) = c ∈ N. Тогда не существует ������(n)-приближенного алгоритма для задачи о коммивояжере. Доказательство предположим, что такой алгоритм все-таки существует возьмем произвольный граф и присвоим всем его ребрам вес 1 между любыми двумя не соединенными ребром вершинами добавим ребро веса cn + 1 заметим теперь, что если в исходном графе существует гамильтонов цикл, то в новом графе существует гамильтонов цикл веса n А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 19 / 28
  • 69. Задача о коммивояжере Неприближаемость TSP Доказательство (продолжение) Доказательство А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 20 / 28
  • 70. Задача о коммивояжере Неприближаемость TSP Доказательство (продолжение) Доказательство если же такого цикла в исходном графе нет, то самый дешевый цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 20 / 28
  • 71. Задача о коммивояжере Неприближаемость TSP Доказательство (продолжение) Доказательство если же такого цикла в исходном графе нет, то самый дешевый цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc таким образом, с помощью ������(n)-приближенного алгоритма для задачи о коммивояжере мы можем понять, стоимость оптимального цикла в построенном графе превосходит n или нет А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 20 / 28
  • 72. Задача о коммивояжере Неприближаемость TSP Доказательство (продолжение) Доказательство если же такого цикла в исходном графе нет, то самый дешевый цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc таким образом, с помощью ������(n)-приближенного алгоритма для задачи о коммивояжере мы можем понять, стоимость оптимального цикла в построенном графе превосходит n или нет а это позволит нам понять (за полиномиальное время!), есть в исходном графе гамильтонов цикл или нет А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 20 / 28
  • 73. Задача о коммивояжере Неприближаемость TSP Доказательство (продолжение) Доказательство если же такого цикла в исходном графе нет, то самый дешевый цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc таким образом, с помощью ������(n)-приближенного алгоритма для задачи о коммивояжере мы можем понять, стоимость оптимального цикла в построенном графе превосходит n или нет а это позволит нам понять (за полиномиальное время!), есть в исходном графе гамильтонов цикл или нет но тогда P=NP А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 20 / 28
  • 74. Задача о рюкзаке План лекции 1 Задача о коммивояжере Точный алгоритм для TSP 2-приближенный алгоритм для Metric TSP 3/2-приближенный алгоритм для Metric TSP Неприближаемость TSP 2 Задача о рюкзаке А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 21 / 28
  • 75. Задача о рюкзаке Задача о рюкзаке Определение А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 22 / 28
  • 76. Задача о рюкзаке Задача о рюкзаке Определение Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями p1 , . . . , pn ∈ N, а также общий вес W . А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 22 / 28
  • 77. Задача о рюкзаке Задача о рюкзаке Определение Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями p1 , . . . , pn ∈ N, а также общий вес W . Задача о рюкзаке (knapsack problem) заключается в нахождении ∑︀ такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и ∑︀ i∈I pi максимально. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 22 / 28
  • 78. Задача о рюкзаке Задача о рюкзаке Определение Дано 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 . А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 22 / 28
  • 79. Задача о рюкзаке Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 23 / 28
  • 80. Задача о рюкзаке Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 23 / 28
  • 81. Задача о рюкзаке Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi P := maxi∈[1..n] pi А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 23 / 28
  • 82. Задача о рюкзаке Точный псевдополиномиальный алгоритм Алгоритм Psuedopoly-Knapsack({wi }, {pi }, W ) ∑︀ S := i∈[1..n] pi P := maxi∈[1..n] pi через w (k, p) обозначим минимальный объем, необходимый для того, чтобы уложить предметы с номерами, не превосходящими k ∈ [1..n], общей стоимостью не менее p ≤ S А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 23 / 28
  • 83. Задача о рюкзаке Точный псевдополиномиальный алгоритм Алгоритм 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 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 23 / 28
  • 84. Задача о рюкзаке Точный псевдополиномиальный алгоритм Алгоритм 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 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 23 / 28
  • 85. Задача о рюкзаке Точный псевдополиномиальный алгоритм Алгоритм 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 } А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 23 / 28
  • 86. Задача о рюкзаке Точный псевдополиномиальный алгоритм Алгоритм 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 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 23 / 28
  • 87. Задача о рюкзаке Анализ времени работы А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 24 / 28
  • 88. Задача о рюкзаке Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 24 / 28
  • 89. Задача о рюкзаке Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 24 / 28
  • 90. Задача о рюкзаке Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. Идея: выберем достаточно большое число и разделим на него все стоимости. Оптимальное решение не перестанет быть оптимальным, а время работы алгоритма уменьшится. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 24 / 28
  • 91. Задача о рюкзаке Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. Идея: выберем достаточно большое число и разделим на него все стоимости. Оптимальное решение не перестанет быть оптимальным, а время работы алгоритма уменьшится. В чем же тогда подвох? А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 24 / 28
  • 92. Задача о рюкзаке Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. Идея: выберем достаточно большое число и разделим на него все стоимости. Оптимальное решение не перестанет быть оптимальным, а время работы алгоритма уменьшится. В чем же тогда подвох? Стоимости могут перестать быть целыми после деления. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 24 / 28
  • 93. Задача о рюкзаке Анализ времени работы Ясно, что алгоритм работает не более, чем nS, то есть не более n2 P. Значит, мы могли бы решить задачу за полиномиальное время, если бы pi были достаточно маленькими. Идея: выберем достаточно большое число и разделим на него все стоимости. Оптимальное решение не перестанет быть оптимальным, а время работы алгоритма уменьшится. В чем же тогда подвох? Стоимости могут перестать быть целыми после деления. Округлим их и будем надеяться, что потеряли мы от этого не очень много. А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 24 / 28
  • 94. Задача о рюкзаке Полностью полиномиальная приближенная схема А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 25 / 28
  • 95. Задача о рюкзаке Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 25 / 28
  • 96. Задача о рюкзаке Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 25 / 28
  • 97. Задача о рюкзаке Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉ А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 25 / 28
  • 98. Задача о рюкзаке Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉ запустим Psuedopoly-Knapsack на полученном наборе стоимостей А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 25 / 28
  • 99. Задача о рюкзаке Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉ запустим Psuedopoly-Knapsack на полученном наборе стоимостей время работы алгорита не превосходит n2 max pi′ ≤ n3 P(1 + 1/������)/P А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 25 / 28
  • 100. Задача о рюкзаке Полностью полиномиальная приближенная схема итак, пусть задан ������, определяющий, с какой точностью мы хотим найти ответ P пусть K������ = (1+1/������)n поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉ запустим Psuedopoly-Knapsack на полученном наборе стоимостей время работы алгорита не превосходит n2 max pi′ ≤ n3 P(1 + 1/������)/P осталось доказать, что полученный алгоритм дает достаточно хорошее приближение А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 25 / 28
  • 101. Задача о рюкзаке Оценка приближения А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 26 / 28
  • 102. Задача о рюкзаке Оценка приближения пусть A������ — общая стоимость набора предметов, который вернул алгоритм А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 26 / 28
  • 103. Задача о рюкзаке Оценка приближения пусть A������ — общая стоимость набора предметов, который вернул алгоритм заметим, что A������ ≥ Aopt − K������ n: псевдополиномиальный алгоритм находит точное решение, поэтому отклонение могло появиться только при округлении; при округлении могло потеряться не более 1 на каждом предмете, эта потеря домножается на K������ при обратном переходе от pi′ к pi А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 26 / 28
  • 104. Задача о рюкзаке Оценка приближения (продолжение) А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 27 / 28
  • 105. Задача о рюкзаке Оценка приближения (продолжение) Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой предмет А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 27 / 28
  • 106. Задача о рюкзаке Оценка приближения (продолжение) Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой предмет тогда A������ Aopt − K������ ≥ = Aopt Aopt Pn 1 1 1− ≥1− = Aopt n(1 + 1/������) 1 + 1/������ ������ + 1 А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 27 / 28
  • 107. Задача о рюкзаке Оценка приближения (продолжение) Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой предмет тогда A������ Aopt − K������ ≥ = Aopt Aopt Pn 1 1 1− ≥1− = Aopt n(1 + 1/������) 1 + 1/������ ������ + 1 следовательно, A������ ≥ (1 − ������)Aopt А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 27 / 28
  • 108. Задача о рюкзаке Спасибо за внимание! А. Куликов (Computer Science клуб) 6. Приближенные алгоритмы 28 / 28