ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ ЗАДАЧИ

39
Институт математики, ауд. 220 пятница 14:15 Лектор: Кононов Александр Вениаминович http://www.math.nsc.ru/LBRT/k5/dep.html

Upload: fontaine-callum

Post on 03-Jan-2016

45 views

Category:

Documents


0 download

DESCRIPTION

ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ ЗАДАЧИ. Институт математики , ауд. 220 пятница 14:15. Лектор: Кононов Александр Вениаминович. http :// www . math . nsc . ru / LBRT / k 5/ dep . html. Программа первого семестра. Введение Графы Остовные деревья Кратчайшие пути Потоки в сетях - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Институт математики, ауд. 220

пятница 14:15

Лектор: Кононов Александр Вениаминович

http://www.math.nsc.ru/LBRT/k5/dep.html

Page 2: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Программа первого семестра

1. Введение

2. Графы

3. Остовные деревья

4. Кратчайшие пути

5. Потоки в сетях

6. Максимальное паросочетание

7. Матроиды

Page 3: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

1. Введение

1.1. Перечисление (перебор)

1.2. Время работы алгоритмов

1.3. Алгоритм сортировки слиянием

Page 4: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

2. Графы

2.1 Основные определения

2.2 Деревья, обходы и разрезы

2.3 Связность

2.4 Эйлеровы и двудольные графы

Page 5: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

3. Остовные деревья

3.1 Задача о минимальном остовном дереве

3.2 Задача о минимальном взвешенном ориентированном остовном дереве

3.3 Упаковка остовных деревьев

Page 6: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

4. Кратчайшие пути

4.1 Кратчайшие пути из одной вершины

4.2 Кратчайшие пути между всеми парами вершин

4.3 Задача о минимальном усредненном цикле

Page 7: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

5. Потоки в сетях

5.1 Теорема о максимальном потоке и минимальном разрезе

5.2 Теорема Менгера

5.3 Алгоритм Эдмонса-Карпа

5.4 Блокирующие потоки

5.5 Алгоритм Голдберга-Тарьяна

Page 8: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

6.Максимальное паросочетание

6.1 Двудольное паросочетание

6.2 Матрица Татта

6.3 Теорема Татта

6.4 Алгоритм Эдмонса

Page 9: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Матроиды

7.1 Независимые системы и матроиды

7.2 Жадный алгоритм для задачи максимизации независимой системы

Page 10: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Литература

• Korte B., Vygen J. Combinatorial Optimization: theory and algorithms. (Algorithms and Combinatorics 21), Springer, Berlin, 2000.

• Пападимитриу Х., Стайглиц К. Комбинаторная оптимизация. Алгоритмы и сложность. М.: Мир, 1985.

Page 11: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Век комбинаторной оптимизации

• Теория чисел ~ 4000 лет назад

• Геометрия ~ 2600 лет назад

• Анализ ~ 300 лет назад

• Алгебра ~ 200 лет назад

----------------------------------------------------

Комбинаторная оптимизация

~ 50 лет назад!

Page 12: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Причина

Тысячи проблем в экономике, военных приложениях, организации производства могут быть сформулированы как задачи комбинаторной оптимизации.

Page 13: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Производство печатных плат

• Даны: Множество точек p1,…,pn R2 .

• Найти : Перестановку : {1,..., n}{1,..., n}

такую что d(p(i) , p(i+1) ) минимально.

1

1

n

i

Page 14: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Задача о назначении

• Даны: Множество чисел p1,…,pn R+

(длительность работ), m N рабочих, и непустое подмножество Si {1,..., m} рабочих для каждой работы i {1,..., n}.

• Найти : Числа xij R+ ( i =1,...,n; j Si )

так что ( i =1,...,n ) и

минимизирующее maxj .

iS

iij px j

iSijx

j:i

Page 15: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Комбинаторная оптимизация

Вычислительные проблемы ― не только задачки, которые должны быть решены; они ― также объекты, которые заслуживают изучения. Задачи и алгоритмы можно формализовать и изучать математически.

Х. Пападимитриоу

Page 16: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Задача разметки печатных плат

• Даны: Множество точек p1,…,pn R2 .

• Найти : Перестановку : {1,..., n}{1,..., n}

такую что d(p(i) , p(i+1) ) минимально.

1

1

n

i

Page 17: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Алгоритм ???

Input: N точек …

Найти оптимальный путь !!!

Output: оптимальный путь NO

Page 18: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Алгоритм ???

Input: N точек …

Перебрать все возможные перестановки и выбрать оптимальную !

Output: оптимальный путь

NO

Page 19: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Перебор с возвратом

(1, 1, … , 1, 1) (1, 1, … , 1, 2) (1, 1, … , 1, 3) (1, 1, … , 1, n)

(1, 1, … , 2, 1) (1, 1, … , 2, 2) (1, 1, … , 2, 3) (1, 1, … , 2, n)

(1, 1, … , 3, 1) (1, 1, … , 3, 2) (1, 1, … , 3, 3) (1, 1, … , 3, n)

• • •

• • •

• • •

• • •

nn шаговn! перестановок

n! << nn

Page 20: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Лексикографический порядок

Определение 1.1

Пусть x,y Rn ― два вектора. Вектор x лексикографически меньше чем y, если существует индекс j{1,..., n}, такой что xi= yi для i =1,..., j – 1 и xj < yj .

Page 21: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Алгоритм перебора путей

Input: Натуральное число n 3. Множество {p1,…,pn} точек на плоскости

Output: Перестановка π*:{1,..., n}→{1,..., n}, минимизирующаяcost(π*):= d(pp (i) , pp (i+1) ).

1. Set π(i):=i, π*(i):=i for i =1,...,n. Set i :=n − 1.2. Let k:=min({π(i)+1,…,n+1}\ {π(1),…, π(i) − 1}).3. If k n then:

Set π(i):=k. If i= n & cost(π) < cost(π*) then set π*:= π. If i< n then set π(i+1):=0 & i:=i+1. If k = n+1 then set i := i − 1. If i 3 then go to 2.

1

1

n

i

Page 22: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Примерπ := (1, 2, 3, 4, 5, 6 ) i := 5

k := 6 π := (1, 2, 3, 4, 6, 0 ) i := 6

k := 7

k := 7

k := 5 π := (1, 2, 3, 4, 6, 5 ) ? cost(π) < cost(π*) ?

k := 5 π := (1, 2, 3, 5, 0, 5 ) i := 5

k := 4 π := (1, 2, 3, 5, 4, 0 ) i := 6

k := 6 π := (1, 2, 3, 5, 4, 6 ) ? cost(π) < cost(π*) ?

• • •

i := 5

i := 4

Page 23: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Полезное обозначение

Определение 1.2

Пусть f , g : D R+ две функции. Будем говорить, что f есть O(g) (и писать f = O(g)), если существуют константы α, β > 0, такие что f(x) αg(x)+β для всех x D. Если f = O(g) и g = O( f ), то будем писать f = Θ(g).

Page 24: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Алгоритм перебора путей

Input: Натуральное число n 3. Множество {p1,…,pn } точек на плоскости

Output: Перестановка π*:{1,..., n}→{1,..., n}, минимизирующаяcost(π*):= d(pp (i) , pp (i+1) ).

1. Set π(i):=i, π*(i):=i for i =1,...,n. Set i :=n − 1.2. Let k:=min({π(i)+1,…,n+1}\ {π(1),…, π(i) − 1}).3. If k n then:

Set π(i):=k. If i= n & cost(π) < cost(π*) then set π*:= π. If i< n then set π(i+1):=0 & i:=i+1. If k = n+1 then set i := i − 1. If i 3 then go to 2.

1

1

n

i

Page 25: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

k:=min({π(i)+1,…,n+1}\ {π(1),…, π(i) − 1})

• For j := 1 to n do aux(j) := 0.

• For j := 1 to i – 1 do aux(π(j)) := 1.

• Set k := π(i) + 1.

• While k ≤ n and aux(k) = 1 do k := k + 1.

Page 26: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Алгоритм

• Множество исходных данных (Вход)• Последовательность инструкций, каждая из

которых может быть представлена цепочкой элементарных шагов.

• Для каждого допустимого входа алгоритм в процессе вычисления выполняет единственно определенную серию элементарных шагов и выдает некоторый ответ.

Page 27: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Время работы алгоритма

Определение 1.3 Пусть алгоритм A получает на входе множество X, и

пусть f:X→R+. Если существует константа α > 0 такая что алгоритм A заканчивает вычисления не более чем через αf(x) элементарных шагов (включая арифметические операции) для любого входа xX, то будем говорить, что O( f ) время работы алгоритма A.

Page 28: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Размер входа

• Размер входа примера с рациональными данными равен числу бит требуемых для его двоичного представления.

Page 29: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Полиномиальный алгоритм

• Определение 1.4 Алгоритм с рациональным входом называется полиномиальным, если существует целое k такое что алгоритм работает время O(nk), где n есть размер входа и все числа, используемые алгоритмом в процессе вычислений ограничены величиной O(nk) бит.

Алгоритм с произвольным входом называется сильно полиномиальным, если существует целое k такое что алгоритм работает время O(nk) на любом входе состоящим из n чисел и он полиномиальный на рациональном входе. Если k=1 алгоритм называется линейным.

Page 30: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Таблица 1.1

n 100n log n 10n2 n3.5 nlog n 2n n!

10 3μs 1μs 3μs 2μs 1μs 4μs

30 15μs 9μs 148μs 20ms 1s >1015y

100 66μs 100μs 10ms 5 h >1013y

103 1ms 10ms 32s >1013y

108 266s 3 y >1010y

1012 46d >108y

Page 31: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Таблица 1.2

1h 100n log n 10n2 n3.5 nlog n 2n n!

(a) 1.19*109 60000 3868 87 41 15

(b) 10.8*109 189737 7468 104 45 16

Page 32: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Алгоритм сортировки слиянием

Input: Список a1,…,an действительных чисел.Output: Перестановка π : {1,..., n}{1,..., n}, такая что a(i) ≤ a(i+1)

для всех i =1,..., n – 1.

1. If n=1 then set π(1) :=1 and stop (return π ).2. Set m:= [n/2].

Let ρ:=Merge-Sort(a1,…,am). Let σ :=Merge-Sort(am+1,…,an).

3. Set k:=1, l:=1. While k ≤ m and l ≤ n – m do: If aρ(k) ≤ am+σ(l) then set π(k+l – 1):= ρ(k) and k:= k +1. else set π(k+l – 1):= m + σ (l) and l:=l +1. While k ≤ m do: Set π(k+l – 1):= ρ(k) and k:= k+1. While l ≤ n-m do: Set π(k+l – 1):= m + σ (l) and l:= l +1.

Page 33: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Время работы алгоритма

Теорема 1.5 Алгоритм сортировки слиянием

находит решение за O(n log n) элементарных операций.

Page 34: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Алгоритм сортировки слиянием

Input: Список a1,…,an действительных чисел.Output: Перестановка π : {1,..., n}{1,..., n}, такая что a(i) ≤ a(i+1)

для всех i =1,..., n – 1.

1. If n=1 then set π(1) :=1 and stop (return π ).2. Set m:= [n/2].

Let ρ:=Merge-Sort(a1,…,am). Let σ :=Merge-Sort(am+1,…,an).

3. Set k:=1, l:=1. While k ≤ m and l ≤ n – m do: If aρ(k) ≤ am+σ(l) then set π(k+l – 1):= ρ(k) and k:=k +1. else set π(k+l – 1):= m + σ (l) and l:= l +1. While k ≤ m do: Set π(k+l – 1):= ρ(k) and k:= k+1. While l ≤ n-m do: Set π(k+l – 1):= m + σ (l) and l:= l +1.

Page 35: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Доказательство теоремы 1.5

• T(n) время работы алгоритма на примере с n числами.

• Грубо оценим шаг 3 сверху через 5n + 2.

1log12

2522

11

nnnT

nn

Tn

TnT

T

Page 36: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Упражнение 1.1

.log!log , nnnчтоДоказать

Page 37: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Упражнение 1.2

.logn , 1 nOnчтоДоказать

Page 38: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Упражнение 1.3

Показать, что время работы алгоритма перебора путей есть O(n•n!).

Page 39: ДИСКРЕТНЫЕ ЭКСТРЕМАЛЬНЫЕ  ЗАДАЧИ

Упражнение 1.4

Пусть s, t строчки из нулей и единиц длины m. Скажем, что s лексикографически меньше чем t если существует индекс j {1,..., n}, такой что si= ti

для i =1,..., j-1 и sj< tj .

Дано n строчек длины m, требуется упорядочить строчки в лексикографическом порядке.

Доказать, что существует линейный алгоритм, решающий эту задачу, то есть алгоритм с временем работы O(mn).