ЛЕКЦИЯ 1. Введение в параллельные вычисления
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 1. Введение в параллельные вычисления
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюAlexey Paznikov
ЛЕКЦИЯ 2. Архитектура вычислительных систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Le tecnologie del social learning e sistemi mobiliPaolo Nesi
Seminario nazionale E-ENGLISH per una didattica multimodale MID-TERM CONFERENCE, Augmented School, Augmented English. La didattica della lingua inglese e la Realtà Aumentata; 21 maggio 2012, MIUR, ROMA
Service Map API, Smart City API, Open Data APIPaolo Nesi
FODD, Florence Open Data Day
Salone de’ Dugento, Palazzo Vecchio, Firenze
21/02/2015
All'interno dell'ontologia Km4City sono presenti alcune Macroclassi di servizi, all'interno delle quali troviamo le categorie di servizi definite a partire dalla classificazione dalla Regione Toscana, e successivamente espansa grazie agli OpenData set del Comune di Firenze.
API per sviluppatori sulla Mappa dei Servizi
Generazione di json in base a richieste API Rest
Salvataggio del singolo servizio, sia statico che real time
Salvataggio di una selezione di categorie partendo da un punto di ricerca
Sviluppi futuri
Salvataggio query con doppio ID R e RW
Salvataggio configurazione Service Map con doppio ID R e RW
Embed della configurazione di Service Map
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюAlexey Paznikov
ЛЕКЦИЯ 2. Архитектура вычислительных систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Le tecnologie del social learning e sistemi mobiliPaolo Nesi
Seminario nazionale E-ENGLISH per una didattica multimodale MID-TERM CONFERENCE, Augmented School, Augmented English. La didattica della lingua inglese e la Realtà Aumentata; 21 maggio 2012, MIUR, ROMA
Service Map API, Smart City API, Open Data APIPaolo Nesi
FODD, Florence Open Data Day
Salone de’ Dugento, Palazzo Vecchio, Firenze
21/02/2015
All'interno dell'ontologia Km4City sono presenti alcune Macroclassi di servizi, all'interno delle quali troviamo le categorie di servizi definite a partire dalla classificazione dalla Regione Toscana, e successivamente espansa grazie agli OpenData set del Comune di Firenze.
API per sviluppatori sulla Mappa dei Servizi
Generazione di json in base a richieste API Rest
Salvataggio del singolo servizio, sia statico che real time
Salvataggio di una selezione di categorie partendo da un punto di ricerca
Sviluppi futuri
Salvataggio query con doppio ID R e RW
Salvataggio configurazione Service Map con doppio ID R e RW
Embed della configurazione di Service Map
ЛЕКЦИЯ 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Многоядерные вычислительные систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
1. с/к “Эффективные алгоритмы”
Лекция 3: Приближенные алгоритмы
А. Куликов
Computer Science клуб при ПОМИ
http://logic.pdmi.ras.ru/∼infclub/
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 1 / 26
2. План лекции
1 Задача о коммивояжере
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 2 / 26
3. План лекции
1 Задача о коммивояжере
2 Задача о рюкзаке
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 2 / 26
5. Приближенный алгоритм
Определение
Приближенный алгоритм A имеет относительную оценку точности
(relative performance guarantee) ������, если для любого входа I
выполняется неравенство
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
6. Приближенный алгоритм
Определение
Приближенный алгоритм A имеет относительную оценку точности
(relative performance guarantee) ������, если для любого входа I
выполняется неравенство
A(I )/OPT(I ) ≥ ������ для максимизационной задачи;
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
7. Приближенный алгоритм
Определение
Приближенный алгоритм A имеет относительную оценку точности
(relative performance guarantee) ������, если для любого входа I
выполняется неравенство
A(I )/OPT(I ) ≥ ������ для максимизационной задачи;
A(I )/OPT(I ) ≤ ������ для минимизационной задачи.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
8. Приближенный алгоритм
Определение
Приближенный алгоритм A имеет относительную оценку точности
(relative performance guarantee) ������, если для любого входа I
выполняется неравенство
A(I )/OPT(I ) ≥ ������ для максимизационной задачи;
A(I )/OPT(I ) ≤ ������ для минимизационной задачи.
Такие алгоритмы мы называем ������-приближенными.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
9. Приближенный алгоритм
Определение
Приближенный алгоритм A имеет относительную оценку точности
(relative performance guarantee) ������, если для любого входа I
выполняется неравенство
A(I )/OPT(I ) ≥ ������ для максимизационной задачи;
A(I )/OPT(I ) ≤ ������ для минимизационной задачи.
Такие алгоритмы мы называем ������-приближенными.
Замечание
Для оптимизационных задач ������ ≤ 1, для минимизационных — ������ ≥ 1.
Алгоритм тем лучше, чем ближе ������ к 1.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 3 / 26
12. Полиномиальная приближенная схема
Определение
Пусть дана максимизационная задача Π.
Π имеет полиномиальную приближенную схему (polynomial time
approximation scheme, PTAS), если
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
13. Полиномиальная приближенная схема
Определение
Пусть дана максимизационная задача Π.
Π имеет полиномиальную приближенную схему (polynomial time
approximation scheme, PTAS), если
1 для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для
Π;
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
14. Полиномиальная приближенная схема
Определение
Пусть дана максимизационная задача Π.
Π имеет полиномиальную приближенную схему (polynomial time
approximation scheme, PTAS), если
1 для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для
Π;
2 для любого ������ > 0 время работы такого алгоритма зависит от n
полиномиально.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
15. Полиномиальная приближенная схема
Определение
Пусть дана максимизационная задача Π.
Π имеет полиномиальную приближенную схему (polynomial time
approximation scheme, PTAS), если
1 для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для
Π;
2 для любого ������ > 0 время работы такого алгоритма зависит от n
полиномиально.
Если же время работы такого алгоритма полиномиально не
только по n, но и по 1/������, то полученная схема называется
полностью полиномиальной приближенной схемой (fully
polynomial time approximation scheme, FPTAS).
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
16. Полиномиальная приближенная схема
Определение
Пусть дана максимизационная задача Π.
Π имеет полиномиальную приближенную схему (polynomial time
approximation scheme, PTAS), если
1 для любого ������ ≥ 0 существует (1 − ������)-приближенный алгоритм для
Π;
2 для любого ������ > 0 время работы такого алгоритма зависит от n
полиномиально.
Если же время работы такого алгоритма полиномиально не
только по n, но и по 1/������, то полученная схема называется
полностью полиномиальной приближенной схемой (fully
polynomial time approximation scheme, FPTAS).
Определение для минимизационной задачи полностью
аналогично.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 4 / 26
17. План лекции
1 Задача о коммивояжере
2 Задача о рюкзаке
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 5 / 26
19. Задача о коммивояжере
Определение
Дан полный неориентированный граф G = (V , E ), каждому ребру
(u, v ) которого приписана некоторая стоимость c(u, v ).
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 6 / 26
20. Задача о коммивояжере
Определение
Дан полный неориентированный граф G = (V , E ), каждому ребру
(u, v ) которого приписана некоторая стоимость c(u, v ).
Задача о коммивояжере (travelling salesman problem, TSP)
заключается в нахождении в графе гамильтонова цикла
минимальной стоимости.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 6 / 26
21. Задача о коммивояжере
Определение
Дан полный неориентированный граф G = (V , E ), каждому ребру
(u, v ) которого приписана некоторая стоимость c(u, v ).
Задача о коммивояжере (travelling salesman problem, TSP)
заключается в нахождении в графе гамильтонова цикла
минимальной стоимости.
Задача о коммивояжере в метрическом пространстве (metric TSP)
есть частный случай задачи о коммивояжере, где расстояния
входного графа удовлетворяют неравенству треугольника:
c(u, w ) ≤ c(u, v ) + c(v , w ) ∀u, v , w ∈ V .
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 6 / 26
23. NP-трудность
Задача о коммивояжере является NP-трудной.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
24. NP-трудность
Задача о коммивояжере является NP-трудной.
Тривиальный алгоритм перебирает все возможные пути за время
n!.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
25. NP-трудность
Задача о коммивояжере является NP-трудной.
Тривиальный алгоритм перебирает все возможные пути за время
n!.
Наилучший известный на данный момент алгоритм основан на
динамическом программировании и имеет время работы (а также
память) 2n .
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
26. NP-трудность
Задача о коммивояжере является NP-трудной.
Тривиальный алгоритм перебирает все возможные пути за время
n!.
Наилучший известный на данный момент алгоритм основан на
динамическом программировании и имеет время работы (а также
память) 2n .
Задача о коммивояжере в метрическом пространстве тоже
является NP-трудной.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
27. NP-трудность
Задача о коммивояжере является NP-трудной.
Тривиальный алгоритм перебирает все возможные пути за время
n!.
Наилучший известный на данный момент алгоритм основан на
динамическом программировании и имеет время работы (а также
память) 2n .
Задача о коммивояжере в метрическом пространстве тоже
является NP-трудной.
допустим, мы умеем решать эту задачу за полиномиальное время
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
28. NP-трудность
Задача о коммивояжере является NP-трудной.
Тривиальный алгоритм перебирает все возможные пути за время
n!.
Наилучший известный на данный момент алгоритм основан на
динамическом программировании и имеет время работы (а также
память) 2n .
Задача о коммивояжере в метрическом пространстве тоже
является NP-трудной.
допустим, мы умеем решать эту задачу за полиномиальное время
возьмем произвольный граф и присвоим всем его ребрам вес 1
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
29. NP-трудность
Задача о коммивояжере является NP-трудной.
Тривиальный алгоритм перебирает все возможные пути за время
n!.
Наилучший известный на данный момент алгоритм основан на
динамическом программировании и имеет время работы (а также
память) 2n .
Задача о коммивояжере в метрическом пространстве тоже
является NP-трудной.
допустим, мы умеем решать эту задачу за полиномиальное время
возьмем произвольный граф и присвоим всем его ребрам вес 1
между любыми двумя не соединенными ребром вершинами
добавим ребро веса 2
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
30. NP-трудность
Задача о коммивояжере является NP-трудной.
Тривиальный алгоритм перебирает все возможные пути за время
n!.
Наилучший известный на данный момент алгоритм основан на
динамическом программировании и имеет время работы (а также
память) 2n .
Задача о коммивояжере в метрическом пространстве тоже
является NP-трудной.
допустим, мы умеем решать эту задачу за полиномиальное время
возьмем произвольный граф и присвоим всем его ребрам вес 1
между любыми двумя не соединенными ребром вершинами
добавим ребро веса 2
тогда построение минимального гамильтонова цикла в полученном
графе эквивалентно ответу на вопрос, существует ли в исходном
графе гамильтонов цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 7 / 26
33. 2-оптимальный алгоритм
Алгоритм
Approx-TSP(G )
строим минимальное остовное дерево T графа G
продублируем каждое ребро дерева T и в полученном графе
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 8 / 26
34. 2-оптимальный алгоритм
Алгоритм
Approx-TSP(G )
строим минимальное остовное дерево T графа G
продублируем каждое ребро дерева T и в полученном графе
найдем эйлеров цикл
выкинем из полученного цикла все повторения вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 8 / 26
35. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
e
b f g
c
h
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
36. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
c
h
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
37. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
38. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
39. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
40. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
41. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
42. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
43. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
44. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
45. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
46. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
47. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
48. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
49. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
50. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
51. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
52. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
53. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
54. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
55. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
56. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
57. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
58. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
59. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
60. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
61. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
62. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
63. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
64. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
65. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
66. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
e
остовное дерево T
графа G b f g
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 9 / 26
69. Анализ алгоритма
Теорема
Алгоритм Approx-TSP является 2-приближенным.
Доказательство
пусть WT — вес минимального остовного дерева, а Wopt — вес
оптимального гамильтонова цикла
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
70. Анализ алгоритма
Теорема
Алгоритм Approx-TSP является 2-приближенным.
Доказательство
пусть WT — вес минимального остовного дерева, а Wopt — вес
оптимального гамильтонова цикла
WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва
цикла получается остовное дерево
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
71. Анализ алгоритма
Теорема
Алгоритм Approx-TSP является 2-приближенным.
Доказательство
пусть WT — вес минимального остовного дерева, а Wopt — вес
оптимального гамильтонова цикла
WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва
цикла получается остовное дерево
каждое ребро построенного гамильтонова цикла заменяет
какой-то путь эйлерова цикла, длина которого по неравенству
треугольника не менее длины этого ребра
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
72. Анализ алгоритма
Теорема
Алгоритм Approx-TSP является 2-приближенным.
Доказательство
пусть WT — вес минимального остовного дерева, а Wopt — вес
оптимального гамильтонова цикла
WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва
цикла получается остовное дерево
каждое ребро построенного гамильтонова цикла заменяет
какой-то путь эйлерова цикла, длина которого по неравенству
треугольника не менее длины этого ребра
значит, длина найденного пути не превосходит 2WT , а
следовательно, и 2Wopt
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 10 / 26
75. 3/2-оптимальный алгоритм
Алгоритм
Approx-TSP-Improved(G )
строим минимальное остовное дерево T графа G
найдем минимальное полное паросочетание всех вершин дерева T
нечетной степени
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 11 / 26
76. 3/2-оптимальный алгоритм
Алгоритм
Approx-TSP-Improved(G )
строим минимальное остовное дерево T графа G
найдем минимальное полное паросочетание всех вершин дерева T
нечетной степени
добавим найденные ребра в дерево T и найдем в полученном
графе эйлеров цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 11 / 26
77. 3/2-оптимальный алгоритм
Алгоритм
Approx-TSP-Improved(G )
строим минимальное остовное дерево T графа G
найдем минимальное полное паросочетание всех вершин дерева T
нечетной степени
добавим найденные ребра в дерево T и найдем в полученном
графе эйлеров цикл
выкинем из полученного цикла все повторения вершин и вернем
полученный цикл
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 11 / 26
78. О чем вы забыли меня спросить?
О чем вы забыли меня спросить?
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 12 / 26
79. О чем вы забыли меня спросить?
О том, как искать минимальное полное паросочетание в графе.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 12 / 26
80. О чем вы забыли меня спросить?
О том, как искать минимальное полное паросочетание в графе.
Давайте пока просто поверим в то, что оно находится за
полиномиальное время.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 12 / 26
83. Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.
Доказательство
как и в предыдущем доказательстве, вес построенного цикла не
провосходит WT + WP , где WP — вес минимального
паросочетания вершин нечетной степени дерева T
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
84. Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.
Доказательство
как и в предыдущем доказательстве, вес построенного цикла не
провосходит WT + WP , где WP — вес минимального
паросочетания вершин нечетной степени дерева T
нужно показать, что WP ≤ Wopt /2
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
85. Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.
Доказательство
как и в предыдущем доказательстве, вес построенного цикла не
провосходит WT + WP , где WP — вес минимального
паросочетания вершин нечетной степени дерева T
нужно показать, что WP ≤ Wopt /2
обозначим через A множество всех вершин нечетной степени
дерева T
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
86. Анализ алгоритма
Теорема
Алгоритм Approx-TSP-Improved является 3/2-приближенным.
Доказательство
как и в предыдущем доказательстве, вес построенного цикла не
провосходит WT + WP , где WP — вес минимального
паросочетания вершин нечетной степени дерева T
нужно показать, что WP ≤ Wopt /2
обозначим через A множество всех вершин нечетной степени
дерева T
рассмотрим такой гамильтонов цикл на вершинах множества A:
вершины множества A в нем будут встречаться в такой
последовательности, в какой они идут в оптимальном
гамильтонов цикле графа G
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 13 / 26
88. Доказательство (продолжение)
Доказательство
важно отметить, что нам не нужно строить такой цикл; нам важен
лишь факт его существования
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 14 / 26
89. Доказательство (продолжение)
Доказательство
важно отметить, что нам не нужно строить такой цикл; нам важен
лишь факт его существования
разбив вершины только что построенного цикла на четные и
нечетные, мы получим два паросочетания
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 14 / 26
90. Доказательство (продолжение)
Доказательство
важно отметить, что нам не нужно строить такой цикл; нам важен
лишь факт его существования
разбив вершины только что построенного цикла на четные и
нечетные, мы получим два паросочетания
вес хотя бы одного из них будет не более Wopt /2
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 14 / 26
91. Доказательство (продолжение)
Доказательство
важно отметить, что нам не нужно строить такой цикл; нам важен
лишь факт его существования
разбив вершины только что построенного цикла на четные и
нечетные, мы получим два паросочетания
вес хотя бы одного из них будет не более Wopt /2
значит, и вес минимального паросочетания не превосходит
Wopt /2
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 14 / 26
93. Известные оценки
Факт
117
Если P ̸= NP, то не существует 116 -приближенного алгоритма для
задачи о коммивояжере в метрическом пространстве.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 15 / 26
94. Известные оценки
Факт
117
Если P ̸= NP, то не существует 116 -приближенного алгоритма для
задачи о коммивояжере в метрическом пространстве.
3/2 — лучшее известное приближение для задачи о
коммивояжере в метрическом пространстве.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 15 / 26
95. Известные оценки
Факт
117
Если P ̸= NP, то не существует 116 -приближенного алгоритма для
задачи о коммивояжере в метрическом пространстве.
3/2 — лучшее известное приближение для задачи о
коммивояжере в метрическом пространстве.
Для случая, когда все ребра имеют вес 1 или 2, известен
5/6-приближенный алгоритм.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 15 / 26
96. Неприближаемость задачи о коммивояжере
Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
97. Неприближаемость задачи о коммивояжере
Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.
Доказательство
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
98. Неприближаемость задачи о коммивояжере
Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.
Доказательство
предположим, что такой алгоритм все-таки существует
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
99. Неприближаемость задачи о коммивояжере
Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.
Доказательство
предположим, что такой алгоритм все-таки существует
возьмем произвольный граф и присвоим всем его ребрам вес 1
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
100. Неприближаемость задачи о коммивояжере
Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.
Доказательство
предположим, что такой алгоритм все-таки существует
возьмем произвольный граф и присвоим всем его ребрам вес 1
между любыми двумя не соединенными ребром вершинами
добавим ребро веса cn + 1
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
101. Неприближаемость задачи о коммивояжере
Теорема
Пусть P ̸= NP и ������(n) = c ∈ N. Тогда не существует
������(n)-приближенного алгоритма для задачи о коммивояжере.
Доказательство
предположим, что такой алгоритм все-таки существует
возьмем произвольный граф и присвоим всем его ребрам вес 1
между любыми двумя не соединенными ребром вершинами
добавим ребро веса cn + 1
заметим теперь, что если в исходном графе существует
гамильтонов цикл, то в новом графе существует гамильтонов
цикл веса n
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 16 / 26
103. Доказательство (продолжение)
Доказательство
если же такого цикла в исходном графе нет, то самый дешевый
цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 17 / 26
104. Доказательство (продолжение)
Доказательство
если же такого цикла в исходном графе нет, то самый дешевый
цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc
таким образом, с помощью ������(n)-приближенного алгоритма для
задачи о коммивояжере мы можем понять, стоимость
оптимального цикла в построенном графе превосходит n или нет
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 17 / 26
105. Доказательство (продолжение)
Доказательство
если же такого цикла в исходном графе нет, то самый дешевый
цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc
таким образом, с помощью ������(n)-приближенного алгоритма для
задачи о коммивояжере мы можем понять, стоимость
оптимального цикла в построенном графе превосходит n или нет
а это позволит нам понять (за полиномиальное время!), есть в
исходном графе гамильтонов цикл или нет
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 17 / 26
106. Доказательство (продолжение)
Доказательство
если же такого цикла в исходном графе нет, то самый дешевый
цикл в новом графе имеет вес хотя бы (nc + 1) + (n − 1) > nc
таким образом, с помощью ������(n)-приближенного алгоритма для
задачи о коммивояжере мы можем понять, стоимость
оптимального цикла в построенном графе превосходит n или нет
а это позволит нам понять (за полиномиальное время!), есть в
исходном графе гамильтонов цикл или нет
но тогда P = NP
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 17 / 26
107. План лекции
1 Задача о коммивояжере
2 Задача о рюкзаке
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 18 / 26
109. Задача о рюкзаке
Определение
Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
p1 , . . . , pn ∈ N, а также общий вес W .
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
110. Задача о рюкзаке
Определение
Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
p1 , . . . , pn ∈ N, а также общий вес W .
Задача о рюкзаке (knapsack problem) заключается в нахождении
∑︀
такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
∑︀
i∈I pi максимально.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
111. Задача о рюкзаке
Определение
Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
p1 , . . . , pn ∈ N, а также общий вес W .
Задача о рюкзаке (knapsack problem) заключается в нахождении
∑︀
такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
∑︀
i∈I pi максимально.
НУО, maxi∈[1..n] wi ≤ W .
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
112. Задача о рюкзаке
Определение
Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
p1 , . . . , pn ∈ N, а также общий вес W .
Задача о рюкзаке (knapsack problem) заключается в нахождении
∑︀
такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
∑︀
i∈I pi максимально.
НУО, maxi∈[1..n] wi ≤ W .
Факт
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
113. Задача о рюкзаке
Определение
Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
p1 , . . . , pn ∈ N, а также общий вес W .
Задача о рюкзаке (knapsack problem) заключается в нахождении
∑︀
такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
∑︀
i∈I pi максимально.
НУО, maxi∈[1..n] wi ≤ W .
Факт
Задача о рюкзаке является NP-трудной.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
114. Задача о рюкзаке
Определение
Дано n предметов с весами w1 , . . . , wn ∈ N и стоимостями
p1 , . . . , pn ∈ N, а также общий вес W .
Задача о рюкзаке (knapsack problem) заключается в нахождении
∑︀
такого множества предметов I ⊆ [1..n], что i∈I wi ≤ W и
∑︀
i∈I pi максимально.
НУО, maxi∈[1..n] wi ≤ W .
Факт
Задача о рюкзаке является NP-трудной.
Одна из знаменитых 21-й NP-полной задачи Карпа.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 19 / 26
118. Точный псевдополиномиальный алгоритм
Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
∑︀
S := i∈[1..n] pi
P := maxi∈[1..n] pi
через w (k, p) обозначим минимальный объем, необходимый для
того, чтобы уложить предметы с номерами, не превосходящими
k ∈ [1..n], общей стоимостью не менее p ≤ S
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
119. Точный псевдополиномиальный алгоритм
Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
∑︀
S := i∈[1..n] pi
P := maxi∈[1..n] pi
через w (k, p) обозначим минимальный объем, необходимый для
того, чтобы уложить предметы с номерами, не превосходящими
k ∈ [1..n], общей стоимостью не менее p ≤ S
в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до
S
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
120. Точный псевдополиномиальный алгоритм
Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
∑︀
S := i∈[1..n] pi
P := maxi∈[1..n] pi
через w (k, p) обозначим минимальный объем, необходимый для
того, чтобы уложить предметы с номерами, не превосходящими
k ∈ [1..n], общей стоимостью не менее p ≤ S
в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до
S
w (0, 0) = 0; w (0, p) = ∞, p > 0
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
121. Точный псевдополиномиальный алгоритм
Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
∑︀
S := i∈[1..n] pi
P := maxi∈[1..n] pi
через w (k, p) обозначим минимальный объем, необходимый для
того, чтобы уложить предметы с номерами, не превосходящими
k ∈ [1..n], общей стоимостью не менее p ≤ S
в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до
S
w (0, 0) = 0; w (0, p) = ∞, p > 0
w (k + 1, p) = min{w (k, p), w (k, p − pk+1 ) + wk+1 }
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
122. Точный псевдополиномиальный алгоритм
Алгоритм
Psuedopoly-Knapsack({wi }, {pi }, W )
∑︀
S := i∈[1..n] pi
P := maxi∈[1..n] pi
через w (k, p) обозначим минимальный объем, необходимый для
того, чтобы уложить предметы с номерами, не превосходящими
k ∈ [1..n], общей стоимостью не менее p ≤ S
в цикле по k от 1 до n вычисляем w (k, p) для каждого p от 1 до
S
w (0, 0) = 0; w (0, p) = ∞, p > 0
w (k + 1, p) = min{w (k, p), w (k, p − pk+1 ) + wk+1 }
return максимальное p, для которого w (n, p) ≤ W
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 20 / 26
124. Анализ времени работы
Ясно, что алгоритм работает не более, чем nS, то есть не более
n2 P.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
125. Анализ времени работы
Ясно, что алгоритм работает не более, чем nS, то есть не более
n2 P.
Значит, мы могли бы решить задачу за полиномиальное время,
если бы pi были достаточно маленькими.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
126. Анализ времени работы
Ясно, что алгоритм работает не более, чем nS, то есть не более
n2 P.
Значит, мы могли бы решить задачу за полиномиальное время,
если бы pi были достаточно маленькими.
Идея: выберем достаточно большое число и разделим на него все
стоимости. Оптимальное решение не перестанет быть
оптимальным, а время работы алгоритма уменьшится.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
127. Анализ времени работы
Ясно, что алгоритм работает не более, чем nS, то есть не более
n2 P.
Значит, мы могли бы решить задачу за полиномиальное время,
если бы pi были достаточно маленькими.
Идея: выберем достаточно большое число и разделим на него все
стоимости. Оптимальное решение не перестанет быть
оптимальным, а время работы алгоритма уменьшится.
В чем же тогда подвох?
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
128. Анализ времени работы
Ясно, что алгоритм работает не более, чем nS, то есть не более
n2 P.
Значит, мы могли бы решить задачу за полиномиальное время,
если бы pi были достаточно маленькими.
Идея: выберем достаточно большое число и разделим на него все
стоимости. Оптимальное решение не перестанет быть
оптимальным, а время работы алгоритма уменьшится.
В чем же тогда подвох?
Стоимости могут перестать быть целыми после деления.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
129. Анализ времени работы
Ясно, что алгоритм работает не более, чем nS, то есть не более
n2 P.
Значит, мы могли бы решить задачу за полиномиальное время,
если бы pi были достаточно маленькими.
Идея: выберем достаточно большое число и разделим на него все
стоимости. Оптимальное решение не перестанет быть
оптимальным, а время работы алгоритма уменьшится.
В чем же тогда подвох?
Стоимости могут перестать быть целыми после деления.
Округлим их и будем надеяться, что потеряли мы от этого не
очень много.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 21 / 26
131. Полностью полиномиальная приближенная схема
итак, пусть задан ������, определяющий, с какой точностью мы хотим
найти ответ
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
132. Полностью полиномиальная приближенная схема
итак, пусть задан ������, определяющий, с какой точностью мы хотим
найти ответ
P
пусть K������ = (1+1/������)n
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
133. Полностью полиномиальная приближенная схема
итак, пусть задан ������, определяющий, с какой точностью мы хотим
найти ответ
P
пусть K������ = (1+1/������)n
поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
134. Полностью полиномиальная приближенная схема
итак, пусть задан ������, определяющий, с какой точностью мы хотим
найти ответ
P
пусть K������ = (1+1/������)n
поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉
запустим Psuedopoly-Knapsack на полученном наборе
стоимостей
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
135. Полностью полиномиальная приближенная схема
итак, пусть задан ������, определяющий, с какой точностью мы хотим
найти ответ
P
пусть K������ = (1+1/������)n
поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉
запустим Psuedopoly-Knapsack на полученном наборе
стоимостей
время работы алгорита не превосходит n2 max pi′ ≤ n3 P(1 + 1/������)/P
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
136. Полностью полиномиальная приближенная схема
итак, пусть задан ������, определяющий, с какой точностью мы хотим
найти ответ
P
пусть K������ = (1+1/������)n
поделим все pi на K������ и округлим: pi′ = ⌈pi /K������ ⌉
запустим Psuedopoly-Knapsack на полученном наборе
стоимостей
время работы алгорита не превосходит n2 max pi′ ≤ n3 P(1 + 1/������)/P
осталось доказать, что полученный алгоритм дает достаточно
хорошее приближение
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 22 / 26
138. Оценка приближения
пусть A������ — общая стоимость набора предметов, который вернул
алгоритм
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 23 / 26
139. Оценка приближения
пусть A������ — общая стоимость набора предметов, который вернул
алгоритм
заметим, что A������ ≥ Aopt − K������ n: псевдополиномиальный алгоритм
находит точное решение, поэтому отклонение могло появиться
только при округлении; при округлении могло потеряться не более
1 на каждом предмете, эта потеря домножается на K������ при
обратном переходе от pi′ к pi
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 23 / 26
141. Оценка приближения (продолжение)
Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой
предмет
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 24 / 26
142. Оценка приближения (продолжение)
Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой
предмет
тогда
A������ Aopt − K������
≥ =
Aopt Aopt
Pn 1 1
1− ≥1− =
Aopt n(1 + 1/������) 1 + 1/������ ������ + 1
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 24 / 26
143. Оценка приближения (продолжение)
Aopt ≥ P, так как в рюкзак можно просто засунуть самый дорогой
предмет
тогда
A������ Aopt − K������
≥ =
Aopt Aopt
Pn 1 1
1− ≥1− =
Aopt n(1 + 1/������) 1 + 1/������ ������ + 1
следовательно, A������ ≥ (1 − ������)Aopt
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 24 / 26
144. Что мы узнали за сегодня?
Что мы узнали за сегодня?
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 25 / 26
145. Что мы узнали за сегодня?
Что мы узнали за сегодня?
3/2-приближенный алгоритм для задачи о коммивояжере в
метрическом пространстве.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 25 / 26
146. Что мы узнали за сегодня?
Что мы узнали за сегодня?
3/2-приближенный алгоритм для задачи о коммивояжере в
метрическом пространстве.
Полностью полиномиальную приближенную схему для задачи о
рюкзаке.
А. Куликов (CS клуб при ПОМИ) 3. Приближенные алгоритмы 25 / 26