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

                                      А. Куликов

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




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




1   Кратчайшая надпоследовательность
      Пример работы алгоритма




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


Определение




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


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




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


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




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


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




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


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




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


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

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




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




1   Кратчайшая надпоследовательность
      Пример работы алгоритма




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



Определение




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



Определение
      Дано множество строк {s1 , . . . , sn }.




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



Определение
      Дано множество строк {s1 , . . . , sn }.
      Задача о кратчайшей общей надпоследовательности (shortest
      common superstring) заключается в нахождении самой короткой
      строки u, которая содержит в качестве подстроки каждую из si .




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



Определение
      Дано множество строк {s1 , . . . , sn }.
      Задача о кратчайшей общей надпоследовательности (shortest
      common superstring) заключается в нахождении самой короткой
      строки u, которая содержит в качестве подстроки каждую из si .

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




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

Определение




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

Определение
      Дано множество U = {u1 , . . . , un } и семейство его подмножеств
      ℱ = {S1 , . . . , Sk }, Si ⊆ U.




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

Определение
      Дано множество U = {u1 , . . . , un } и семейство его подмножеств
      ℱ = {S1 , . . . , Sk }, Si ⊆ U.
                                                        ⋃︀
      В сумме все подмножества покрывают U: U = S∈ℱ S.




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

Определение
      Дано множество U = {u1 , . . . , un } и семейство его подмножеств
      ℱ = {S1 , . . . , Sk }, Si ⊆ U.
                                                        ⋃︀
      В сумме все подмножества покрывают U: U = S∈ℱ S.
      Каждому подмножеству Si сопоставлена некоторая
      неотрицательная стоимость pi ≥ 0.




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

Определение
      Дано множество U = {u1 , . . . , un } и семейство его подмножеств
      ℱ = {S1 , . . . , Sk }, Si ⊆ U.
                                                        ⋃︀
      В сумме все подмножества покрывают U: U = S∈ℱ S.
      Каждому подмножеству Si сопоставлена некоторая
      неотрицательная стоимость pi ≥ 0.
      Задача о покрытии множествами (set cover problem) заключается
      в нахождении набора подмножеств, покрывающего все множество
      U и имеющего минимальный возможный вес.




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

Определение
      Дано множество U = {u1 , . . . , un } и семейство его подмножеств
      ℱ = {S1 , . . . , Sk }, Si ⊆ U.
                                                        ⋃︀
      В сумме все подмножества покрывают U: U = S∈ℱ S.
      Каждому подмножеству Si сопоставлена некоторая
      неотрицательная стоимость pi ≥ 0.
      Задача о покрытии множествами (set cover problem) заключается
      в нахождении набора подмножеств, покрывающего все множество
      U и имеющего минимальный возможный вес.

Теорема
Существует Hn -приближенный алгоритм для задачи о покрытии
множествами.


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




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы   7 / 15
Сведение к задаче о покрытии множествами
      НУО, среди строк нет подстрок друг друга




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы   7 / 15
Сведение к задаче о покрытии множествами
      НУО, среди строк нет подстрок друг друга
      для всех i, j, k, для которых суффикс строки si длины k совпадает
      с префиксом строки sj длины k, построим строку
      wijk = si · sj [k + 1..|sj |]:




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы           7 / 15
Сведение к задаче о покрытии множествами
      НУО, среди строк нет подстрок друг друга
      для всех i, j, k, для которых суффикс строки si длины k совпадает
      с префиксом строки sj длины k, построим строку
      wijk = si · sj [k + 1..|sj |]:

                           s6 = abcab bbca, s2 = bbca aaccbcac
                                ⏟ ⏞ ⏟ ⏞          ⏟ ⏞ ⏟ ⏞
                                  X     Y             Y     Z




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы           7 / 15
Сведение к задаче о покрытии множествами
      НУО, среди строк нет подстрок друг друга
      для всех i, j, k, для которых суффикс строки si длины k совпадает
      с префиксом строки sj длины k, построим строку
      wijk = si · sj [k + 1..|sj |]:

                           s6 = abcab bbca, s2 = bbca aaccbcac
                                ⏟ ⏞ ⏟ ⏞          ⏟ ⏞ ⏟ ⏞
                                   X      Y             Y         Z


                                w6,2,4 = abcab bbca aaccbcac
                                         ⏟ ⏞ ⏟ ⏞ ⏟ ⏞
                                              X    Y          Z




А. Куликов (CS клуб при ПОМИ)     2. Приближенные алгоритмы           7 / 15
Сведение к задаче о покрытии множествами
      НУО, среди строк нет подстрок друг друга
      для всех i, j, k, для которых суффикс строки si длины k совпадает
      с префиксом строки sj длины k, построим строку
      wijk = si · sj [k + 1..|sj |]:

                           s6 = abcab bbca, s2 = bbca aaccbcac
                                ⏟ ⏞ ⏟ ⏞          ⏟ ⏞ ⏟ ⏞
                                   X      Y             Y         Z


                                w6,2,4 = abcab bbca aaccbcac
                                         ⏟ ⏞ ⏟ ⏞ ⏟ ⏞
                                              X    Y          Z


      для любой строки s определим
      set(s) = {si |si — подстрока s}




А. Куликов (CS клуб при ПОМИ)     2. Приближенные алгоритмы           7 / 15
Сведение к задаче о покрытии множествами
      НУО, среди строк нет подстрок друг друга
      для всех i, j, k, для которых суффикс строки si длины k совпадает
      с префиксом строки sj длины k, построим строку
      wijk = si · sj [k + 1..|sj |]:

                           s6 = abcab bbca, s2 = bbca aaccbcac
                                ⏟ ⏞ ⏟ ⏞          ⏟ ⏞ ⏟ ⏞
                                   X      Y             Y         Z


                                w6,2,4 = abcab bbca aaccbcac
                                         ⏟ ⏞ ⏟ ⏞ ⏟ ⏞
                                              X    Y          Z


      для любой строки s определим
      set(s) = {si |si — подстрока s}
      стоимость множества set(s) положим равной длине строки s



А. Куликов (CS клуб при ПОМИ)     2. Приближенные алгоритмы           7 / 15
Сведение к задаче о покрытии множествами
      НУО, среди строк нет подстрок друг друга
      для всех i, j, k, для которых суффикс строки si длины k совпадает
      с префиксом строки sj длины k, построим строку
      wijk = si · sj [k + 1..|sj |]:

                           s6 = abcab bbca, s2 = bbca aaccbcac
                                ⏟ ⏞ ⏟ ⏞          ⏟ ⏞ ⏟ ⏞
                                   X      Y             Y         Z


                                w6,2,4 = abcab bbca aaccbcac
                                         ⏟ ⏞ ⏟ ⏞ ⏟ ⏞
                                              X    Y          Z


      для любой строки s определим
      set(s) = {si |si — подстрока s}
      стоимость множества set(s) положим равной длине строки s
      вход задачи о покрытии множествами: U = {s1 , . . . , sn },
      ℱ = {set(si )} ∪ {set(wijk )}
А. Куликов (CS клуб при ПОМИ)     2. Приближенные алгоритмы           7 / 15
Сведение к задаче о покрытии множествами
(продолжение)




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

      итак, алгоритм возвращает нам некоторые множества




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

      итак, алгоритм возвращает нам некоторые множества
      мы сливаем соответствующие им строки и получаем строку,
      содержащую все si




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

      итак, алгоритм возвращает нам некоторые множества
      мы сливаем соответствующие им строки и получаем строку,
      содержащую все si
      осталось показать, что построенный нами алгоритм является
      2Hn -приближенным




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

      итак, алгоритм возвращает нам некоторые множества
      мы сливаем соответствующие им строки и получаем строку,
      содержащую все si
      осталось показать, что построенный нами алгоритм является
      2Hn -приближенным
      для этого достаточно доказать приведенную ниже лемму




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

      итак, алгоритм возвращает нам некоторые множества
      мы сливаем соответствующие им строки и получаем строку,
      содержащую все si
      осталось показать, что построенный нами алгоритм является
      2Hn -приближенным
      для этого достаточно доказать приведенную ниже лемму

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



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




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы   9 / 15
Доказательство леммы
Доказательство
      перенумеруем строки si в порядке их вхождения в (какую-нибудь)
      оптимальную строку s




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы         9 / 15
Доказательство леммы
Доказательство
      перенумеруем строки si в порядке их вхождения в (какую-нибудь)
      оптимальную строку s
      ясно, что вхождение каждой строки начинается и заканчивается
      строго позже предыдущей




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы         9 / 15
Доказательство леммы
Доказательство
      перенумеруем строки si в порядке их вхождения в (какую-нибудь)
      оптимальную строку s
      ясно, что вхождение каждой строки начинается и заканчивается
      строго позже предыдущей
      разделим строки на блоки следующим образом: в первый блок
      берем s1 и все si , первые вхождения которых начинаются до конца
      первого вхождения s1




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы          9 / 15
Доказательство леммы
Доказательство
      перенумеруем строки si в порядке их вхождения в (какую-нибудь)
      оптимальную строку s
      ясно, что вхождение каждой строки начинается и заканчивается
      строго позже предыдущей
      разделим строки на блоки следующим образом: в первый блок
      берем s1 и все si , первые вхождения которых начинаются до конца
      первого вхождения s1
      сделаем из первой и последней строки этого блока общую
      строку — получим строку w1,j,k




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы          9 / 15
Доказательство леммы
Доказательство
      перенумеруем строки si в порядке их вхождения в (какую-нибудь)
      оптимальную строку s
      ясно, что вхождение каждой строки начинается и заканчивается
      строго позже предыдущей
      разделим строки на блоки следующим образом: в первый блок
      берем s1 и все si , первые вхождения которых начинаются до конца
      первого вхождения s1
      сделаем из первой и последней строки этого блока общую
      строку — получим строку w1,j,k
      следующий блок строим, начиная с первой строки, не попавшей в
      первый блок, и т.д.




А. Куликов (CS клуб при ПОМИ)   2. Приближенные алгоритмы          9 / 15
Доказательство леммы
Доказательство
      перенумеруем строки si в порядке их вхождения в (какую-нибудь)
      оптимальную строку s
      ясно, что вхождение каждой строки начинается и заканчивается
      строго позже предыдущей
      разделим строки на блоки следующим образом: в первый блок
      берем s1 и все si , первые вхождения которых начинаются до конца
      первого вхождения s1
      сделаем из первой и последней строки этого блока общую
      строку — получим строку w1,j,k
      следующий блок строим, начиная с первой строки, не попавшей в
      первый блок, и т.д.
      в итоге, получаем некоторое решение задачи о покрытии
      множествами

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



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




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



Доказательство
      достаточно показать, что стоимость данного конкретного решения
      не превосходит удвоенной длины s




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



Доказательство
      достаточно показать, что стоимость данного конкретного решения
      не превосходит удвоенной длины s
      это верно, поскольку каждый символ строки s входит не более
      чем в два блока




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



Доказательство
      достаточно показать, что стоимость данного конкретного решения
      не превосходит удвоенной длины s
      это верно, поскольку каждый символ строки s входит не более
      чем в два блока

Упражнение
Докажите последнее утверждение.




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




1   Кратчайшая надпоследовательность
      Пример работы алгоритма




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




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

      допустим, на вход даны следующие строки:
      s1 = abc, s2 = bac, s3 = bcd , s4 = cde




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

      допустим, на вход даны следующие строки:
      s1 = abc, s2 = bac, s3 = bcd , s4 = cde
      вычисляем wijk :
      w132 = abcd , w141 = abcde, w241 = bacde, w342 = bcde




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

      допустим, на вход даны следующие строки:
      s1 = abc, s2 = bac, s3 = bcd , s4 = cde
      вычисляем wijk :
      w132 = abcd , w141 = abcde, w241 = bacde, w342 = bcde
      вычисляем set(si ) и set(wijk ), а также стоимости:
      S1 = set(s1 ) = {s1 }, p1 = 3,
      S2 = set(s2 ) = {s2 }, p2 = 3,
      S3 = set(s3 ) = {s3 }, p3 = 3,
      S4 = set(s4 ) = {s4 }, p4 = 3,
      S5 = set(w132 ) = {s1 , s3 }, p5 = 4
      S6 = set(w141 ) = {s1 , s3 , s4 }, p6 = 5,
      S7 = set(w241 ) = {s2 , s4 }, p7 = 5,
      S8 = set(w342 ) = {s3 , s4 }, p8 = 4


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




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


      итак, входными данными задачи о покрытии множествами
      являются универсальное множество U = {si }i∈[1..4] , множество его
      подмножеств ℱ = {Si }i∈[1..8] , где каждому подмножеству Si
      сопоставлена стоимость pi




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


      итак, входными данными задачи о покрытии множествами
      являются универсальное множество U = {si }i∈[1..4] , множество его
      подмножеств ℱ = {Si }i∈[1..8] , где каждому подмножеству Si
      сопоставлена стоимость pi
      алгоритм последовательно добавляет в покрытие множества S6 и
      S2




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


      итак, входными данными задачи о покрытии множествами
      являются универсальное множество U = {si }i∈[1..4] , множество его
      подмножеств ℱ = {Si }i∈[1..8] , где каждому подмножеству Si
      сопоставлена стоимость pi
      алгоритм последовательно добавляет в покрытие множества S6 и
      S2
      поскольку S6 = set(w141 ) и S2 = set(s2 ), выходом нашего
      алгоритма будет конкатенация строк w141 и s2 , то есть строка
      abcdebac, которая в данном конкретном примере является
      оптимальной




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




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




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




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




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




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

More Related Content

What's hot

20110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture1120110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture11Computer Science Club
 
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Theoretical mechanics department
 
Основные принципы динамики твёрдого тела
Основные принципы динамики твёрдого телаОсновные принципы динамики твёрдого тела
Основные принципы динамики твёрдого тела
Theoretical mechanics department
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Nikolay Grebenshikov
 
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Nikolay Grebenshikov
 
Случай Эйлера
Случай ЭйлераСлучай Эйлера
Случай Эйлера
Theoretical mechanics department
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Кватернионы
КватернионыКватернионы
Кватернионы
Theoretical mechanics department
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Alexey Paznikov
 
Метод отдельных тел
Метод отдельных телМетод отдельных тел
Метод отдельных тел
Theoretical mechanics department
 
20091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture0920091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture09Computer Science Club
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06Computer Science Club
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Nikolay Grebenshikov
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Олег Стрекаловский
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02Computer Science Club
 
20090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture0220090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture02Computer Science Club
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовTheoretical mechanics department
 
20110409 quantum algorithms_vyali_lecture10
20110409 quantum algorithms_vyali_lecture1020110409 quantum algorithms_vyali_lecture10
20110409 quantum algorithms_vyali_lecture10Computer Science Club
 

What's hot (20)

20110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture1120110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture11
 
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
Метод Й. Виттенбурга (Универсальные и цилиндрические шарниры)
 
Основные принципы динамики твёрдого тела
Основные принципы динамики твёрдого телаОсновные принципы динамики твёрдого тела
Основные принципы динамики твёрдого тела
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
 
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
 
Случай Эйлера
Случай ЭйлераСлучай Эйлера
Случай Эйлера
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
 
Кватернионы
КватернионыКватернионы
Кватернионы
 
Метод конечных разностей
Метод конечных разностейМетод конечных разностей
Метод конечных разностей
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
 
Метод отдельных тел
Метод отдельных телМетод отдельных тел
Метод отдельных тел
 
20091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture0920091115 algorithmsfornphardproblems kulikov_lecture09
20091115 algorithmsfornphardproblems kulikov_lecture09
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02
 
20090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture0220090913 algorithmsfornphardproblems kulikov_lecture02
20090913 algorithmsfornphardproblems kulikov_lecture02
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
 
20110409 quantum algorithms_vyali_lecture10
20110409 quantum algorithms_vyali_lecture1020110409 quantum algorithms_vyali_lecture10
20110409 quantum algorithms_vyali_lecture10
 
Q games
Q gamesQ games
Q games
 

Similar to 20070930 efficientalgorithms kulikov_lecture02

20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03Computer Science Club
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08Computer Science Club
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05Computer 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
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Positive Hack Days
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Олег Стрекаловский
 
20071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture0720071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture07Computer Science Club
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Nikolay Grebenshikov
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06Computer Science Club
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06Computer Science Club
 
20070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture0120070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture01Computer Science Club
 
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
ITMO University
 
20080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture1820080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture18Computer Science Club
 
Коды Адамара. Каскадные коды Форни.
Коды Адамара. Каскадные коды Форни.Коды Адамара. Каскадные коды Форни.
Коды Адамара. Каскадные коды Форни.
Alex Dainiak
 
20071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture1120071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture11Computer Science Club
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevIosif Itkin
 
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и кодыГригорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и кодыYandex
 
20111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture0320111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture03Computer Science Club
 
20110925 csseminar formal_grammars_complexity
20110925 csseminar formal_grammars_complexity20110925 csseminar formal_grammars_complexity
20110925 csseminar formal_grammars_complexityComputer Science Club
 

Similar to 20070930 efficientalgorithms kulikov_lecture02 (20)

20071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture0320071007 efficientalgorithms kulikov_lecture03
20071007 efficientalgorithms kulikov_lecture03
 
20071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture0820071118 efficientalgorithms kulikov_lecture08
20071118 efficientalgorithms kulikov_lecture08
 
20071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture0520071111 efficientalgorithms kulikov_lecture05
20071111 efficientalgorithms kulikov_lecture05
 
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
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
 
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...Разбор задач областного этапа всероссийской олимпиады школьников по информати...
Разбор задач областного этапа всероссийской олимпиады школьников по информати...
 
20071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture0720071118 efficientalgorithms kulikov_lecture07
20071118 efficientalgorithms kulikov_lecture07
 
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
Лекция №3. Свойства и моделирование стандартных схем программ. Предмет "Теори...
 
20091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture0620091101 algorithmsfornphardproblems kulikov_lecture06
20091101 algorithmsfornphardproblems kulikov_lecture06
 
20071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture0620071111 efficientalgorithms kulikov_lecture06
20071111 efficientalgorithms kulikov_lecture06
 
20070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture0120070923 efficientalgorithms kulikov_lecture01
20070923 efficientalgorithms kulikov_lecture01
 
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
АЛГЕБРАИЧЕСКИЙ МЕТОД ОПРЕДЕЛЕНИЯ ПОЛНОГО МНОЖЕСТВА ПРОСТЫХ РАЗРЕЗОВ В ДВУХПОЛ...
 
20080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture1820080316 efficientalgorithms kulikov_lecture18
20080316 efficientalgorithms kulikov_lecture18
 
Коды Адамара. Каскадные коды Форни.
Коды Адамара. Каскадные коды Форни.Коды Адамара. Каскадные коды Форни.
Коды Адамара. Каскадные коды Форни.
 
20071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture1120071202 efficientalgorithms kulikov_lecture11
20071202 efficientalgorithms kulikov_lecture11
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry Zaitsev
 
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и кодыГригорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
 
20111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture0320111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture03
 
20110925 csseminar formal_grammars_complexity
20110925 csseminar formal_grammars_complexity20110925 csseminar formal_grammars_complexity
20110925 csseminar formal_grammars_complexity
 

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_bugs
Computer 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_bugs
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_bugs
Computer 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_lecture11
Computer 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
 

20070930 efficientalgorithms kulikov_lecture02

  • 1. с/к “Эффективные алгоритмы” Лекция 2: Приближенные алгоритмы А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 1 / 15
  • 2. План лекции 1 Кратчайшая надпоследовательность Пример работы алгоритма А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 2 / 15
  • 3. Приближенный алгоритм Определение А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 3 / 15
  • 4. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 3 / 15
  • 5. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство A(I )/OPT(I ) ≥ ������ для максимизационной задачи; А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 3 / 15
  • 6. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство A(I )/OPT(I ) ≥ ������ для максимизационной задачи; A(I )/OPT(I ) ≤ ������ для минимизационной задачи. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 3 / 15
  • 7. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство A(I )/OPT(I ) ≥ ������ для максимизационной задачи; A(I )/OPT(I ) ≤ ������ для минимизационной задачи. Такие алгоритмы мы называем ������-приближенными. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 3 / 15
  • 8. Приближенный алгоритм Определение Приближенный алгоритм A имеет относительную оценку точности (relative performance guarantee) ������, если для любого входа I выполняется неравенство A(I )/OPT(I ) ≥ ������ для максимизационной задачи; A(I )/OPT(I ) ≤ ������ для минимизационной задачи. Такие алгоритмы мы называем ������-приближенными. Замечание Для оптимизационных задач ������ ≤ 1, для минимизационных — ������ ≥ 1. Алгоритм тем лучше, чем ближе ������ к 1. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 3 / 15
  • 9. План лекции 1 Кратчайшая надпоследовательность Пример работы алгоритма А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 4 / 15
  • 10. Задача о кратчайшей общей надпоследовательности Определение А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 5 / 15
  • 11. Задача о кратчайшей общей надпоследовательности Определение Дано множество строк {s1 , . . . , sn }. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 5 / 15
  • 12. Задача о кратчайшей общей надпоследовательности Определение Дано множество строк {s1 , . . . , sn }. Задача о кратчайшей общей надпоследовательности (shortest common superstring) заключается в нахождении самой короткой строки u, которая содержит в качестве подстроки каждую из si . А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 5 / 15
  • 13. Задача о кратчайшей общей надпоследовательности Определение Дано множество строк {s1 , . . . , sn }. Задача о кратчайшей общей надпоследовательности (shortest common superstring) заключается в нахождении самой короткой строки u, которая содержит в качестве подстроки каждую из si . Факт Задача является NP-трудной. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 5 / 15
  • 14. Задача о покрытии множествами Определение А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 6 / 15
  • 15. Задача о покрытии множествами Определение Дано множество U = {u1 , . . . , un } и семейство его подмножеств ℱ = {S1 , . . . , Sk }, Si ⊆ U. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 6 / 15
  • 16. Задача о покрытии множествами Определение Дано множество U = {u1 , . . . , un } и семейство его подмножеств ℱ = {S1 , . . . , Sk }, Si ⊆ U. ⋃︀ В сумме все подмножества покрывают U: U = S∈ℱ S. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 6 / 15
  • 17. Задача о покрытии множествами Определение Дано множество U = {u1 , . . . , un } и семейство его подмножеств ℱ = {S1 , . . . , Sk }, Si ⊆ U. ⋃︀ В сумме все подмножества покрывают U: U = S∈ℱ S. Каждому подмножеству Si сопоставлена некоторая неотрицательная стоимость pi ≥ 0. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 6 / 15
  • 18. Задача о покрытии множествами Определение Дано множество U = {u1 , . . . , un } и семейство его подмножеств ℱ = {S1 , . . . , Sk }, Si ⊆ U. ⋃︀ В сумме все подмножества покрывают U: U = S∈ℱ S. Каждому подмножеству Si сопоставлена некоторая неотрицательная стоимость pi ≥ 0. Задача о покрытии множествами (set cover problem) заключается в нахождении набора подмножеств, покрывающего все множество U и имеющего минимальный возможный вес. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 6 / 15
  • 19. Задача о покрытии множествами Определение Дано множество U = {u1 , . . . , un } и семейство его подмножеств ℱ = {S1 , . . . , Sk }, Si ⊆ U. ⋃︀ В сумме все подмножества покрывают U: U = S∈ℱ S. Каждому подмножеству Si сопоставлена некоторая неотрицательная стоимость pi ≥ 0. Задача о покрытии множествами (set cover problem) заключается в нахождении набора подмножеств, покрывающего все множество U и имеющего минимальный возможный вес. Теорема Существует Hn -приближенный алгоритм для задачи о покрытии множествами. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 6 / 15
  • 20. Сведение к задаче о покрытии множествами А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 7 / 15
  • 21. Сведение к задаче о покрытии множествами НУО, среди строк нет подстрок друг друга А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 7 / 15
  • 22. Сведение к задаче о покрытии множествами НУО, среди строк нет подстрок друг друга для всех i, j, k, для которых суффикс строки si длины k совпадает с префиксом строки sj длины k, построим строку wijk = si · sj [k + 1..|sj |]: А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 7 / 15
  • 23. Сведение к задаче о покрытии множествами НУО, среди строк нет подстрок друг друга для всех i, j, k, для которых суффикс строки si длины k совпадает с префиксом строки sj длины k, построим строку wijk = si · sj [k + 1..|sj |]: s6 = abcab bbca, s2 = bbca aaccbcac ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ X Y Y Z А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 7 / 15
  • 24. Сведение к задаче о покрытии множествами НУО, среди строк нет подстрок друг друга для всех i, j, k, для которых суффикс строки si длины k совпадает с префиксом строки sj длины k, построим строку wijk = si · sj [k + 1..|sj |]: s6 = abcab bbca, s2 = bbca aaccbcac ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ X Y Y Z w6,2,4 = abcab bbca aaccbcac ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ X Y Z А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 7 / 15
  • 25. Сведение к задаче о покрытии множествами НУО, среди строк нет подстрок друг друга для всех i, j, k, для которых суффикс строки si длины k совпадает с префиксом строки sj длины k, построим строку wijk = si · sj [k + 1..|sj |]: s6 = abcab bbca, s2 = bbca aaccbcac ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ X Y Y Z w6,2,4 = abcab bbca aaccbcac ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ X Y Z для любой строки s определим set(s) = {si |si — подстрока s} А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 7 / 15
  • 26. Сведение к задаче о покрытии множествами НУО, среди строк нет подстрок друг друга для всех i, j, k, для которых суффикс строки si длины k совпадает с префиксом строки sj длины k, построим строку wijk = si · sj [k + 1..|sj |]: s6 = abcab bbca, s2 = bbca aaccbcac ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ X Y Y Z w6,2,4 = abcab bbca aaccbcac ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ X Y Z для любой строки s определим set(s) = {si |si — подстрока s} стоимость множества set(s) положим равной длине строки s А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 7 / 15
  • 27. Сведение к задаче о покрытии множествами НУО, среди строк нет подстрок друг друга для всех i, j, k, для которых суффикс строки si длины k совпадает с префиксом строки sj длины k, построим строку wijk = si · sj [k + 1..|sj |]: s6 = abcab bbca, s2 = bbca aaccbcac ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ X Y Y Z w6,2,4 = abcab bbca aaccbcac ⏟ ⏞ ⏟ ⏞ ⏟ ⏞ X Y Z для любой строки s определим set(s) = {si |si — подстрока s} стоимость множества set(s) положим равной длине строки s вход задачи о покрытии множествами: U = {s1 , . . . , sn }, ℱ = {set(si )} ∪ {set(wijk )} А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 7 / 15
  • 28. Сведение к задаче о покрытии множествами (продолжение) А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 8 / 15
  • 29. Сведение к задаче о покрытии множествами (продолжение) итак, алгоритм возвращает нам некоторые множества А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 8 / 15
  • 30. Сведение к задаче о покрытии множествами (продолжение) итак, алгоритм возвращает нам некоторые множества мы сливаем соответствующие им строки и получаем строку, содержащую все si А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 8 / 15
  • 31. Сведение к задаче о покрытии множествами (продолжение) итак, алгоритм возвращает нам некоторые множества мы сливаем соответствующие им строки и получаем строку, содержащую все si осталось показать, что построенный нами алгоритм является 2Hn -приближенным А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 8 / 15
  • 32. Сведение к задаче о покрытии множествами (продолжение) итак, алгоритм возвращает нам некоторые множества мы сливаем соответствующие им строки и получаем строку, содержащую все si осталось показать, что построенный нами алгоритм является 2Hn -приближенным для этого достаточно доказать приведенную ниже лемму А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 8 / 15
  • 33. Сведение к задаче о покрытии множествами (продолжение) итак, алгоритм возвращает нам некоторые множества мы сливаем соответствующие им строки и получаем строку, содержащую все si осталось показать, что построенный нами алгоритм является 2Hn -приближенным для этого достаточно доказать приведенную ниже лемму Лемма Стоимость оптимального решения полученной задачи о покрытии множествами не более чем в два раза хуже длины решения исходной задачи о кратчайшей надполедовательности. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 8 / 15
  • 34. Доказательство леммы Доказательство А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 9 / 15
  • 35. Доказательство леммы Доказательство перенумеруем строки si в порядке их вхождения в (какую-нибудь) оптимальную строку s А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 9 / 15
  • 36. Доказательство леммы Доказательство перенумеруем строки si в порядке их вхождения в (какую-нибудь) оптимальную строку s ясно, что вхождение каждой строки начинается и заканчивается строго позже предыдущей А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 9 / 15
  • 37. Доказательство леммы Доказательство перенумеруем строки si в порядке их вхождения в (какую-нибудь) оптимальную строку s ясно, что вхождение каждой строки начинается и заканчивается строго позже предыдущей разделим строки на блоки следующим образом: в первый блок берем s1 и все si , первые вхождения которых начинаются до конца первого вхождения s1 А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 9 / 15
  • 38. Доказательство леммы Доказательство перенумеруем строки si в порядке их вхождения в (какую-нибудь) оптимальную строку s ясно, что вхождение каждой строки начинается и заканчивается строго позже предыдущей разделим строки на блоки следующим образом: в первый блок берем s1 и все si , первые вхождения которых начинаются до конца первого вхождения s1 сделаем из первой и последней строки этого блока общую строку — получим строку w1,j,k А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 9 / 15
  • 39. Доказательство леммы Доказательство перенумеруем строки si в порядке их вхождения в (какую-нибудь) оптимальную строку s ясно, что вхождение каждой строки начинается и заканчивается строго позже предыдущей разделим строки на блоки следующим образом: в первый блок берем s1 и все si , первые вхождения которых начинаются до конца первого вхождения s1 сделаем из первой и последней строки этого блока общую строку — получим строку w1,j,k следующий блок строим, начиная с первой строки, не попавшей в первый блок, и т.д. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 9 / 15
  • 40. Доказательство леммы Доказательство перенумеруем строки si в порядке их вхождения в (какую-нибудь) оптимальную строку s ясно, что вхождение каждой строки начинается и заканчивается строго позже предыдущей разделим строки на блоки следующим образом: в первый блок берем s1 и все si , первые вхождения которых начинаются до конца первого вхождения s1 сделаем из первой и последней строки этого блока общую строку — получим строку w1,j,k следующий блок строим, начиная с первой строки, не попавшей в первый блок, и т.д. в итоге, получаем некоторое решение задачи о покрытии множествами А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 9 / 15
  • 41. Доказательство леммы (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 10 / 15
  • 42. Доказательство леммы (продолжение) Доказательство достаточно показать, что стоимость данного конкретного решения не превосходит удвоенной длины s А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 10 / 15
  • 43. Доказательство леммы (продолжение) Доказательство достаточно показать, что стоимость данного конкретного решения не превосходит удвоенной длины s это верно, поскольку каждый символ строки s входит не более чем в два блока А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 10 / 15
  • 44. Доказательство леммы (продолжение) Доказательство достаточно показать, что стоимость данного конкретного решения не превосходит удвоенной длины s это верно, поскольку каждый символ строки s входит не более чем в два блока Упражнение Докажите последнее утверждение. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 10 / 15
  • 45. План лекции 1 Кратчайшая надпоследовательность Пример работы алгоритма А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 11 / 15
  • 46. Пример работы алгоритма А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 12 / 15
  • 47. Пример работы алгоритма допустим, на вход даны следующие строки: s1 = abc, s2 = bac, s3 = bcd , s4 = cde А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 12 / 15
  • 48. Пример работы алгоритма допустим, на вход даны следующие строки: s1 = abc, s2 = bac, s3 = bcd , s4 = cde вычисляем wijk : w132 = abcd , w141 = abcde, w241 = bacde, w342 = bcde А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 12 / 15
  • 49. Пример работы алгоритма допустим, на вход даны следующие строки: s1 = abc, s2 = bac, s3 = bcd , s4 = cde вычисляем wijk : w132 = abcd , w141 = abcde, w241 = bacde, w342 = bcde вычисляем set(si ) и set(wijk ), а также стоимости: S1 = set(s1 ) = {s1 }, p1 = 3, S2 = set(s2 ) = {s2 }, p2 = 3, S3 = set(s3 ) = {s3 }, p3 = 3, S4 = set(s4 ) = {s4 }, p4 = 3, S5 = set(w132 ) = {s1 , s3 }, p5 = 4 S6 = set(w141 ) = {s1 , s3 , s4 }, p6 = 5, S7 = set(w241 ) = {s2 , s4 }, p7 = 5, S8 = set(w342 ) = {s3 , s4 }, p8 = 4 А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 12 / 15
  • 50. Пример работы алгоритма А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 13 / 15
  • 51. Пример работы алгоритма итак, входными данными задачи о покрытии множествами являются универсальное множество U = {si }i∈[1..4] , множество его подмножеств ℱ = {Si }i∈[1..8] , где каждому подмножеству Si сопоставлена стоимость pi А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 13 / 15
  • 52. Пример работы алгоритма итак, входными данными задачи о покрытии множествами являются универсальное множество U = {si }i∈[1..4] , множество его подмножеств ℱ = {Si }i∈[1..8] , где каждому подмножеству Si сопоставлена стоимость pi алгоритм последовательно добавляет в покрытие множества S6 и S2 А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 13 / 15
  • 53. Пример работы алгоритма итак, входными данными задачи о покрытии множествами являются универсальное множество U = {si }i∈[1..4] , множество его подмножеств ℱ = {Si }i∈[1..8] , где каждому подмножеству Si сопоставлена стоимость pi алгоритм последовательно добавляет в покрытие множества S6 и S2 поскольку S6 = set(w141 ) и S2 = set(s2 ), выходом нашего алгоритма будет конкатенация строк w141 и s2 , то есть строка abcdebac, которая в данном конкретном примере является оптимальной А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 13 / 15
  • 54. Что мы узнали за сегодня? Что мы узнали за сегодня? А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 14 / 15
  • 55. Что мы узнали за сегодня? Что мы узнали за сегодня? 2Hn -приближенный алгоритм для задачи о кратчайшей надпоследовательности. А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 14 / 15
  • 56. Спасибо за внимание! А. Куликов (CS клуб при ПОМИ) 2. Приближенные алгоритмы 15 / 15