Алгоритм Форда-Фалкерсона
Щоб знайти максимальний потік, необхідно задати неорієнтований граф з прямою і зворотньою пропускною спроможністю по кожному ребру. Якщо задано орграф, то зворотня пропускна спроможність ребра Послідовність виконання дій така. 1. Будується початкова матриця графа 2. Вибір розрізу нульового потоку: джерело
3. Для кожного ребра розрізу будується один з допустимих
де Шлях через розріз доцільно вибирати найпростішим. 4. Будується матриця нульового потоку Х. Для кожного 5. Будування матриці 6. Будування списку ребер з резервами (ненасичені ребра) згідно з матрицею Х від вершини
В частину І входять вершини, від яких є зв’язки до вершин частини ІІ; в частину ІІ входить множина вершин, до яких є зв’язок від вершини частини І. Подалі в частину І вибираються вершини з попередніх рядків частини ІІ. Якщо список скласти неможливо до кінцевої вершини
7. Згідно з здобутим списком складається ланцюг ненасичених ребер, які ведуть від
8. Шлях з ненасичених ребер має можливість збільшити потік на додаткову величину
де 9. Будування нової матриці потоку Х на основі попередньої матриці Х: усі елементи ребер ненасиченого шляху (за п.7) збільшуються на величну 10. Якщо неможливо скласти список до кінцевої вершини
11. Будування орграфа згідно з дугами Блок-схема алгоритму наведена на рис.8.6.
Приклад
А 1 5/4 3/2 2/4
3/4 5/5 3/3 А 2 Рис.8.7 Знайти максимальний потік Будується вихідна матриця
Згідно з розрізом І: ІІ: Матриця Х Матриця S - X
Будування списку: s: 1 1: 2,3 2: 3 3: t Шлях (s,1) (1,2) (2,3) (3, t) та його резерв: Матриця Х Матриця
Подалі список скласти неможливо. Тому остання матриця Х вказує на оптимальний розв’язок задачі. Величина максимального потоку дорівнює:
Будується орграф за матрицею Х (рис. 8.8):
3 (3) 3 (5) 3 (3)
Рис.8.8 У дужках наведена початкова пропускна спроможність
Читайте также: IV. Циклдік оператор алгоритмдерін программалау Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|