- •Виды графов
- •Изоморфизм
- •Матричное задание графа
- •Свойства матрицы смежности
- •Операции над графами
- •Достижимость и связность
- •Матрицы достижимости и контрдостижимости
- •Нахождение сильных компонент
- •Конденсация графа
- •Базы и антибазы
- •Построение компонент связности в неориентированном графе
- •Построение компонент связности в ориентированном графе
- •Система независимых циклов
- •Дерево. Остов граф
- •Процесс восстановления дерева по набору
- •Алгоритм построения произвольного остова
- •Определение минимального остова
- •Алгоритм построения системы независимых циклов графа
- •Определение кратчайшего пути на графе методом Дейкстры
- •Модификация Форда
- •Алгоритмы поиска всех кратчайших путей
- •Алгоритм Флойда
- •Алгоритм Флойда
- •Алгоритм Данцига
- •Алгоритм Данцига
- •Раскраска
- •Метод построения функции Гранди на графе
- •Свойства хроматического числа
- •Гамильтоновы пути, контуры и задача Коммивояжера
- •Метод Роберта и Флореса (перебор-метод для орграфов)
- •Применение метода ветвей и границ к решению задачи Коммивояжера.
- •Потоковые алгоритмы
- •Алгоритм поиска увеличивающего пути
- •Алгоритм поиска максимального потока
- •Алгоритм Форда и Фалкерсона
- •Модификация алгоритма поиска максимального потока при нескольких источниках и стоках
- •Алгоритм поиска потока минимальной стоимости
- •Алгоритм поиска потока минимальной стоимости
- •Алгоритмы построения покрывающих деревьев
- •Алгоритм построения покрывающего дерева славик?!! последняя :-(
Алгоритм поиска потока минимальной стоимости
(Задание начальных условий)
Каждой дуге
принять значение
.
Кроме того, положить
(р(х) – вершинные числа).
(Выявление дуг, в которых допускается изменение потока)
Сформировать множество I,
включив в него дуги
,
для которых выполняется
и
<
.
Сформировать множество R, включив в него дуги , для которых выполняется и 0< .
Сформировать множество N, включив в него дуги, не вошедшие ни в I, ни в R.
На следующих этапах выполнения алгоритма изменение потока будет допускаться только в дугах, которые принадлежать I или R. Следовательно, потоки могут изменяться только в тех дугах, для которых выполняется условие .
(Изменение потока)
Применить алгоритм поиска максимального потока к исходу сети при найденном на шаге 2 распределении дуг на множества I, R, N.
Выполнение данного алгоритма заканчивается либо тогда, когда оказывается, что из вершины s в вершину t уже передано единиц потока, либо тогда, когда выясняется, что при текущем разбиении дуг на множества I, R, N полученный поток максимален.
В первом случае – закончить выполнение алгоритма. Полученный поток заданной суммарной величины является потоком минимальной стоимости.
Во втором - случае проверить, не является ли полученный поток максимальным в исходном графе. Это осуществляется путём использования разреза, определяемого по окончании процедуры окрашивания в соответствии с алгоритмом поиска увеличивающего пути.
Поток является максимальным только в том случае, когда указанный разрез является насыщенным, в противном случае перейти к шагу 4.
(Изменение вершинных чисел)
Исходной информацией для выполнения данного шага являются результаты окрашивания вершин в алгоритме поиска увеличивающего пути.
Увеличить на +1 вершинные числа р(х) для всех неокрашенных вершин. При этом обязательно увеличится число
,
поскольку вершина t
является неокрашенной. Затем перейти
к шагу 2.
Замечание:
Множество дуг, исключение которых из графа увеличивает число его компонент, называется разрезом. Разрез, который не содержит в качестве собственного подмножества никакого другого разреза, называется простым разрезом.
Пример простого разреза:
Множество дуг
Множество дуг
образует разрез, потому что образуется
три компоненты связности.
также образует разрез (получается две
компоненты связности), но этот разрез
называется простым.
Рис. 64
Разрез называется насыщенным, если он содержит хотя бы одну дугу, поток по которой равен пропускной способности этой дуги.
Пример: Найти поток минимальной стоимости из вершины s в вершину t в графе
Первое число над дугой определяет
стоимость передачи единицы потока
Второе число над дугой означает
пропускную способность этой дуги.
Рис. 65
Полагаем вершинные цифры равными 0.
Все вершины не окрашены, за исключением вершины S.
Поток каждой дуги .
Сформируем множества I, R
Все дуги относятся к множеству N, поэтому применять алгоритм поиска максимального потока нельзя, переходим к шагу 3.
Поток в графе является максимальным.
Переходим к шагу 4.
Увеличим вершинные числа на 1 для всех неокрашенных вершин:
Переходим на шаг 2.
Формируем множества I, R
Получили:
Переходим к шагу 3
Применим алгоритм поиска максимального потока (найти увеличивающий путь)
Окрашиваем вершину а и дугу (s, a). Все остальные вершины и дуги окрашивать не можем, так как они принадлежать множеству N.
Переходим к шагу 4
Увеличим на 1 все вершинные числа для неокрашенных вершин.
Переходим к шагу 2
Получили:
Переходим к шагу 3
Применим алгоритм поиска максимального потока (найти увеличивающий путь)
Окрашиваем вершину b и дугу (a, b).
Переходим на шаг 4
Увеличим на 1 все вершинные числа для неокрашенных вершин.
Переходим к шагу 2
Получили:
Увеличиваем поток на 2 единицы
Переходим к шагу 1
Окрашиваем вершину s. Вершинные числа
и
НУЖНО ДОДЕЛАТЬ!!!
