КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритм Форда – построения максимального потока в сети.
Начальный. Выбираем некоторый поток в сети G (V,U) (например xi j= 0 для всех дуг (i,j)Î U). Общая итерация 1. Применяем алгоритм нахождения увеличивающего пути из источника s в сток t. Если такого пути нет, то построенный поток является максимальным. Алгоритм заканчивает работу. Если увеличивающий путь найден, то переходим к 2. 2. В найденном увеличивающем пути обозначим через P+ множество прямых, а P - - множество обратных дуг пути и вычисляем величину 1 = (dij – xij) > 0 и 2 = . Полагаем q = min ( 1, 2). Увеличиваем поток вдоль пути P на величину , полагая
xij’ = xij+ , если (i,j) Î P+ xij’ = xij – , если (i, j) Î P- (23) xij’ = xij для остальных дуг пути.
Переходим к 1. Рассмотрим пример. На рис.1. изображена сеть. Первое число в скобках указывает пропускную способность дуги, второе – дуговой поток.
Рис.1.
Найдем увеличивающий путь. Общая итерация: Шаг 1. Источник s получает пометку (s+). Шаг 2. Так как = 1< = 2, то вершина 1 получает метку (s+). Вершина 2 получает метку (s-), т.к. x21 = 1 > 0. Вершина 5 не может быть помечена, т.к. (дуга (s, 5) – насыщенная). Шаг 3. Соседними вершинами с вновь помеченными являются вершины 3 и 4. Вершина 3 помечена не может быть, так как x13 = d13.. Вершина 4 получает пометку (2-), т.к. х42 = 1 > 0. Шаг 4. Соседними с помеченной вершиной 4 являются вершины t и 5. Вершина t помечена не может быть, т.к. хt4 = 0. Вершина 5 получает пометку (4 -), т.к. x54=1>0. Шаг 5. Помечаем вершину t с меткой (5 +), x51=1 < d51=3. Увеличивающий путь: s – 2 – 4 – 5 - t, причем на этом пути дуга (5, t) является прямой, а дуги (2, s); (4, 2); (5, 4) обратными. Увеличим поток вдоль этого пути по формулам (23). Находим e 1 e 2 = т.е. e = min(e 1,e 2) = 1. Полагаем 2S = x2S – 1 = 0, 42 = x42 –1 =0, 54 = x54 – 1 = 0, 5t = x5 t+1 = 2. Величина суммарного потока в сети равна 3.
Общая итерация 1. Для нового потока ищем увеличивающий путь методом расстановки пометок. Пометить удается только вершины s и 1. Следовательно, увеличивающего пути нет, и построенный поток является максимальным. Минимальный разрез (R,, , где R = {1; 2}, = {2; 3; 4; 5; t} состоит из дуг (R, ) = {(1, 3); (s, 5); (s,2); (1,2)} и обладает пропускной способностью C (R, ) = d13 + dS5 = 3. На рис.2 минимальный разрез показан пунктирной линией
Рис. 2
КОНТРОЛЬНЫЕ ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ Задание 6. Сеть задана матрицей пропускных способностей дуг (dij = 0 означает, что в сети отсутствует дуга, ведущая из вершины 1 в вершину j). Требуется по матрице D построить сеть и найти в ней максимальный поток из вершины 1 в вершину 10, определив при этом минимальный разрез.
Дата добавления: 2017-02-01; Просмотров: 101; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |