153
Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков Алгоритмы Alexander Lazarev Institute of Control Sciences of Russian Academy of Sciences 2009-2010 учебный год

Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Алгоритмы

Alexander Lazarev

Institute of Control Sciences of Russian Academy of Sciences

2009-2010 учебный год

Page 2: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Outline

1 Алгоритмы

2 Метод динамического программированияЗадача РанецЗадача КоммивояжёрРаскрой выпуклого многоугольникаРасписание работы конвейера

3 Метод ветвей и границЗадача коммивояжёра

4 Задача двух станков

Page 3: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Элементы теории алгоритмов

1 Метод динамического программирования;2 Метод ветвей и границ.

Page 4: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 5: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

В 1900 году в Париже прошла Всемирная конференцияматематиков, на которой Давид Гильберт (David Hilbert,1862–1943) изложил в виде тезисов сформулированные им 23наиважнейшие, по его мнению, задачи, которые предстоялорешить ученым-теоретикам наступающего ХХ века. Подвторым номером в его списке значилась одна из тех простыхзадач, ответ на которые кажется очевидным, пока не копнешьнемножечко глубже. Говоря современным языком, это былвопрос: самодостаточна ли математика? Вторая задачаГильберта сводилась к необходимости строго доказать, чтосистема аксиом — базовых утверждений, принимаемых вматематике за основу без доказательств, —- совершенна иполна, то есть позволяет математически описать всё сущее.

Page 6: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Надо было доказать, что можно задать такую систему аксиом,что они будут, во-первых, взаимно непротиворечивы, аво-вторых, из них можно вывести заключение относительноистинности или ложности любого утверждения.И тут в 1931 году какой-то венский очкарик —- математик КуртГёдель —- взял и опубликовал короткую статью, попростуопрокинувшую весь мир так называемой «математическойлогики».

Page 7: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Гёдель попросту доказал следующее удивительное свойстволюбой системы аксиом:«Если можно доказать утверждение A, то можно доказать иутверждение не-A».

Page 8: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Слабая теорема Гёделя о неполноте:«Любая формальная система аксиом содержит неразрешенныепредположения».Сильная теорема Гёделя о неполноте:«Логическая полнота (или неполнота) любой системы аксиомне может быть доказана в рамках этой системы. Для еедоказательства или опровержения требуются дополнительныеаксиомы (усиление системы)».

Page 9: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Ричард Эрнст Беллман (англ. Richard Ernest Bellman; род.26.8.1920, Нью-Йорк — ум.19.3.1984, Лос-Анджелес) —американский математик, один из ведущих специалистов вобласти математики и вычислительной техники.

Page 10: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Ассистент математики в Принстонском университете(1946—1948).Associate Professor математики, Стэнфордский университет(1948—1952).Научный сотрудник, RAND Corporation (1953—1965).Профессор, Университет Южной Калифорнии (1965—1984).Получил многочисленные результаты, связанные сприменением динамического программирования в разныхобластях математики (вариационное исчисление,автоматическое регулирование, теория аппроксимации,исследование операций и др.). В вариационном исчисленииважную роль играет функциональное уравнение Беллмана. Вматематических методах оптимального управления известныБеллмана функция и уравнение. Р.Беллман опубликовал 619статей и 39 книг. Многие его работы переведены на русскийязык.

Page 11: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Динамическое программирование обычно придерживается двухподходов к решению задач:

1 нисходящее динамическое программирование: задачаразбивается на подзадачи меньшего размера, онирешаются и затем комбинируются для решения исходнойзадачи. Используется запоминание для решений частовстречающихся подзадач;

2 восходящее динамическое программирование: всеподзадачи, которые впоследствии понадобятся длярешения исходной задачи просчитываются заранее и затемиспользуются для построения решения исходной задачи.Этот способ лучше нисходящего программирования всмысле размера необходимого стека и количества вызовафункций, но иногда бывает нелегко заранее выяснитьрешение каких подзадач нам потребуется в дальнейшем.

Page 12: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 13: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 14: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 15: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Задача Ранец

n∑i=1

vixi → max

n∑i=1

wixi ≤W

xi ∈ {0, 1},wi > 0, i = 1, . . . , n.

(1)

Page 16: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Page 17: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Page 18: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Page 19: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Page 20: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Page 21: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Page 22: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Page 23: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Page 24: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Ранец

Page 25: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Коммивояжёр

Page 26: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Коммивояжёр

Page 27: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Коммивояжёр

Page 28: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Коммивояжёр

Page 29: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Коммивояжёр

Page 30: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Коммивояжёр

Page 31: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача Коммивояжёр

Page 32: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

Рассмотрим применение техники динамическогопрограммирования еще на одном простом примере.Рассматривается множество так называемых раскроеввыпуклого n-угольника или, что то же самое, различныхразбиений его на треугольники с помощью n − 3непересекающихся диагоналей. Стоимость конкретного раскроя– это суммарная длина проведенных диагоналей. Пусть данвыпуклый n-угольник. Требуется найти его раскройминимальной стоимости.

Page 33: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

Page 34: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

Будем считать, что все вершины исходного многоугольникапронумерованы в порядке обхода n-угольника по часовойстрелки, т.е. n-угольник образован отрезками(1, 2), (2, 3), . . . , (n − 1, n), (n, 1). Через M(k , l) обозначиммногоугольник, отрезаемый от исходного диагональю (k , l), гдеk ≤ l . Он образован отрезками(k , k + 1), (k + 1, k + 2), . . . , (l − 1, l), (k , l).Ясно, что при l = k + 1 многоугольник M(k , l) вырождается вотрезок, при l = k + 2 – треугольник, а M(1, n) – это исходныйn-угольник.

Page 35: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

Для любых вершин k и l через n(k , l) обозначим минимальнуюстоимость раскроя многоугольника M(k , l), если l > k + 2, иполагаем

n(k , l) = 0, если l = k + 1,n(k , l) = 0, если l = k + 2.

Получаем следующее очевидное рекуррентное соотношение

n(k , l) = min{n(k , i) + n(i , l) + d(k , i) + d(i , l) : k < i < l},

где d(s, r) – это длина диагонали (s, r), если r > s + 1, иd(s, r) = 0, если r = s + 1.

Page 36: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

Указанное соотношение позволяет составить таблицу дляn(k , l), заполняя ее в порядке возрастания числа l − k + 1 –количества вершин в многоугольнике M(k , l). Программатакого заполнения таблицы будет использовать память O(n2) итребовать время O(n3), поскольку всего существует O(n2)элементов таблицы, а для однократного применениярекуррентной формулы требуется осуществить выборминимального числа из не более чем n чисел.

Page 37: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

После того, как вычислена таблица значений n(k , l), мыполучаем минимальную стоимость раскроя (она равна n(1, n))и легко можем вычислить раскрой минимальной стоимости.Для этого можно реализовать процесс обработки подзадач впорядке убывания их размера. Процесс начинается обработкойисходной задачи и постепенно шаг за шагом находитдиагонали, образующие разрез минимальной стоимости. Накаждом шаге рассматривается многоугольник M(k , l) и ищетсятакая вершина i , k < i < l , что

n(k , l) = n(k , i) + n(i , l) + d(k , i) + d(i , l).

Page 38: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

Поскольку таких шагов будет меньше n, а на каждом шагетребуется осуществить сравнение числа n(k , l) со значениямине более чем сумм

n(k , i) + n(i , l) + d(k , i) + d(i , l),

получаем оценку O(n3) для суммарной временной сложностидвух этапов рассмотренного алгоритма.

Page 39: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

Пример

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

Page 40: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

n(1, 9) = min{n(1, 2) + n(2, 9) + d(1, 2) + d(2, 9);n(1, 3) + n(3, 9) + d(1, 3) + d(3, 9);n(1, 4) + n(4, 9) + d(1, 4) + d(4, 9);n(1, 5) + n(5, 9) + d(1, 5) + d(5, 9);n(1, 6) + n(6, 9) + d(1, 6) + d(6, 9);n(1, 7) + n(7, 9) + d(1, 7) + d(7, 9);n(1, 8) + n(8, 9) + d(1, 8) + d(8, 9)}

(2)

n(2, 9) = min{n(2, 3) + n(3, 9) + d(2, 3) + d(3, 9);n(2, 4) + n(4, 9) + d(2, 4) + d(4, 9);n(2, 5) + n(5, 9) + d(2, 5) + d(5, 9);n(2, 6) + n(6, 9) + d(2, 6) + d(6, 9);n(2, 7) + n(7, 9) + d(2, 7) + d(7, 9);n(2, 8) + n(8, 9) + d(2, 8) + d(8, 9)}

(3)

Page 41: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

n(1, 9) = min{n(1, 2) + n(2, 9) + d(1, 2) + d(2, 9);n(1, 3) + n(3, 9) + d(1, 3) + d(3, 9);n(1, 4) + n(4, 9) + d(1, 4) + d(4, 9);n(1, 5) + n(5, 9) + d(1, 5) + d(5, 9);n(1, 6) + n(6, 9) + d(1, 6) + d(6, 9);n(1, 7) + n(7, 9) + d(1, 7) + d(7, 9);n(1, 8) + n(8, 9) + d(1, 8) + d(8, 9)}

n(1, 8) = min{n(1, 2) + n(2, 8) + d(1, 2) + d(2, 8);n(1, 3) + n(3, 8) + d(1, 3) + d(3, 8);n(1, 4) + n(4, 8) + d(1, 4) + d(4, 8);n(1, 5) + n(5, 8) + d(1, 5) + d(5, 8);n(1, 6) + n(6, 8) + d(1, 6) + d(6, 8);n(1, 7) + n(7, 8) + d(1, 7) + d(7, 8)}

(4)

Page 42: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

n(k , l), 1 ≤ k < l ≤ n, O(n2) O(n3) трудоёмкостьO(n2) память

Page 43: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(1, 2) = n(1, 3) = n(2, 4) = n(3, 4) = 0

n(1, 4) = min{n(1, 2) + n(2, 4) + d(1, 2) + d(2, 4);n(1, 3) + n(3, 4) + d(1, 3) + d(3, 4)} =min{0+ 6; 5+ 0} = 5

Page 44: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(2, 3) = n(2, 4) = n(4, 5) = n(3, 5) = 0

n(2, 5) = min{n(2, 3) + n(3, 5) + d(2, 3) + d(3, 5);n(2, 4) + n(4, 5) + d(2, 4) + d(4, 5)} =min{0+ 7; 6+ 0} = 6

Page 45: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(3, 4) = n(3, 5) = n(4, 6) = n(5, 6) = 0

n(3, 6) = min{n(3, 4) + n(4, 6) + d(3, 4) + d(4, 6);n(3, 5) + n(5, 6) + d(3, 5) + d(5, 6)} =min{0+ 8; 7+ 0} = 7

Page 46: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(4, 5) = n(5, 7) = n(4, 6) = n(6, 7) = 0

n(4, 7) = min{n(4, 5) + n(5, 7) + d(4, 5) + d(5, 7);n(4, 6) + n(6, 7) + d(4, 6) + d(6, 7)} =min{0+ 5; 8+ 0} = 5

Page 47: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(5, 6) = n(6, 8) = n(5, 7) = n(7, 8) = 0

n(5, 8) = min{n(5, 6) + n(6, 8) + d(5, 6) + d(6, 8);n(5, 7) + n(7, 8) + d(5, 7) + d(7, 8)} =min{0+ 12; 5+ 0} = 5

Page 48: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(6, 7) = n(7, 9) = n(6, 8) = n(8, 9) = 0

n(6, 9) = min{n(6, 7) + n(7, 9) + d(6, 7) + d(7, 9);n(6, 8) + n(8, 9) + d(6, 8) + d(8, 9)} =min{0+ 7; 12+ 0} = 7

Page 49: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(1, 2) = n(1, 3) = n(3, 5) = n(4, 5) = 0; n(2, 5) = 6; n(1, 4) = 5

n(1, 5) = min{n(1, 2) + n(2, 5) + d(1, 2) + d(2, 5);n(1, 3) + n(3, 5) + d(1, 3) + d(3, 5);n(1, 4) + n(4, 5) + d(1, 4) + d(4, 5)} =min{6+ 0+ 9; 5+ 7; 5+ 10+ 0} = 12

Page 50: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(2, 3) = n(2, 4) = n(4, 6) = n(5, 6) = 0; n(3, 6) = 7; n(2, 5) = 6

n(2, 6) = min{n(2, 3) + n(3, 6) + d(2, 3) + d(3, 6);n(2, 4) + n(4, 6) + d(2, 4) + d(4, 6);n(2, 5) + n(5, 6) + d(2, 5) + d(5, 6)} =min{7+ 0+ 4; 6+ 8; 6+ 9+ 0} = 11

Page 51: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(3, 4) = n(3, 5) = n(5, 7) = n(6, 7) = 0; n(4, 7) = 5; n(3, 6) = 7

n(3, 7) = min{n(3, 4) + n(4, 7) + d(3, 4) + d(4, 7);n(3, 5) + n(5, 7) + d(3, 5) + d(5, 7);n(3, 6) + n(6, 7) + d(3, 6) + d(6, 7)} =min{5+ 0+ 5; 7+ 5; 7+ 4+ 0} = 10

Page 52: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(4, 5) = n(4, 6) = n(6, 8) = n(7, 8) = 0; n(5, 8) = 5; n(4, 7) = 5

n(4, 8) = min{n(4, 5) + n(5, 8) + d(4, 5) + d(5, 8);n(4, 6) + n(6, 8) + d(4, 6) + d(6, 8);n(4, 7) + n(7, 8) + d(4, 7) + d(7, 8)} =min{5+ 0+ 8; 8+ 12; 5+ 5+ 0} = 10

Page 53: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(5, 6) = n(5, 7) = n(7, 9) = n(8, 9) = 0; n(6, 9) = 7; n(5, 8) = 5

n(5, 9) = min{n(5, 6) + n(6, 9) + d(5, 6) + d(6, 9);n(5, 7) + n(7, 9) + d(5, 7) + d(7, 9);n(5, 8) + n(8, 9) + d(5, 8) + d(8, 9)} =min{7+ 0+ 6; 5+ 7; 5+ 8+ 0} = 12

Page 54: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(1, 2) = n(1, 3) = n(4, 6) =n(5, 6) = 0;n(2, 6) = 11;n(3, 6) = 7;n(1, 4) = 5;n(1, 5) = 12

n(1, 6) = min{n(1, 2) + n(2, 6) + d(1, 2) + d(2, 6);n(1, 3) + n(3, 6) + d(1, 3) + d(3, 6);n(1, 4) + n(4, 6) + d(1, 4) + d(4, 6);n(1, 5) + n(5, 6) + d(1, 5) + d(5, 6)} =min{11+ 0+ 8; 7+ 5+ 4; 5+ 10+ 8; 12+ 15+ 0} = 16

Page 55: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(2, 3) = n(2, 4) = n(5, 7) =n(6, 7) = 0;n(3, 7) = 10;n(4, 7) = 5;n(2, 5) = 6;n(2, 6) = 11

n(2, 7) = min{n(2, 3) + n(3, 7) + d(2, 3) + d(3, 7);n(2, 4) + n(4, 7) + d(2, 4) + d(4, 7);n(2, 5) + n(5, 7) + d(2, 5) + d(5, 7);n(2, 6) + n(6, 7) + d(2, 6) + d(6, 7)} =min{10+ 0+ 8; 5+ 6+ 5; 6+ 9+ 5; 11+ 8+ 0} = 16

Page 56: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(3, 4) = n(3, 5) = n(6, 8) =n(7, 8) = 0;n(4, 8) = 10;n(5, 8) = 5;n(3, 6) = 7;n(3, 7) = 10

n(3, 8) = min{n(3, 4) + n(4, 8) + d(3, 4) + d(4, 8);n(3, 5) + n(5, 8) + d(3, 5) + d(5, 8);n(3, 6) + n(6, 8) + d(3, 6) + d(6, 8);n(3, 7) + n(7, 8) + d(3, 7) + d(7, 8)} =min{10+ 0+ 7; 5+ 7+ 8; 7+ 4+ 12; 10+ 8+ 0} = 17

Page 57: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(4, 5) = n(4, 6) = n(7, 9) =n(8, 9) = 0;n(5, 9) = 12;n(6, 9) = 7;n(4, 7) = 5;n(4, 8) = 10

n(4, 9) = min{n(4, 5) + n(5, 9) + d(4, 5) + d(5, 9);n(4, 6) + n(6, 9) + d(4, 6) + d(6, 9);n(4, 7+ n(7, 9) + d(4, 7) + d(7, 9);n(4, 8) + n(8, 9) + d(4, 8) + d(8, 9)} =min{12+ 0+ 10; 7+ 8+ 6; 5+ 5+ 7; 10+ 7+ 0} = 17

Page 58: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(1, 2) = n(1, 3) = n(5, 7) =n(6, 7) = 0;n(2, 7) = 16;n(3, 7) = 10;n(1, 4) = 5; n(4, 7) = 5;n(1, 5) = 12;n(1, 6) = 16

n(1, 7) = min{n(1, 2) + n(2, 7) + d(1, 2) + d(2, 7);n(1, 3) + n(3, 7) + d(1, 3) + d(3, 7);n(1, 4) + n(4, 7) + d(1, 4) + d(4, 7);n(1, 5) + n(5, 7) + d(1, 5) + d(5, 7);n(1, 6) + n(6, 7) + d(1, 6) + d(6, 7)} =

min{16 + 0 + 5; 10 + 5 + 8; 5 + 5 + 10 + 5; 12 + 15 + 5; 16 + 7 + 0} = 21

Page 59: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(2, 3) = n(2, 4) = n(6, 8) =n(7, 8) = 0;n(3, 8) = 17;n(4, 8) = 10;n(2, 5) = 6; n(5, 8) = 5;n(2, 6) = 11;n(2, 7) = 16

n(2, 8) = min{n(2, 3) + n(3, 8) + d(2, 3) + d(3, 8);n(2, 4) + n(4, 8) + d(2, 4) + d(4, 8);n(2, 5) + n(5, 8) + d(2, 5) + d(5, 8);n(2, 6) + n(6, 8) + d(2, 6) + d(6, 8);n(2, 7) + n(7, 8) + d(2, 7) + d(7, 8)} =

min{17 + 0 + 4; 10 + 6 + 7; 6 + 5 + 9 + 8; 11 + 8 + 12; 16 + 5 + 0} = 21

Page 60: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(3, 4) = n(3, 5) = n(7, 9) =n(8, 9) = 0;n(4, 9) = 17;n(5, 9) = 12;n(3, 6) = 7; n(6, 9) = 7;n(3, 7) = 10;n(3, 8) = 17

n(3, 9) = min{n(3, 4) + n(4, 9) + d(3, 4) + d(4, 9);n(3, 5) + n(5, 9) + d(3, 5) + d(5, 9);n(3, 6) + n(6, 9) + d(3, 6) + d(6, 9);n(3, 7) + n(7, 9) + d(3, 7) + d(7, 9);n(3, 8) + n(8, 9) + d(3, 8) + d(8, 9)} =

min{17 + 0 + 6; 12 + 7 + 10; 7 + 7 + 4 + 6; 10 + 8 + 7; 17 + 4 + 0} = 21

Page 61: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(1, 2) = n(1, 3) = n(6, 8) =n(7, 8) = 0;n(2, 8) = 21;n(3, 8) = 17;n(1, 4) = 5; n(4, 8) = 10;n(1, 5) = 12; n(5, 8) = 5;n(1, 6) = 16;n(1, 7) = 21;

n(1, 8) = min{n(1, 2) + n(2, 8) + d(1, 2) + d(2, 8);

n(1, 3) + n(3, 8) + d(1, 3) + d(3, 8);

n(1, 4) + n(4, 8) + d(1, 4) + d(4, 8);

n(1, 5) + n(5, 8) + d(1, 5) + d(5, 8);

n(1, 6) + n(6, 8) + d(1, 6) + d(6, 8);

n(1, 7) + n(7, 8) + d(1, 7) + d(7, 8)} =

min{21 + 0 + 8; 17 + 5 + 4; 5 + 10 + 10 + 7; 12 + 5 + 15 + 8; 16 + 7 + 12; 21 + 6 + 0} =26

Page 62: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(2, 3) = n(2, 4) = n(7, 9) =n(8, 9) = 0;n(3, 9) = 21;n(4, 9) = 17;n(2, 5) = 6; n(5, 9) = 12;n(2, 6) = 11; n(6, 9) = 7;n(2, 7) = 16;n(2, 8) = 21;

n(2, 9) = min{n(2, 3) + n(3, 9) + d(2, 3) + d(3, 9);

n(2, 4) + n(4, 9) + d(2, 4) + d(4, 9);

n(2, 5) + n(5, 9) + d(2, 5) + d(5, 9);

n(2, 6) + n(6, 9) + d(2, 6) + d(6, 9);

n(2, 7) + n(7, 9) + d(2, 7) + d(7, 9);

n(2, 8) + n(8, 9) + d(2, 8) + d(8, 9)} =

min{21 + 0 + 8; 17 + 6 + 6; 6 + 12 + 9 + 10; 11 + 7 + 8 + 6; 16 + 5 + 7; 21 + 8 + 0} =28

Page 63: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Раскрой выпуклого многоугольника

0 0 5 10 15 7 6 9 00 0 0 6 9 8 5 8 65 0 0 0 7 4 8 4 810 6 0 0 0 8 5 7 615 9 7 0 0 0 5 8 107 8 4 8 0 0 0 12 66 5 8 5 5 0 0 0 79 8 4 7 8 12 0 0 00 6 8 6 10 6 7 0 0

n(1, 2) = n(1, 3) = n(7, 9) =n(8, 9) = 0;n(2, 9) = 28;n(3, 9) = 21;n(1, 4) = 5; n(4, 9) = 17;n(1, 5) = 12; n(5, 9) = 12;n(1, 6) = 16; n(6, 9) = 7;n(1, 7) = 21;n(1, 8) = 26.

n(1, 9) = min{n(1, 2) + n(2, 9) + d(1, 2) + d(2, 9);

n(1, 3) + n(3, 9) + d(1, 3) + d(3, 9);

n(1, 4) + n(4, 9) + d(1, 4) + d(4, 9);

n(1, 5) + n(5, 9) + d(1, 5) + d(5, 9);

n(1, 6) + n(6, 9) + d(1, 6) + d(6, 9);

n(1, 7) + n(7, 9) + d(1, 7) + d(7, 9);

n(1, 8) + n(8, 9) + d(1, 8) + d(8, 9)} =

min{28 + 0 + 6; 21 + 5 + 8; 5 + 17 + 10 + 6; 12 + 12 + 15 + 10;

16 + 7 + 7 + 6; 21 + 6 + 7; 26 + 9 + 0} = 34

Page 64: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 65: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

O(2n)

Page 66: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 67: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 68: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 69: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 70: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 71: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 72: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 73: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 74: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 75: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 76: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 77: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 78: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 79: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 80: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 81: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 82: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 83: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 84: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 85: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 86: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 87: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 88: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Page 89: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Расписание работы конвейера

Прямой ход.На итерации алгоритма j = 1: суммирований 2; сравнений 0.На итерации алгоритма j = 2, . . . , n: суммирований 6;сравнений 2.Обратный ход.n операций перехода.Трудоёмкость O(n)Память O(n)

Page 90: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Задача коммивояжёра (коммивояжёр -— бродячий торговец,Traveling Salesman Problem) является одной из самыхизвестных задач комбинаторной оптимизации. Задачазаключается в отыскании самого выгодного маршрута,проходящего через указанные города хотя бы по одному разу споследующим возвратом в исходный город. В условиях задачиуказываются критерий выгодности маршрута (кратчайший,самый дешёвый, совокупный критерий и т. п.) исоответствующие матрицы расстояний, стоимости и т. п. Какправило, указывается, что маршрут должен проходить черезкаждый город только один раз —- в таком случае выборосуществляется среди гамильтоновых циклов.

Page 91: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Существует несколько частных случаев общей постановкизадачи, в частности геометрическая задача коммивояжёра(также называемая планарной или евклидовой, когда матрицарасстояний отражает расстояния между точками наплоскости), треугольная задача коммивояжёра (когда наматрице стоимостей выполняется неравенство треугольника),симметричная и асимметричная задачи коммивояжёра. Такжесуществует обобщение задачи, так называемая обобщённаязадача коммивояжёра.Общая постановка задачи, впрочем как и большинство еёчастных случаев, относится к классу NP-сложных задач.

Page 92: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 93: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 94: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 95: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 96: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 97: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 98: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 99: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 100: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 101: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 102: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 103: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 104: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 105: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 106: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 107: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 108: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 109: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 110: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 111: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 112: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 113: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 114: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 115: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 116: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 117: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 118: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 119: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 120: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 121: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 122: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Page 123: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

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

Для решения задачи коммивояжёра предложен в 1963 годугруппой авторов (Дж. Литл, К. Мурти, Д. Суини, К.Кэрол).

Пример

∞ 9 5 10 15 8 6 9 86 ∞ 7 6 9 8 5 8 65 8 ∞ 5 7 4 8 4 810 6 6 ∞ 4 8 5 7 615 9 8 6 ∞ 11 5 8 107 8 4 8 7 ∞ 9 12 66 5 8 5 5 5 ∞ 7 79 8 4 7 8 12 5 ∞ 67 6 8 6 10 6 7 6 ∞

5

Page 124: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Задача двух станков

Дано:

1 N12 – множество требований, стехнологическим маршрутом(1 −→ 2);

2 для каждого требования заданы p1i

и p2i – времена обслуживания на

первом и втором приборесоответственно;

3 целевая функция – суммарное(общее) время обслуживания всехтребований.

Аэропорт: "прибор" 1 – регистрация, паспортный, таможенныйконтроль. . . ; "прибор" 2 – взлётно-посадочная полоса.

Page 125: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Ограничения:

1 на каждом приборе в каждыймомент времени выполняется неболее одного требования;

2 каждое требование может начатьвыполняться на втором приборе,только если оно завершилось напервом, то есть момент окончанияобслуживания на первом приборе недолжен превосходить моментаначала обслуживания на втором;

3 непрерываемость требований: еслиi-тое требование началообслуживаться в момент времени tна j-том приборе, то оно должнообслуживаться на том же приборедо момента времени t + pj

i .

Page 126: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Алгоритм Джонсона:

Page 127: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 128: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 129: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 130: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Пример 1.

j 1 2 3 4 5 6 7

p1j 5 7 4 3 5 7 6

p2j 6 5 6 7 4 6 8

π = ( , , , , , , )

Page 131: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Пример 1.

j 1 2 3 4 5 6 7

p1j 5 7 4 3 5 7 6

p2j 6 5 6 7 4 6 8

π = (4 , , , , , , )

Page 132: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Пример 1.

j 1 2 3 5 6 7

p1j 5 7 4 5 7 6

p2j 6 5 6 4 6 8

π = (4 , , , , , , )

Page 133: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Пример 1.

j 1 2 3 5 6 7

p1j 5 7 4 5 7 6

p2j 6 5 6 4 6 8

π = (4 , , , , , , 5)

Page 134: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Пример 1.

j 1 2 3 6 7

p1j 5 7 4 7 6

p2j 6 5 6 6 8

π = (4 , 3 , , , , , 5)

Page 135: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Пример 1.

j 1 2 6 7

p1j 5 7 7 6

p2j 6 5 6 8

π = (4 , 3 , , , , , 5)

Page 136: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Пример 1.

j 1 2 6 7

p1j 5 7 7 6

p2j 6 5 6 8

π = (4 , 3 , , , , 2 , 5)

Page 137: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Пример 1.

j 1 6 7

p1j 5 7 6

p2j 6 6 8

π = (4 , 3 , 1 , , , 2 , 5)

Page 138: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Пример 1.

j 6 7

p1j 7 6

p2j 6 8

π = (4 , 3 , 1 , 6 , 7 , 2 , 5)O(n log n)

Page 139: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 140: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 141: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 142: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Используя Алгоритм 1, строим две перестановки π12 и π21 длямножеств требований N12 и N21, соответственно. В силуТеорем 1 и 2, расписания с такими порядками являютсяоптимальными в задачах 1 и 2, соответственно. Пусть c∗ и c∗∗

оптимальные значения целевой функции. Считаем, чтовыполнены условия Лемм 1 и 2. Обозначим c∗∗∗ оптимальноезначение целевой функции в задаче 3. Все требования имеютположительное время обслуживания, поэтому

c∗∗∗ ≥ max{c∗, c∗∗}.

Page 143: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Также общее суммарное время обслуживание не может бытьменьше, чем суммарное время обслуживания на каждомприборе

c∗∗∗ ≥ max{p1, p2},

гдеp1 = p1

12 + p121, p2 = p2

12 + p221.

Page 144: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Возможны два случая:

1max{p1, p2} ≥ max{c∗, c∗∗};

2max{c∗, c∗∗} ≥ max{p1, p2}.

Page 145: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 146: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 147: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 148: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 149: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 150: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 151: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

Page 152: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

O(n log n)

Page 153: Алгоритмы - Higher School of Economics · Алгоритмы Метод динамического программирования Метод ветвей и границЗадача

Алгоритмы Метод динамического программирования Метод ветвей и границ Задача двух станков

O(n log n)