Разделы презентаций


Комбинаторные алгоритмы

Содержание

Минимальный остовАлгоритмы Борувки – Краскала,Ярника – Прима – Дейкстры.

Слайды и текст этой презентации

Слайд 1Комбинаторные алгоритмы
Установочные лекции

Комбинаторные алгоритмыУстановочные лекции

Слайд 2Минимальный остов
Алгоритмы Борувки – Краскала,
Ярника – Прима – Дейкстры.

Минимальный остовАлгоритмы Борувки – Краскала,Ярника – Прима – Дейкстры.

Слайд 3Минимальный остов
Остовом называется ацикличный связный подграф данного графа, содержащий все

его вершины.
Пусть G=(V,E,c)  связный взвешенный неориенти-рованный граф. Под весом

с(H) произвольного ненулевого подграфа H будем понимать сумму весов всех ребер подграфа H.

Ацикличный остовный подграф (содержащий все вершины графа G) будем называть остовным лесом графа G.

Остов T называется минимальным, если для любого остова T’ выполняется неравенство c(T)  c(T’).

Минимальный остовОстовом называется ацикличный связный подграф данного графа, содержащий все его вершины.Пусть G=(V,E,c)  связный взвешенный неориенти-рованный

Слайд 4Минимальный остов
Этот раздел посвящен решению следую-щей задачи: в данном связном

графе найти минимальный остов (задача о минимальном остове).

Минимальный остовЭтот раздел посвящен решению следую-щей задачи: в данном связном графе найти минимальный остов (задача о минимальном

Слайд 5Предположим, что F  остовный лес связного взвешенного графа G.

Будем говорить, что F продолжаем до мини-мального остова, если существует

такой минимальный остов T, что F  T.

Минимальный остов

Предположим, что F  остовный лес связного взвешенного графа G. Будем говорить, что F продолжаем до мини-мального

Слайд 6Минимальный остов
Справедлива следующая лемма.
Пусть остовный лес F продолжаем до минимального

остова и H  одна из компонент связности леса F.

Если с  ребро минимального веса из Ext(H) (т.е. внешнее по отношению к H: один его конец лежит в H, в другой – нет), то остовный лес F + c продолжаем до минимального остова.
Минимальный остовСправедлива следующая лемма.Пусть остовный лес F продолжаем до минимального остова и H  одна из компонент

Слайд 7Минимальный остов
Эта лемма позволяет сконструировать два алгоритма построения минимального остова

во взвешенном (n,m)-графе G.
Пусть F0 – тривиальный остовный лес (т.е.

остовный лес без ребер). Ясно, что F0 можно продолжить до минимального остова.
Оба алгоритма строят последовательность
F0, F1, …, Fn -1,
состоящую из остовных лесов, причем
Fi = Fi -1 + ei
где ei – ребро из Ext(Fi-1). Указанную после-довательность называют растущим лесом.
Минимальный остовЭта лемма позволяет сконструировать два алгоритма построения минимального остова во взвешенном (n,m)-графе G.Пусть F0 – тривиальный

Слайд 8Минимальный остов
Последовательность строится таким образом, чтобы для каждого i (i[1,n-1])

остовный лес можно было бы продолжить до минимального остова. Ясно,

что тогда Fn-1 является минимальным остовом.

При переходе от Fi-1 к Fi (т.е. при выборе ребра ei) возможны две стратегии.

Минимальный остовПоследовательность строится таким образом, чтобы для каждого i (i[1,n-1]) остовный лес можно было бы продолжить до

Слайд 9Минимальный остов
Стратегия 1. В качестве ei выбираем ребро минимального веса

среди всех ребер, внешних к остовному лесу Fi-1.

Пусть H –

одна из двух компонент связности, леса Fi-1, содержащая концевую вершину ребра ei. Если Fi-1 продолжаем до минималь-ного остова, то в силу леммы лес Fi = Fi-1 + ei обладает тем же свойством.
Минимальный остовСтратегия 1. В качестве ei выбираем ребро минимального веса среди всех ребер, внешних к остовному лесу

Слайд 10Минимальный остов
Стратегия 2. Здесь предполагается, что каждый остовный лес Fi

(i1) имеет только од-ну неодноэлементную компоненту связности Hi. Удобно считать,

что H0 состоит из не-которой заранее выбранной вершины графа G. Таким образом речь идет о построении последовательности
H0, H1, …, Hn -1,
состоящей из поддеревьев графа G, причем
Hi = Hi -1 + ei,
причем ei Ext(Fi-1). Указанную последователь-ность называют растущим деревом.
Минимальный остовСтратегия 2. Здесь предполагается, что каждый остовный лес Fi (i1) имеет только од-ну неодноэлементную компоненту связности

Слайд 11Минимальный остов
Стратегия 1 реализуется алгоритмом Борувки – Краскала, стратегия 2

– алгоритмом Ярника – Прима – Дейкстры.

Минимальный остовСтратегия 1 реализуется алгоритмом Борувки – Краскала, стратегия 2 – алгоритмом Ярника – Прима – Дейкстры.

Слайд 12Алгоритм
Борувки – Краскала
Минимальный остов

АлгоритмБорувки – КраскалаМинимальный остов

Слайд 13Отакар Борувка (10 мая 1899  22 июля 1995)
Чешский математик, про-фессор

университета Брно.
Идея алгоритма построе-ния минимального остова была изложена в его

рабо-те в 1926 году. Однако, работа была практически забыта.
Отакар Борувка (10 мая 1899  22 июля 1995) Чешский математик, про-фессор университета Брно.Идея алгоритма построе-ния минимального

Слайд 14Джозеф Краскал (29 января 1928 ― 19 сентября 2010 )
Американский

математик. Учился в Чикагском и в Принстонском университетах. В 1954

году получил степень PhD. Одним их его научных руководителей был Алберт Таккер (помните теорему Куна-Таккера о необходимых усло-виях экстремума в задаче ма-тематического программирова-ния?).
Член американской ассоциации статистики, ведущий ученый Bell Labs.
Алгоритм построения минималь-ного остова был опубликован в 1956 году.
Джозеф Краскал  (29 января 1928 ― 19 сентября 2010 )Американский математик. Учился в Чикагском и в

Слайд 15Минимальный остов Алгоритм Борувки – Краскала
Сортируем ребра графа по возрастанию весов.
Тривиальный

лес объявить растущим.
Проходим ребра в "отсортированном" порядке.
Для каждого

ребра выполняем:
если вершины, соединяемые данным ребром лежат в разных деревьях растущего леса, то объединяем эти деревья в одно, а ребро добавляем к строящемуся остову.
если вершины, соединяемые данным ребром лежат в одном дереве растущего леса, то исключаем ребро из рассмотрения.
Если есть еще нерассмотренные ребра и не все деревья объединены в одно, то переходим к шагу 3, иначе выход.
Минимальный остов Алгоритм Борувки – КраскалаСортируем ребра графа по возрастанию весов.Тривиальный лес объявить растущим. Проходим ребра в

Слайд 16Рассмотрим работу алгоритма Борувки – Краскала на примере следующего связного

графа. Ребра с одинаковыми весами будем рассматривать в лексико-графическом порядке
1
2
3
4
5
6
7
7
8
9
7
5
5
15
6
11
8
9
Минимальный

остов Алгоритм Борувки – Краскала
Рассмотрим работу алгоритма Борувки – Краскала на примере следующего связного графа. Ребра с одинаковыми весами будем рассматривать

Слайд 17Тривиальный лес объявляем растущим. Выбираем произвольное ребро минимального веса. Его

концы лежат в разных деревьях растущего леса. Добавляем ребро в

остов.

Минимальный остов Алгоритм Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Тривиальный лес объявляем растущим. Выбираем произвольное ребро минимального веса. Его концы лежат в разных деревьях растущего леса.

Слайд 18Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в разных деревьях леса. Добавляем ребро в остов.

Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в разных деревьях леса. Добавляем ребро

Слайд 19Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в разных деревьях леса. Добавляем ребро в остов.

Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в разных деревьях леса. Добавляем ребро

Слайд 20Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в разных деревьях леса. Добавляем ребро в остов.

Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в разных деревьях леса. Добавляем ребро

Слайд 21Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в разных деревьях леса. Добавляем ребро в остов.

Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в разных деревьях леса. Добавляем ребро

Слайд 22Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в одном дереве леса. Исключаем ребро из рассмотрения.
Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в одном дереве леса. Исключаем ребро

Слайд 23Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в одном дереве леса. Исключаем ребро из рассмотрения.
Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в одном дереве леса. Исключаем ребро

Слайд 24Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в одном дереве леса. Исключаем ребро из рассмотрения.
Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в одном дереве леса. Исключаем ребро

Слайд 25Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в разных деревьях леса. Добавляем ребро в остов.
Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в разных деревьях леса. Добавляем ребро

Слайд 26Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в одном дереве леса. Исключаем ребро из рассмотрения.

Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в одном дереве леса. Исключаем ребро

Слайд 27Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы

лежат в одном дереве леса. Исключаем ребро из рассмотрения.
Минимальный остов Алгоритм

Борувки – Краскала

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Среди оставшихся ребер выбираем произ-вольное ребро минимального веса. Его концы лежат в одном дереве леса. Исключаем ребро

Слайд 28Нерассмотренных ребер нет. Минимальный остов построен. Вес остова равен 39.

Минимальный

остов Алгоритм Борувки – Краскала
1
2
3
4
5
6
7
7
8
9
7
5
5
15
6
11
8
9

Нерассмотренных ребер нет. Минимальный остов построен. Вес остова равен 39.Минимальный остов Алгоритм Борувки – Краскала12345677897551561189

Слайд 29Алгоритм
Ярника – Прима – Дейкстры
Минимальный остов

АлгоритмЯрника – Прима – ДейкстрыМинимальный остов

Слайд 30Войтех Ярник (22 декабря 1897 – 22 сентября 1970)
Чешский математик. Ос-новные

работы посвящены теории чисел и матема-тическому анализу.
В 1930 году разработал

алгоритм построения ми-нимального остова.
Войтех Ярник (22 декабря 1897 – 22 сентября 1970)Чешский математик. Ос-новные работы посвящены теории чисел и матема-тическому

Слайд 31Роберт Прим (род. в 1921 в Техасе, США)
Американский математик. Получил степень

PhD в Принстонском универси-тете в 1949. Позже рабо-тал вместе с

Джозефом Красаклом в Bell Labs.
Предложил алгоритм по-строения минимального остова в 1957 году.
Роберт Прим (род. в 1921 в Техасе, США)Американский математик. Получил степень PhD в Принстонском универси-тете в 1949.

Слайд 32Эдсгер Дейкстра (11 мая 1930 – 6 августа 2002)
Голландский математик –

специалист в области компьютерных наук. В 1972 году стал лауреатом

премии Тьюринга за существенный вклад в развитие языков програм-мирования.
Разработал алгоритм построения минимального остова в 1959 году.
Эдсгер Дейкстра (11 мая 1930 – 6 августа 2002)Голландский математик – специалист в области компьютерных наук. В

Слайд 33Минимальный остов Алгоритм Ярника – Прима – Дейкстры
Выбирается произвольная вершина –

она будет корнем остовного дерева.
Измеряется расстояние от нее до всех

внешних по отношению к растущему дереву вершин (расстояние от внешней вершины до ближайшей к ней вершины дерева)
До тех пор пока в дерево не добавлены все вершины делать:
Найти вершину, расстояние от дерева до которой минимально.
Добавить ее к дереву.
Пересчитать расстояния от вершин до дерева следующим образом: если расстояние до какой- либо вершины из новой вершины меньше текущего расстояния от дерева, то старое расстояние от дерева заменить новым.
Минимальный остов Алгоритм Ярника – Прима – ДейкстрыВыбирается произвольная вершина – она будет корнем остовного дерева.Измеряется расстояние

Слайд 34Рассмотрим работу алгоритма Ярника – Прима – Дейкстры на примере

следу-ющего связного графа. Ребра с одина-ковыми весами будем рассматривать в

лексико-графическом порядке

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Минимальный остов Алгоритм Ярника – Прима – Дейкстры

Рассмотрим работу алгоритма Ярника – Прима – Дейкстры на примере следу-ющего связного графа. Ребра с одина-ковыми весами

Слайд 35Выбираем произвольную вершину (например, с номером 1). Объявляем ее растущим

деревом. Находим ближайшую вершину к растущему дереву. Это вершина под

номером 4. Добавляем ее в дерево вместе с ребром, на котором достигается минимум расстояния.

Минимальный остов Алгоритм Ярника – Прима – Дейкстры

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Выбираем произвольную вершину (например, с номером 1). Объявляем ее растущим деревом. Находим ближайшую вершину к растущему дереву.

Слайд 36Находим ближайшую вершину к растущему дереву. Это вершина под номером

6. Добавляем ее в дерево вместе с ребром, на котором

достигается минимум расстояния.

Минимальный остов Алгоритм Ярника – Прима – Дейкстры

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Находим ближайшую вершину к растущему дереву. Это вершина под номером 6. Добавляем ее в дерево вместе с

Слайд 37Находим ближайшую вершину к растущему дереву. Это вершина под номером

2. Добавляем ее в дерево вместе с ребром, на котором

достигается минимум расстояния.

Минимальный остов Алгоритм Ярника – Прима – Дейкстры

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Находим ближайшую вершину к растущему дереву. Это вершина под номером 2. Добавляем ее в дерево вместе с

Слайд 38Находим ближайшую вершину к растущему дереву. Это вершина под номером

5. Добавляем ее в дерево вместе с ребром, на котором

достигается минимум расстояния.

Минимальный остов Алгоритм Ярника – Прима – Дейкстры

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Находим ближайшую вершину к растущему дереву. Это вершина под номером 5. Добавляем ее в дерево вместе с

Слайд 39Находим ближайшую вершину к растущему дереву. Это вершина под номером

3. Добавляем ее в дерево вместе с ребром, на котором

достигается минимум расстояния.

Минимальный остов Алгоритм Ярника – Прима – Дейкстры

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Находим ближайшую вершину к растущему дереву. Это вершина под номером 3. Добавляем ее в дерево вместе с

Слайд 40Находим ближайшую вершину к растущему дереву. Это вершина под номером

7. Добавляем ее в дерево вместе с ребром, на котором

достигается минимум расстояния.

Минимальный остов Алгоритм Ярника – Прима – Дейкстры

1

2

3

4

5

6

7

7

8

9

7

5

5

15

6

11

8

9

Находим ближайшую вершину к растущему дереву. Это вершина под номером 7. Добавляем ее в дерево вместе с

Слайд 41Непомеченных вершин нет. Минимальный остов построен. Его вес равен 39.
Минимальный

остов Алгоритм Ярника – Прима – Дейкстры
1
2
3
4
5
6
7
7
8
9
7
5
5
15
6
11
8
9

Непомеченных вершин нет. Минимальный остов построен. Его вес равен 39.Минимальный остов Алгоритм Ярника – Прима – Дейкстры12345677897551561189

Слайд 42Рассмотрим следующую задачу.
Минимальный остов
Телефонная компания арендовала место, обозна-ченное узлом 1

для основного центра связи, и опре-делила расположение дополнительных центров (узлы

2,3, …5). Необходимо проложить кабель так, чтобы каждый дополнительный центр связи был связан с основным либо непосредственно, либо через другие дополнительные центры. В целях экономии компания стремиться израсходовать кабеля как можно меньше. Расстояния между центрами даны в таблице.
Рассмотрим следующую задачу.Минимальный остовТелефонная компания арендовала место, обозна-ченное узлом 1 для основного центра связи, и опре-делила расположение

Слайд 43Минимальный остов

Минимальный остов

Слайд 44Пути в сетях
Алгоритмы Форда – Беллмана,
Дейкстры.

Пути в сетяхАлгоритмы Форда – Беллмана,Дейкстры.

Слайд 45Пути в сетях
Взвешенный орграф G=(V,E,c) называется сетью.
Пусть P — некоторый

(v,w)–путь:
Положим
Величину с(P) назовем длиной пути P.

Пути в сетяхВзвешенный орграф G=(V,E,c) называется сетью.Пусть P — некоторый (v,w)–путь:ПоложимВеличину с(P) назовем длиной пути P.

Слайд 46Пути в сетях
Наименьшую из длин (v,w)–путей назовем расстоянием от v

до w, …
… а тот (v,w)–путь, длина которого равна

расстоянию от v до w, будем называть кратчайшим (v,w)–путем.

Ясно, что расстояние от v до w может отличаться от рассто-яния от w до v.

!

!

Пути в сетяхНаименьшую из длин (v,w)–путей назовем расстоянием от v до w, … … а тот (v,w)–путь,

Слайд 47Пути в сетях
Задача о кратчайшем пути между фикси-рованными вершинами формулируется

сле-дующим образом:
В заданной сети G с двумя выделен-ными вершинами s

и t найти кратчай-ший (s,t)–путь.
Пути в сетяхЗадача о кратчайшем пути между фикси-рованными вершинами формулируется сле-дующим образом:В заданной сети G с двумя

Слайд 48Пути в сетях
В этой задаче предполагается отсутствие циклов отрицательной длины

(иначе задача окажется некорректной).

Пути в сетяхВ этой задаче предполагается отсутствие циклов отрицательной длины (иначе задача окажется некорректной).

Слайд 49Пути в сетях
Алгоритм
Форда – Беллмана

Пути в сетяхАлгоритмФорда – Беллмана

Слайд 50Лестер Рэндольф Форд младший (род. 23 сентября 1927)
Американский математик.
В 1956 году

предложил алгоритм построения кратчайшего пути в сетях.

Лестер Рэндольф Форд младший (род. 23 сентября 1927)Американский математик.В 1956 году предложил алгоритм построения кратчайшего пути в

Слайд 51Ричард Беллман (26 августа 1920 – 19 марта 1984)
Американский математик —

специалист по прикладной математике. Окончил Бруклин-ский колледж в 1941 году

(B.A.), универси-тет Висконсин–Мэдисон (M.A.). Работал в подразделении теоретической физики лаборатории в Лос–Аламос, где в 1946 году получил степень PhD. Награжден почетной медалью IEEE (Institute of Electrical and Electronics Engineers) за вклад в развитие теории принятия решений, теории управления и, в особенности, за создание и развития теории динамического програм-мирования. Был действительным членом Американской академии наук и искусств (с 1975 года), и Национальной инженерной академии США (с 1977 года).
Предложил алгоритм построения кратчай-шего пути в сетях в 1958 году.
Ричард Беллман (26 августа 1920 – 19 марта 1984)Американский математик — специалист по прикладной математике. Окончил Бруклин-ский

Слайд 52Пути в сетях Алгоритм Форда – Беллмана
Для описания алгоритма будем использовать

следующие обозначения:
D[v] – массив, в котором будет «накапли-ваться» расстояние от

выделенной верши-ныs до всех остальных вершин графа;
ПРЕДШ[v] – массив, в котором на месте v будет храниться номер вершины – предшест-венницы вершины v в кратчайшем (s,v)–маршруте.
Пути в сетях Алгоритм Форда – БеллманаДля описания алгоритма будем использовать следующие обозначения:D[v] – массив, в котором

Слайд 53Пути в сетях Алгоритм Форда – Беллмана
Для всех вершин v из

V положить
D[v]:=c(s,v),
Если c(s,v)

n-2 раза:
для всех вершин v из V \ {s}
D[v]:=min{D[v],D[w]+c[w,v] | w из V}
ПРЕДШ [v]:=w* (та вершина, которая обеспечила минимум D[v]).
После выполнения этого алгоритма массив D содержит длины кратчайших (s,v)–путей, а по массиву ПРЕДШ[v] можно восстановить сам путь.
Пути в сетях Алгоритм Форда – БеллманаДля всех вершин v из V положить	D[v]:=c(s,v), 	Если c(s,v)

Слайд 54Рассмотрим работу алгоритма Форда – Беллмана на примере следующего связ-ного

ориентированного графа.
Пути в сетях Алгоритм Форда – Беллмана

Рассмотрим работу алгоритма Форда – Беллмана на примере следующего связ-ного ориентированного графа. Пути в сетях Алгоритм Форда

Слайд 55Пути в сетях Алгоритм Форда – Беллмана
Проведем инициализацию.

Пути в сетях Алгоритм Форда – БеллманаПроведем инициализацию.

Слайд 56Пути в сетях Алгоритм Форда – Беллмана
Произведем перерасчет значений D[v] первый

раз.

Пути в сетях Алгоритм Форда – БеллманаПроизведем перерасчет значений D[v] первый раз.

Слайд 57Пути в сетях Алгоритм Форда – Беллмана
Произведем перерасчет значений D[v] второй

раз.

Пути в сетях Алгоритм Форда – БеллманаПроизведем перерасчет значений D[v] второй раз.

Слайд 58Пути в сетях Алгоритм Форда – Беллмана
Произведем перерасчет значений D[v] третий

и последний раз. Работа алгоритма закончена.

Пути в сетях Алгоритм Форда – БеллманаПроизведем перерасчет значений D[v] третий и последний раз. Работа алгоритма закончена.

Слайд 59Случай неотрицательных весов.
Алгоритм Дейкстры
Пути в сетях

Случай неотрицательных весов.Алгоритм ДейкстрыПути в сетях

Слайд 60Пути в сетях Алгоритм Дейкстры
Для описания алгоритма будем использовать следующие обозначения:
D[v]

– метки вершин, в которых будет «накапливаться» расстояние от выделенной

вершины s до вершины v графа;
ПРЕДШ[v] – массив, в котором на месте v будет храниться номер вершины – предшест-венницы вершины v в кратчайшем (s,v)–маршруте;
F – множество еще не просмотренных вершин.
Пути в сетях Алгоритм ДейкстрыДля описания алгоритма будем использовать следующие обозначения:D[v] – метки вершин, в которых будет

Слайд 61Пути в сетях Алгоритм Дейкстры
D[s]:=0; ПРЕДШ[s]:=0; F:=V\{s}
для всех v из F

положим
D[v]:=c[s,v];
ПРЕДШ[v]:=s;
n-1 раз делать
выбрать wF: D[w] = min{ D[u] |

uF }; F:=F\{w};
для всех vF делать
если (D[w]+c[w,v] D[v]:=D[w]+c[w,v];
ПРЕДШ[v]:=w.

инициализация

Пути в сетях Алгоритм ДейкстрыD[s]:=0; ПРЕДШ[s]:=0; F:=V\{s}для всех v из F положим 		D[v]:=c[s,v];		ПРЕДШ[v]:=s;n-1 раз делать	выбрать wF: D[w]

Слайд 62Пути в сетях Алгоритм Дейкстры
Рассмотрим работу алгоритма Дейкстры на примере следующего

графа.
1
2
3
4
5
s
6
1
3
10
4
2
2
3
12
5

Пути в сетях Алгоритм ДейкстрыРассмотрим работу алгоритма Дейкстры на примере следующего графа.12345s613104223125

Слайд 63Пути в сетях Алгоритм Дейкстры
Просмотренные верши-ны будем помечать крас-ным цветом. Проведем

инициализацию. Уже вы-численные расстояния выделяем в таблице.

Пути в сетях Алгоритм ДейкстрыПросмотренные верши-ны будем помечать крас-ным цветом. Проведем инициализацию. Уже вы-численные расстояния выделяем в

Слайд 64Пути в сетях Алгоритм Дейкстры
Выбираем «минималь-ную» вершину из F – вершину

4. Пересчиты-ваем расстояния.
1
2
3
4
5
s
6
1
3
10
4
2
2
3
12
5

Пути в сетях Алгоритм ДейкстрыВыбираем «минималь-ную» вершину из F – вершину 4. Пересчиты-ваем расстояния.12345s613104223125

Слайд 65Пути в сетях Алгоритм Дейкстры
Выбираем «минималь-ную» вершину из F – вершину

2. Пересчиты-ваем расстояния.
1
2
3
4
5
s
6
1
3
10
4
2
2
3
12
5

Пути в сетях Алгоритм ДейкстрыВыбираем «минималь-ную» вершину из F – вершину 2. Пересчиты-ваем расстояния.12345s613104223125

Слайд 66Пути в сетях Алгоритм Дейкстры
Выбираем «минималь-ную» вершину из F – вершину

6. Пересчиты-ваем расстояния.
1
2
3
4
5
s
6
1
3
10
4
2
2
3
12
5

Пути в сетях Алгоритм ДейкстрыВыбираем «минималь-ную» вершину из F – вершину 6. Пересчиты-ваем расстояния.12345s613104223125

Слайд 67Пути в сетях Алгоритм Дейкстры
Выбираем «минималь-ную» вершину из F – вершину

3. Пересчиты-ваем расстояния.
1
2
3
4
5
s
6
1
3
10
4
2
2
3
12
5

Пути в сетях Алгоритм ДейкстрыВыбираем «минималь-ную» вершину из F – вершину 3. Пересчиты-ваем расстояния.12345s613104223125

Слайд 68Пути в сетях Алгоритм Дейкстры
Выбираем «минималь-ную» вершину из F – вершину

5. Пересчиты-ваем расстояния. Крат-чайшие пути построены.
1
2
3
4
5
s
6
1
3
10
4
2
2
3
12
5

Пути в сетях Алгоритм ДейкстрыВыбираем «минималь-ную» вершину из F – вершину 5. Пересчиты-ваем расстояния. Крат-чайшие пути построены.12345s613104223125

Слайд 69Потоки в сетях
Алгоритм Форда – Фалкерсона

Потоки в сетяхАлгоритм Форда – Фалкерсона

Слайд 70Потоки в сетях
В этом разделе будем рассматривать сети G=(V,E,c;s,t), имеющие

единственную вершину с нулевой степенью захода (s) и единственную вершину

с нулевой степенью исхода (t).

Будем считать, что веса c(e) неотрицательны. Числа c(e) будем называть пропускной способностью дуги e.

Потоки в сетяхВ этом разделе будем рассматривать сети G=(V,E,c;s,t), имеющие единственную вершину с нулевой степенью захода (s)

Слайд 71Потоки в сетях
Потоком в сети G называется функция
f : ER,

удовлетворяющая условиям:
0f(e)c(e) для всех eE;
f(v-)=f(v+) для всех vV \ {s,t}
Здесь

, а
Потоки в сетяхПотоком в сети G называется функцияf : ER, удовлетворяющая условиям:0f(e)c(e) для всех eE;f(v-)=f(v+) для всех

Слайд 72Потоки в сетях
Величиной потока называется число , рав-ное

f(s+).
Поток f называется максимальным, если для любого потока f* выполняется

неравенство:
Потоки в сетяхВеличиной потока называется число   , рав-ное f(s+).Поток f называется максимальным, если для любого

Слайд 73Потоки в сетях
Задача о максимальном потоке: в заданной сети найти

поток максимальной величины.

Потоки в сетяхЗадача о максимальном потоке: в заданной сети найти поток максимальной величины.

Слайд 74Потоки в сетях
(s,t)–разрезом (в дальнейшем, просто разре-зом) (Vs,Vt) в сети

G называется пара множеств Vs и Vt, удовлетворяющих условиям:
sVs, tVt

;
Vs  Vt = V;
Vs  Vt = .

Потоки в сетях(s,t)–разрезом (в дальнейшем, просто разре-зом) (Vs,Vt) в сети G называется пара множеств Vs и Vt,

Слайд 75Потоки в сетях
Для разреза (Vs,Vt) через E(VsVt) обозначим множество всех

дуг e, начала которых лежат в Vs, а концы —

в Vt, т.е.

Аналогично,

Потоки в сетяхДля разреза (Vs,Vt) через E(VsVt) обозначим множество всех дуг e, начала которых лежат в Vs,

Слайд 76Потоки в сетях
Ниже на картинке Vs={s,4}, Vt={2,3,5,t}.
На дугах указаны

поток и пропускная способ-ность (в скобках).
E(VsVt)={(s,2), (s,3), (4,t)};
E(VtVs)={(2,4), (3,4)}
s
4
3
2
5
t
1(1)
0,5(1)
0,5(2)
0,5(1)
0(1)
0(1)
0,5(1)

Потоки в сетяхНиже на картинке Vs={s,4}, Vt={2,3,5,t}. На дугах указаны поток и пропускная способ-ность (в скобках).E(VsVt)={(s,2), (s,3),

Слайд 77Потоки в сетях
Для разреза (Vs,Vt)

Потоки в сетяхДля разреза (Vs,Vt)

Слайд 78Потоки в сетях
Ниже на рисунке для Vs={s,4}, Vt={2,3,5,t}

s
4
3
2
5
t
1(1)
0,5(1)
0,5(2)
0,5(1)
0(1)
0(1)
0,5(1)

Потоки в сетяхНиже на рисунке для Vs={s,4}, Vt={2,3,5,t}s4325t1(1)0,5(1)0,5(2)0,5(1)0(1)0(1)0,5(1)

Слайд 79Потоки в сетях
Справедливы следующие утверждения.
Лемма 1. Для любого потока f

и любого разреза (Vs, Vt) справедливо равенство

s
4
3
2
5
t
1(1)
0,5(1)
0,5(2)
0,5(1)
0(1)
0(1)
0,5(1)
На рисунке

Потоки в сетяхСправедливы следующие утверждения.Лемма 1. Для любого потока f и любого разреза (Vs, Vt) справедливо равенствоs4325t1(1)0,5(1)0,5(2)0,5(1)0(1)0(1)0,5(1)На

Слайд 80Потоки в сетях
Для разреза (Vs, Vt) положим

s
4
3
2
5
t
1(1)
0,5(1)
0,5(2)
0,5(1)
0(1)
0(1)
0,5(1)
На рисунке C(Vs,Vt)=3

Потоки в сетяхДля разреза (Vs, Vt) положимs4325t1(1)0,5(1)0,5(2)0,5(1)0(1)0(1)0,5(1)На рисунке C(Vs,Vt)=3

Слайд 81Потоки в сетях
Справедливы следующие утверждения.
Следствие. Для любого потока f и

любого разреза (Vs, Vt) справедливо неравенство

s
4
3
2
5
t
1(1)
0,5(1)
0,5(2)
0,5(1)
0(1)
0(1)
0,5(1)
На рисунке

Потоки в сетяхСправедливы следующие утверждения.Следствие. Для любого потока f и любого разреза (Vs, Vt) справедливо неравенствоs4325t1(1)0,5(1)0,5(2)0,5(1)0(1)0(1)0,5(1)На рисунке

Слайд 82Потоки в сетях
Разрез (Vs Vt) называется минимальным, если для любого

разреза (Vs*,Vt*) справедливо

Потоки в сетяхРазрез (Vs Vt) называется минимальным, если для любого разреза (Vs*,Vt*) справедливо

Слайд 83Потоки в сетях
Лемма 2. Если для некоторого потока f* и

некоторого разреза (Vs*, Vt*) выполняется равенство то поток f* максима-лен, а

разрез (Vs*, Vt*) минимален.


s

4

3

2

5

t

1(1)

1(1)

1(2)

0(1)

1(1)

1(1)

1(1)

На рисунке

Потоки в сетяхЛемма 2. Если для некоторого потока f* и некоторого разреза (Vs*, Vt*) выполняется равенство			то поток

Слайд 84Потоки в сетях
Цепью из v в w в сети G

называется чередую-щаяся последовательность попарно различ-ных вершин и дуг
в которой

дуга er либо выходит из vr и входит в vr+1, либо, наоборот, выходит из vr+1 и входит в vr. В первом случае дуга называется прямой, во втором – обратной.
Потоки в сетяхЦепью из v в w в сети G называется чередую-щаяся последовательность попарно различ-ных вершин и

Слайд 85Потоки в сетях
Пусть P – цепь из v в w.

Для каждой дуги цепи P положим
Пусть
Цепь P из v в

w называется f-дополняющей, если h(P)>0.
Потоки в сетяхПусть P – цепь из v в w. Для каждой дуги цепи P положимПустьЦепь P

Слайд 86Потоки в сетях
На рисунках цепи s-3-4-t и s-3-4-2-5-t являются f-дополняющими.
s
4
3
2
5
t
1(1)
0,5(1)
0,5(2)
0,5(1)
0(1)
0(1)
0,5(1)
s
4
3
2
5
t
1(1)
0,5(1)
0,5(2)
0,5(1)
0(1)
0(1)
0,5(1)

Потоки в сетяхНа рисунках цепи s-3-4-t и s-3-4-2-5-t являются f-дополняющими.s4325t1(1)0,5(1)0,5(2)0,5(1)0(1)0(1)0,5(1)s4325t1(1)0,5(1)0,5(2)0,5(1)0(1)0(1)0,5(1)

Слайд 87Потоки в сетях
Лемма 3. Пусть f – поток в сети

G и P – f-до-полняющая (s,t)-цепь. Тогда в сети G

сущест-вует поток f* такой, что

Поток f* строится так:

Потоки в сетяхЛемма 3. Пусть f – поток в сети G и P – f-до-полняющая (s,t)-цепь. Тогда

Слайд 88Потоки в сетях
Теорема (Форда-Фалкерсона, 1956).
Для потока f в сети G

следующие условия эквивалентны:
поток f максимален;
не существует f-дополняющей цепи из s

в t;
существует разрез (Vs,Vt), для которого
Потоки в сетяхТеорема (Форда-Фалкерсона, 1956).Для потока f в сети G следующие условия эквивалентны:поток f максимален;не существует f-дополняющей

Слайд 89Алгоритм
Форда-Фалкерсона
Потоки в сетях

АлгоритмФорда-ФалкерсонаПотоки в сетях

Слайд 90Дэлберт Рей Фалкерсон (14 августа 1924  10 января 1976)
Американский математик.
В

1956 году вместе с Лестером Рейнолдсом Фордом младшим разработал алгоритм

построения максимального потока в сетях.
Получил степень PhD в универси-тете Висконсин-Мэдисон в 1951.
В 1979 году была учреждена премия Фалкерсона, вручаемая каждые три года за выдающиеся достижения в области дискретной математики совместно матема-тико-программистским обществом и Американским математическим обществом.
Дэлберт Рей Фалкерсон (14 августа 1924  10 января 1976)Американский математик.В 1956 году вместе с Лестером Рейнолдсом

Слайд 91Потоки в сетях Алгоритм Форда-Фалкерсона
Работа алгоритма Форда-Фалкерсона базируется на идее, подсказанной

леммой 3.
положить f(e) = 0 для всех дуг eE;
для

текущего потока f искать f-дополня-ющую (s,t)-цепь;
если такая цепь P построена, то для всех прямых дуг цепи P положить

а для всех обратных и вернуться на шаг 2;

иначе СТОП.

Потоки в сетях Алгоритм Форда-ФалкерсонаРабота алгоритма Форда-Фалкерсона базируется на идее, подсказанной леммой 3. положить f(e) = 0

Слайд 92Потоки в сетях Алгоритм Форда-Фалкерсона
Однако, эффективность работы алгоритма зависит от способа

выбора f-дополняющих цепей. Ниже приведен пример, когда время работы алгоритма

не зависит от числа от размерности задачи, т.е. от m и n.

s

1

2

t

M

M

M

M

1

На дугах указаны их пропускные способнос-ти. Здесь M – достаточ-но большое целое чис-ло.

Потоки в сетях Алгоритм Форда-ФалкерсонаОднако, эффективность работы алгоритма зависит от способа выбора f-дополняющих цепей. Ниже приведен пример,

Слайд 93Потоки в сетях Алгоритм Форда-Фалкерсона
Действительно, положим для всех дуг f (e)

= 0.
Построим f-дополняющую (s,t)- цепь P: s-1-2-t.
Для этой

цепи h(P) = 1. Модифицируем поток по правилам из леммы 3.

s

1

2

t

M

M(1)

M(1)

M

1(1)

На дугах в скобках ука-зана новая величина по-тока (после модифика-ции вдоль цепи P.

Потоки в сетях Алгоритм Форда-ФалкерсонаДействительно, положим для всех дуг f (e) = 0. Построим f-дополняющую (s,t)- цепь

Слайд 94Потоки в сетях Алгоритм Форда-Фалкерсона
На следующем шаге построим f-дополняющую (s,t)-цепь P:

s-2-1-t.
Для этой цепи h(P) = 1. Модифицируем поток по

правилам из леммы 3.

s

1

2

t

M(1)

M(1)

M(1)

M(1)

1(0)

На дугах в скобках ука-зана новая величина по-тока (после модифика-ции вдоль цепи P.

Потоки в сетях Алгоритм Форда-ФалкерсонаНа следующем шаге построим f-дополняющую (s,t)-цепь P: s-2-1-t. Для этой цепи h(P) =

Слайд 95Потоки в сетях Алгоритм Форда-Фалкерсона
На следующем шаге опять построим f-дополня-ющую (s,t)-цепь

P: s-1-2-t.
Для этой цепи h(P) = 1. Модифицируем поток

по правилам из леммы 3.

s

1

2

t

M(1)

M(2)

M(2)

M(1)

1(1)

На дугах в скобках ука-зана новая величина по-тока (после модифика-ции вдоль цепи P.

Потоки в сетях Алгоритм Форда-ФалкерсонаНа следующем шаге опять построим f-дополня-ющую (s,t)-цепь P: s-1-2-t. Для этой цепи h(P)

Слайд 96Потоки в сетях Алгоритм Форда-Фалкерсона
Далее на каждом нечетном шаге выбираем цепь

s-1-2-t, а на каждом четном шаге – цепь s-2-1-t. Каждый

раз поток увеличивается на единицу. Максимальный поток в этой сети равен 2M. Следовательно понадобится 2M итераций, т.е. их число не зависит от размерности задачи.
Потоки в сетях Алгоритм Форда-ФалкерсонаДалее на каждом нечетном шаге выбираем цепь s-1-2-t, а на каждом четном шаге

Слайд 97Потоки в сетях Алгоритм Форда-Фалкерсона
На очередном шаге алгоритма следует отыскивать кратчайшие

по числу дуг f-дополняющие (s,t)- цепи!
Они могут быть найдены,

например, с помощью поиска в ширину.
Потоки в сетях Алгоритм Форда-ФалкерсонаНа очередном шаге алгоритма следует отыскивать кратчайшие по числу дуг f-дополняющие (s,t)- цепи!

Слайд 98Потоки в сетях Алгоритм Форда-Фалкерсона
Отметим важное свойство:
если пропускные способности всех дуг

являются целочисленными, то как макси-мальный поток, так и все промежуточные

значения потока также являются цело-численными.
Потоки в сетях Алгоритм Форда-ФалкерсонаОтметим важное свойство:если пропускные способности всех дуг являются целочисленными, то как макси-мальный поток,

Слайд 99Потоки в сетях Алгоритм Форда-Фалкерсона
Разберем пример. Пусть задана сеть (см. рисунок).

На дугах указаны их пропускные способности.
s
4
3
2
5
t
1
2
2
1
2
2
1

Потоки в сетях Алгоритм Форда-ФалкерсонаРазберем пример. Пусть задана сеть (см. рисунок). На дугах указаны их пропускные способности.s4325t1221221

Слайд 100Потоки в сетях Алгоритм Форда-Фалкерсона
Положим величину потока на всех дугах равной

нулю (текущую величину потока будем записы-вать в скобках).
s
4
3
2
5
t
1(0)
2(0)
2(0)
1(0)
2(0)
2(0)
1(0)

Потоки в сетях Алгоритм Форда-ФалкерсонаПоложим величину потока на всех дугах равной нулю (текущую величину потока будем записы-вать

Слайд 101Потоки в сетях Алгоритм Форда-Фалкерсона
Построим кратчайшую по числу дуг f-дополня-ющую (s,t)-цепь

P: s-2-4-t. Для этой цепи h(P)=1.
s
4
3
2
5
t
1(0)
2(0)
2(0)
1(0)
2(0)
2(0)
1(0)

Потоки в сетях Алгоритм Форда-ФалкерсонаПостроим кратчайшую по числу дуг f-дополня-ющую (s,t)-цепь P: s-2-4-t. Для этой цепи h(P)=1.s4325t1(0)2(0)2(0)1(0)2(0)2(0)1(0)

Слайд 102Потоки в сетях Алгоритм Форда-Фалкерсона
Скорректируем поток вдоль найденной цепи.
s
4
3
2
5
t
1(1)
2(0)
2(0)
1(1)
2(0)
2(0)
1(1)

Потоки в сетях Алгоритм Форда-ФалкерсонаСкорректируем поток вдоль найденной цепи.s4325t1(1)2(0)2(0)1(1)2(0)2(0)1(1)

Слайд 103Потоки в сетях Алгоритм Форда-Фалкерсона
Построим кратчайшую по числу дуг f-дополня-ющую (s,t)-цепь

P: s-3-4-2-5-t. Для этой цепи h(P)=1. Дуга 4-2 ― обратная.
s
4
3
2
5
t
1(1)
2(0)
2(0)
1(1)
2(0)
2(0)
1(1)

Потоки в сетях Алгоритм Форда-ФалкерсонаПостроим кратчайшую по числу дуг f-дополня-ющую (s,t)-цепь P: s-3-4-2-5-t. Для этой цепи h(P)=1.

Слайд 104Потоки в сетях Алгоритм Форда-Фалкерсона
Скорректируем поток вдоль найденной цепи.
s
4
3
2
5
t
1(1)
2(1)
2(1)
1(0)
2(1)
2(1)
1(1)

Потоки в сетях Алгоритм Форда-ФалкерсонаСкорректируем поток вдоль найденной цепи.s4325t1(1)2(1)2(1)1(0)2(1)2(1)1(1)

Слайд 105Потоки в сетях Алгоритм Форда-Фалкерсона
Других f-дополняющих (s,t)-цепей нет. Значит, поток максимальный.
s
4
3
2
5
t
1(1)
2(1)
2(1)
1(0)
2(1)
2(1)
1(1)

Потоки в сетях Алгоритм Форда-ФалкерсонаДругих f-дополняющих (s,t)-цепей нет. Значит, поток максимальный.s4325t1(1)2(1)2(1)1(0)2(1)2(1)1(1)

Слайд 106Потоки в сетях Алгоритм Форда-Фалкерсона
Минимальный разрез строится так: Vs состоит из

концов всех f-дополняющих (s,v)-цепей. В данном случае Vs={s,3,4}, Vt={2,5,t}. Из

Vs в Vt ведут дуги (s,2) и (4,t). Значит, с(Vs,Vt)=1+1=2.

s

4

3

2

5

t

1(1)

2(1)

2(1)

1(0)

2(1)

2(1)

1(1)

Потоки в сетях Алгоритм Форда-ФалкерсонаМинимальный разрез строится так: Vs состоит из концов всех f-дополняющих (s,v)-цепей. В данном

Слайд 107Потоки в сетях Алгоритм Форда-Фалкерсона
Задача. В стране имеется сеть железных дорог,

соединяющих M городов. Для двух заданных горо-дов A и B

требуется определить максимально воз-можное число поездов, которое можно пустить из A в B. Из-за конструктивных особенностей поездов и железных дорог никакие два поезда не могут про-езжать через один и от же город, исключая, конеч-но, города A и B. Железные дороги заданы парой городов, которые они соединяют. Проезд по ним возможен в любом направлении. Предложите ма-тематическую модель этой задачи как задачи опти-мизации на графе и опишите неформально алго-ритм ее решения.
Потоки в сетях Алгоритм Форда-ФалкерсонаЗадача. В стране имеется сеть железных дорог, соединяющих M городов. Для двух заданных

Слайд 108Паросочетания в двудольных графах
Алгоритм Куна

Паросочетания в двудольных графахАлгоритм Куна

Слайд 109Паросочетания в двудольных графах
Паросочетанием в графе называется произволь-ное множество его

ребер такое, что каждая вер-шина графа инцидентна не более, чем

одному реб-ру из этого множества.

Граф G=(V,E) называется двудольным, если мно-жество его вершин V можно разбить на непере-секающиеся множества X и Y такие, что каждое ребро eE имеет вид e=xy, где xX, yY.

Паросочетания в двудольных графахПаросочетанием в графе называется произволь-ное множество его ребер такое, что каждая вер-шина графа инцидентна

Слайд 110Паросочетания в двудольных графах
Пусть M – паросочетание в графе G=(X,Y,E).

Говорят, что M сочетает x с y и y с

x, если xyM.
Вершины, не принадлежащие ни одному ребру из паросочетания, называют свободными относи-тельно M или просто свободными, а все прочие – насыщенными в M или просто насыщенными.
Удобно также все ребра, входящие в паросо-четание M называть M-темными или просто темными, а все прочие – M-светлыми или просто светлыми.
Паросочетания в двудольных графахПусть M – паросочетание в графе G=(X,Y,E). Говорят, что M сочетает x с y

Слайд 111Паросочетания в двудольных графах
Паросочетание, содержащее наибольшее число ребер, называется наибольшим.
Паросочетание,

не содержащееся ни в каком дру-гом паросочетании, называется максимальным (по

включению).

Любое наибольшее паросочетание является ма-ксимальным. Обратное неверно.

Паросочетание, насыщающее все вершины дву-дольного графа, называется полным.

Паросочетания в двудольных графахПаросочетание, содержащее наибольшее число ребер, называется наибольшим.Паросочетание, не содержащееся ни в каком дру-гом паросочетании,

Слайд 112Паросочетания в двудольных графах
Пусть M – паросочетание в графе G.

M-чередующейся цепью называется такая последо-вательность вершин и ребер вида x0,

x0y1, y1, y1x2, x2, …, xk, xkyk+1, yk+1, где k > 0, что все вершины этой цепи различны, x0 и yk+1 – свободные, а все остальные вершины насыщенные в паросочетании M, причем каждое второе ребро принадлежит M (т.е. ребра вида yixi+1, i=1,…,k-1 входят в M), а остальные ребра в M не входят.
Паросочетания в двудольных графахПусть M – паросочетание в графе G. M-чередующейся цепью называется такая последо-вательность вершин и

Слайд 113Паросочетания в двудольных графах
Рассмотрим пример. Пусть задан двудольный граф G

и текущее паросочетание M.
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
Граф G
Текущее
паросочетание M
1
2
3
4
1
2
3
4
1-1-2-2-3-3-4-4
M-чередующаяся цепь

Паросочетания в двудольных графахРассмотрим пример. Пусть задан двудольный граф G и текущее паросочетание M.1234123412341234Граф GТекущеепаросочетание M123412341-1-2-2-3-3-4-4M-чередующаяся цепь

Слайд 114Паросочетания в двудольных графах
Пусть M – текущее паросочетание и P

– построенная M-чередующаяся цепь. Операция MP определяется следующим образом: все

ребра из P, входившие в M из паросочетания исключаются, а все ребра из P, не входившие в M, в паросочетание добавляются. Другими словами,

В цепи P происходит «переключение цветов». Светлые ребра становятся темными и, наоборот, темные – светлыми.

Паросочетания в двудольных графахПусть M – текущее паросочетание и P – построенная M-чередующаяся цепь. Операция MP определяется

Слайд 115Паросочетания в двудольных графах
В нашем примере «переключение цветов» выглядит так

(ребра, входящие в паросочетание – красного цвета):
1
2
3
4
1
2
3
4
Текущее
паросочетание M
1
2
3
4
1
2
3
4
M-чередующаяся цепь
1
2
3
4
1
2
3
4
Переключение
цветов

Паросочетания в двудольных графахВ нашем примере «переключение цветов» выглядит так (ребра, входящие в паросочетание – красного цвета):12341234Текущеепаросочетание

Слайд 116Алгоритм Куна
Паросочетания в двудольных графах

Алгоритм КунаПаросочетания в двудольных графах

Слайд 117Харольд Уиллиам Кун
(род. в 1925 году)
Американский математик. Специалист в области

теории игр. Профессор Принстонского университета. Автор Венгер-ского алгоритма (1955 год)

и соавтор теоремы Куна-Так-кера о необходимых условиях оптимальности в задаче мате-матического программирова-ния. В 1980 году удостоен приза Джона фон Неймана.
Харольд Уиллиам Кун(род. в 1925 году)Американский математик. Специалист в области теории игр. Профессор Принстонского университета. Автор Венгер-ского

Слайд 118Неформально алгоритм может быть описан следующим образом.
Паросочетания в двудольных графах.

Алгоритм Куна
пустое паросочетание объявить текущим паросо-четанием M;
если все вершины из

X насыщены в M, то СТОП (M – полное паросочетание);
иначе выбрать произвольную свободную вершину xX и искать M-чередующуюся цепь, начинающуюся в x;
если такая цепь P найдена, то положить M:=MP и вернуться на шаг 2;
иначе СТОП (полного паросочетания в заданном графе не существует).
Неформально алгоритм может быть описан следующим образом.Паросочетания в двудольных графах. Алгоритм Кунапустое паросочетание объявить текущим паросо-четанием M;если

Слайд 119Паросочетания в двудольных графах. Алгоритм Куна
Рассмотрим работу алгоритма Куна на

нашем примере. Пусть дан двудольный граф G
1
2
3
4
1
2
3
4
Граф G
Объявляем пустое паросочетание

текущим:
M = 
Паросочетания в двудольных графах. Алгоритм КунаРассмотрим работу алгоритма Куна на нашем примере. Пусть дан двудольный граф G12341234Граф

Слайд 120Паросочетания в двудольных графах. Алгоритм Куна
Будем просматривать вершины из доли

X в ес-тественном порядке. Находим первую M-чере-дующуюся цепь P: 1

– 1.

1

2

3

4

1

2

3

4

Граф G

Выполним операцию MP (переключаем цвета).

Новое текущее паросоче-тание
M={1-1}.

Паросочетания в двудольных графах. Алгоритм КунаБудем просматривать вершины из доли X в ес-тественном порядке. Находим первую M-чере-дующуюся

Слайд 121Паросочетания в двудольных графах. Алгоритм Куна
Находим M-чередующуюся цепь P:
2

– 1 – 1 – 2.
1
2
3
4
1
2
3
4
Граф G
Выполним операцию MP (переключаем

цвета).

Новое текущее паросоче-тание
M={2-1,1-2}.

Паросочетания в двудольных графах. Алгоритм КунаНаходим M-чередующуюся цепь P: 2 – 1 – 1 – 2.12341234Граф GВыполним

Слайд 122Паросочетания в двудольных графах. Алгоритм Куна
Находим M-чередующуюся цепь P:
3 –

2 – 1 – 1 – 2 – 4.
1
2
3
4
1
2
3
4
Граф G
Выполним

операцию MP (переключаем цвета).

Новое текущее паросоче-тание
M={1-1, 2-4, 3-2}.

Паросочетания в двудольных графах. Алгоритм КунаНаходим M-чередующуюся цепь P:3 – 2 – 1 – 1 – 2

Слайд 123Паросочетания в двудольных графах. Алгоритм Куна
Находим M-чередующуюся цепь P:
4 –

4 – 2 – 1 – 1 – 2 –

3 – 3.

1

2

3

4

1

2

3

4

Граф G

Выполним операцию MP (переключаем цвета).

Новое текущее паросоче-тание
M={1-2, 2-1, 3-3, 4-4}.

Паросочетания в двудольных графах. Алгоритм КунаНаходим M-чередующуюся цепь P:4 – 4 – 2 – 1 – 1

Слайд 124Паросочетания в двудольных графах. Алгоритм Куна
Ненасыщенных вершин не осталось. Алгоритм

построил полное паросочетание.
1
2
3
4
1
2
3
4
Граф G

Паросочетания в двудольных графах. Алгоритм КунаНенасыщенных вершин не осталось. Алгоритм построил полное паросочетание.12341234Граф G

Слайд 125Задача о назначениях
Венгерский алгоритм

Задача о назначенияхВенгерский алгоритм

Слайд 126Задача о назначениях
Пусть G=(X,Y,E,c) – взвешенный двудольный граф, |X|=|Y|=n.
Весом паросочетания

M называется сумма весов входящих в него ребер.
Задача о назначениях:

в заданном взвешен-ном двудольном графе найти полное паросо-четание минимального веса (оптимальное паросочетание).
Задача о назначенияхПусть G=(X,Y,E,c) – взвешенный двудольный граф, |X|=|Y|=n.Весом паросочетания M называется сумма весов входящих в него

Слайд 127Задача о назначениях
Будем предполагать, что G – полный двудоль-ный граф

(т.е. любая пара вершин xX, yY соединена ребром). Это не

ограничивает общности, т.к. любую пару несмежных вершин можжно соединить ребром очень большого веса (например, большего суммы весов всех оставшихся ребер).
Задача о назначенияхБудем предполагать, что G – полный двудоль-ный граф (т.е. любая пара вершин xX, yY соединена

Слайд 128Венгерский алгоритм
Задача о назначениях

Венгерский алгоритмЗадача о назначениях

Слайд 129Задача о назначениях Венгерский алгоритм
Идея работы венгерского алгоритма основана на нескольких

утверждениях.
Лемма 1. Если веса всех ребер графа, инци-дентных какой-либо вершине,

увеличить (уменьшить) на одно и то же число, то всякое оптимальное паросочетание в графе с новыми весами является оптимальным и в графе с исходными весами.
Задача о назначениях Венгерский алгоритмИдея работы венгерского алгоритма основана на нескольких утверждениях.Лемма 1. Если веса всех ребер

Слайд 130Задача о назначениях Венгерский алгоритм
Эта лемма позволяет рассматривать только графы с

неотрицательными весами. Более того, каждой вершине этого графа оказывается инцидентна

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

Слайд 131Задача о назначениях Венгерский алгоритм
Пусть X’X, Y’Y и d. Будем говорить,

что к графу G=(X,Y,E,c) применена операция (X’,d,Y’), если сначала из

веса каждого ребра, инцидентного вершине из X’, вычтено число d, а затем к весу каждого ребра, инцидентного вершине из Y’, прибавлено число d.
Задача о назначениях Венгерский алгоритмПусть X’X, Y’Y и d. Будем говорить, что к графу G=(X,Y,E,c) применена операция

Слайд 132Задача о назначениях Венгерский алгоритм
Справедлива следующая
Лемма 2. Пусть G=(X,Y,E,c) – двудольный

взвешенный граф с неотрицательными весами, X’X, Y’Y и d=min{c(x,y)|xX’, yY\Y’}.

Если к графу G применить операцию (X’,d,Y’), то

веса всех ребер G останутся неотрицатель-ными;
веса ребер вида xy, где xX’, yY’ или xX\X’, yY\Y’ не изменятся.

Задача о назначениях Венгерский алгоритмСправедлива следующаяЛемма 2. Пусть G=(X,Y,E,c) – двудольный взвешенный граф с неотрицательными весами, X’X,

Слайд 133Задача о назначениях Венгерский алгоритм
Схема применения операции из леммы 2.

Задача о назначениях Венгерский алгоритмСхема применения операции из леммы 2.

Слайд 134Задача о назначениях Венгерский алгоритм
Следующая лемма очевидна.
Лемма 3. Если веса всех

ребер графа неотри-цательны, и некоторое полное паросочетание состоит из ребер

нулевого веса, то оно явля-ется оптимальным.
Задача о назначениях Венгерский алгоритмСледующая лемма очевидна.Лемма 3. Если веса всех ребер графа неотри-цательны, и некоторое полное

Слайд 135Задача о назначениях Венгерский алгоритм
В 1955 году Харольд Уиллиам Кун предложил

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

Задача о назначениях Венгерский алгоритмВ 1955 году Харольд Уиллиам Кун предложил алгоритм решения задачи о назначениях, кото-рый

Слайд 136Задача о назначениях Венгерский алгоритм
Преобразовать веса ребер так, чтобы веса всех

ребер стали неотрицательными и каждой вершине стало инцидентно хотя бы

одно ребро нулевого веса;
пустое паросочетание объявить текущим паросочетанием M;
если в графе все вершины насыщены относительно текущего паросочетания, то СТОП (текущее паросочетание оптимально);
иначе выбрать свободную вершину xX и искать M-чередующуюся цепь, начинающуюся в x, из ребер нулевого веса;
если такая цепь построена, то положить M:=MP и вернуться на шаг 3;
Задача о назначениях Венгерский алгоритмПреобразовать веса ребер так, чтобы веса всех ребер стали неотрицательными и каждой вершине

Слайд 137Задача о назначениях Венгерский алгоритм
иначе для множества вершин X’X, Y’Y, помеченных

в ходе поиска (это вершины венгерского дерева), положить величину d

равной d=min{c(x,y)|xX’, yY\Y’} и применить к графу операцию (X’,d,Y’);
из тех вершин xX’, которым стало инцидентно хотя бы одно ребро нулевого веса, возобновить поиск M-чередующейся цепи по ребрам нулевого веса; если такая цепь P будет найдена, то положить M:=MP и вернуться на шаг 3; иначе вернуться на шаг 6 (множества X’ и Y’ при этом увеличатся).
Задача о назначениях Венгерский алгоритминаче для множества вершин X’X, Y’Y, помеченных в ходе поиска (это вершины венгерского

Слайд 138Задача о назначениях Венгерский алгоритм
Рассмотрим пример работы венгерского алгоритма.
Пусть двудольный граф

задан своей матрицей весов:
На месте wij этой матрицы стоит вес

ребра, соединяющего верши-ны xi и yj.
Задача о назначениях Венгерский алгоритмРассмотрим пример работы венгерского алгоритма.Пусть двудольный граф задан своей матрицей весов:На месте wij

Слайд 139Задача о назначениях Венгерский алгоритм
Преобразуем веса так, чтобы каждой вершине оказа-лось

инцидентно ребро нулевого веса. Для этого из каждой строки матрицы

вычтем минимальный эле-мент строки.

Видим, что вершине y2 не инци-дентна ни одно ребро нулевого веса. Вычитаем из всех элемен-тов второго столбца его мини-мальный элемент.

Задача о назначениях Венгерский алгоритмПреобразуем веса так, чтобы каждой вершине оказа-лось инцидентно ребро нулевого веса. Для этого

Слайд 140Задача о назначениях Венгерский алгоритм
Мы добились того, что каждой вершине инцидентно

как минимум одно ребро нулевого веса, и веса всех ребер

неотрицательны.
Задача о назначениях Венгерский алгоритмМы добились того, что каждой вершине инцидентно как минимум одно ребро нулевого веса,

Слайд 141Задача о назначениях Венгерский алгоритм
На рисунке будут отмечаться только ребра нулевого

веса.
x1
x2
x3
x4
y1
y2
y3
y4

Задача о назначениях Венгерский алгоритмНа рисунке будут отмечаться только ребра нулевого веса.x1x2x3x4y1y2y3y4

Слайд 142Задача о назначениях Венгерский алгоритм
Начинаем поиск M-чередующейся цепи по ребрам нулевого

веса. Такая цепь P находится сразу:
x1 – x2 .
x1
x2
x3
x4
y1
y2
y3
y4

Задача о назначениях Венгерский алгоритмНачинаем поиск M-чередующейся цепи по ребрам нулевого веса. Такая цепь P находится сразу:

Слайд 143Задача о назначениях Венгерский алгоритм
Выполняем преобразование M:=MP.
Текущее паросочетание M={x1-y1}.
x1
x2
x3
x4
y1
y2
y3
y4

Задача о назначениях Венгерский алгоритмВыполняем преобразование M:=MP.Текущее паросочетание M={x1-y1}.x1x2x3x4y1y2y3y4

Слайд 144Задача о назначениях Венгерский алгоритм
Ищем M-чередующуюся цепь из вершины x2 по

ребрам нулевого веса.
x1
x2
x3
x4
y1
y2
y3
y4

Задача о назначениях Венгерский алгоритмИщем M-чередующуюся цепь из вершины x2 по ребрам нулевого веса.x1x2x3x4y1y2y3y4

Слайд 145Задача о назначениях Венгерский алгоритм
Выполняем операцию M:=MP. Текущее паросоче-тание M={x1-y2, x2-y1}.

x1
x2
x3
x4
y1
y2
y3
y4

Задача о назначениях Венгерский алгоритмВыполняем операцию M:=MP. Текущее паросоче-тание M={x1-y2, x2-y1}.x1x2x3x4y1y2y3y4

Слайд 146Задача о назначениях Венгерский алгоритм
Ищем очередную M-чередующуюся цепь по ребрам нулевого

веса из свободной вершины x3. Поиск неудачен. При этом проходим

цепи x3 – y1 – x2 и x3 – y2 – x1 – y1 – x2.

x1

x2

x3

x4

y1

y2

y3

y4

Задача о назначениях Венгерский алгоритмИщем очередную M-чередующуюся цепь по ребрам нулевого веса из свободной вершины x3. Поиск

Слайд 147Задача о назначениях Венгерский алгоритм
x1
x2
x3
x4
y1
y2
y3
y4
В ходе поиска были помечены вершины:
X’={x1,x2,x3};
Y’={y1,y2}.

Задача о назначениях Венгерский алгоритмx1x2x3x4y1y2y3y4В ходе поиска были помечены вершины:X’={x1,x2,x3};Y’={y1,y2}.

Слайд 148Задача о назначениях Венгерский алгоритм
x1
x2
x3
x4
y1
y2
y3
y4
Веса, соответствующие помеченным вершинам расположены в первых

трех строках и первых двух столбцах матрицы весов.

Задача о назначениях Венгерский алгоритмx1x2x3x4y1y2y3y4Веса, соответствующие помеченным вершинам расположены в первых трех строках и первых двух столбцах

Слайд 149Задача о назначениях Венгерский алгоритм
x1
x2
x3
x4
y1
y2
y3
y4
Выполняем операцию (X’,d,Y’). В качестве d выбира-ется

минимальный элемент матрицы среди тех, ко-торые попали в первые три

строки и последние два столбца.

Таким образом, d=1.

Задача о назначениях Венгерский алгоритмx1x2x3x4y1y2y3y4Выполняем операцию (X’,d,Y’). В качестве d выбира-ется минимальный элемент матрицы среди тех, ко-торые

Слайд 150Задача о назначениях Венгерский алгоритм
В результате применения операции (X’,d,Y’) матрица весов

преобразуется к следующему виду:
Множество ребер нулевого ве-са пополнилось. Появилось ребро

x3-y3.
Задача о назначениях Венгерский алгоритмВ результате применения операции (X’,d,Y’) матрица весов преобразуется к следующему виду:Множество ребер нулевого

Слайд 151Задача о назначениях Венгерский алгоритм
Отметим вновь появившееся ребро нулевого веса на

рисунке.
x1
x2
x3
x4
y1
y2
y3
y4

Задача о назначениях Венгерский алгоритмОтметим вновь появившееся ребро нулевого веса на рисунке.x1x2x3x4y1y2y3y4

Слайд 152Задача о назначениях Венгерский алгоритм
Теперь возобновленный поиск M-чередующейся це-пи из вершины

x3 дает результат. P: x3 – y3.
x1
x2
x3
x4
y1
y2
y3
y4
Варианты неудачного поиска цепей:
x3

– y1 – x2 и
x3 – y2 – x1 – – y1 – x2
Задача о назначениях Венгерский алгоритмТеперь возобновленный поиск M-чередующейся це-пи из вершины x3 дает результат. P: x3 –

Слайд 153Задача о назначениях Венгерский алгоритм
Преобразуем текущее паросочетание M:=MP.
Текущее паросочетание M={x1-y2, x2-y1,

x3-y3}.
x1
x2
x3
x4
y1
y2
y3
y4

Задача о назначениях Венгерский алгоритмПреобразуем текущее паросочетание M:=MP.Текущее паросочетание M={x1-y2, x2-y1, x3-y3}.x1x2x3x4y1y2y3y4

Слайд 154Задача о назначениях Венгерский алгоритм
Осуществляем поиск M-чередующейся цепи из вершины x4.

Находится цепь P: x4 – y4.
x1
x2
x3
x4
y1
y2
y3
y4
Неудачный поиск:
x4 – y3 –

x3 – y1 – x2
x4 – y3 – x3 – y2 – x1 – y1 – x2
Задача о назначениях Венгерский алгоритмОсуществляем поиск M-чередующейся цепи из вершины x4. Находится цепь P: x4 – y4.x1x2x3x4y1y2y3y4Неудачный

Слайд 155Задача о назначениях Венгерский алгоритм
Все вершины насыщены. Следовательно, перед на-ми полное

паросочетание наименьшего веса.
x1
x2
x3
x4
y1
y2
y3
y4
Его вес равен 12.

Задача о назначениях Венгерский алгоритмВсе вершины насыщены. Следовательно, перед на-ми полное паросочетание наименьшего веса.x1x2x3x4y1y2y3y4Его вес равен 12.

Слайд 156Задача о назначениях Венгерский алгоритм
Рассмотрим задачу. Требуется выполнить n видов работ,

для выполнения которых имеется n видов станков . Каждая работа

должна быть выполнена на каком-нибудь одном станке, и на каждом станке можно выполнить не более одной работы. Для каждой пары (i-ая работа – j-ый станок) известно время выполнения cij.Требуется распределить работы по станкам так, чтобы все работы были выполнены, и суммарное время выполнения работ было минимальным.
Предложите математическую модель этой задачи как задачи оптимизации на графе и опишите в неформализованном виде алгоритм ее решения.
Задача о назначениях Венгерский алгоритмРассмотрим задачу. Требуется выполнить n видов работ, для выполнения которых имеется n видов

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика