Материал: 62_201

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Залишається тільки підбити підсумок виконання дій протягом цієї ітерації:

-знайдено додатковий варіант проходження мережі, тобто ще один доповнюючий шлях (1,2), (2,5), (5,6);

-при цьому значення максимального потоку збільшене на 5 одиниць (мал. 88, б).

 

[1,5]

[2,5]

ГІГ)-5(20)-ЦІГ) 10+5=15

 

•с &'

0(5)

TS0j 0(3)

-^ЇЧ°J °<г3>%•9М>.

г

 

( З ) - 0(5) - * - ( 4 j

 

 

 

-ОГ'

 

 

 

 

 

 

 

 

[1,30]

[3,5]

1.

2,

52

6

 

 

2і

3j 5J4g 6,

 

а)

б)

 

 

 

 

Мал. 88

Можна констатувати факт, що на завершення роботи другої ітерації до вершини-стоку потрапило вже 15 одиниць води.

Третя ітерація

Після двох виконаних кроків не будемо детально зупиня­ тися на третьому. Розглядаючи малюнок 88, б, визначимо послідовність ребер, якими можна пройти від витоку до стоку, збільшивши потік. Починаючи з вершини 1 з міткою [0, °о]; переходимо лише до вершини 3, помічаючи її міткою [1,30], оскільки по ребру (1,2) йде максимально можливий потік і вер­ шина 2 вже недосяжна. З вершини 3 можна перейти до вер­ шин 2 і 4. Позначаємо їх відповідно мітками [3,5], оскільки вони ще не розглядалися у даній ітерації і саме значеннями 5 визначені пропускні спроможності ребер (3,2) і (3,4). Наступ­ ний хід у вершину 2. З неї можна перейти лише до вершини 5: ребро (2,4) повністю насичене і перехід до вершини 4 неможли­ вий. Скільки води можна передати ще ребром (2,5)? Пропускна спроможність ребра дає змогу додати ще 15 одиниць, але у вер­ шину 2 прийшло лише 5, тому більше немає звідки взяти. Отже, обмежимося цим значенням і поставимо мітку [2,5] біля вершини 5. Далі у нашій послідовності іде вершина 4, яку ми побачили з вершини 3. Однак з неї вершини 6 не видно, оскіль­ ки ребро (4,6) насичене. Після вершини 4 у послідовності іде вершина 5. Переходимо до неї і можемо побачити вершину 6, яка є стоком. Резерв ребра (5,6) становить 7 одиниць води, але передати з вершини 5 можемо лише 5 одиниць. Зробимо це, поставивши мітку [5,5] біля вершини 6 (мал. 89, а).

142

 

[3,5]

 

 

[2,5]

 

(2)-10(20)*/5\

15+5=20

 

 

 

 

 

 

 

 

 

А-5(20)*Л

 

-*Tv

 

г*

 

 

 

 

 

 

 

 

 

 

&'

 

 

 

 

 

*Ш ®*

 

 

®

^

J®

Щ^

0(5)

\

 

0(3)

 

5(5)

а)

1о

3,

23

43

52

65

 

10

3j

23

52

65

 

б)

 

 

 

 

 

 

Мал. 89

Черговий прохід мережею завершено, і нам вдалося проштовх­ нути доповнюючим шляхом (1,3), (3,2), (2,5), (5,6) ще 5 одиниць води. Тепер потік мережею становить 20 одиниць (мал. 89, б).

Четверта ітерація

Поки що не можна вважати процес пошуку максимального потоку в мережі завершеним, оскільки всі пройдені ітерації за­ вершуються вдало: вершина-стік досягається і значення мак­ симального потоку в мережі вдається збільшити.

Розглянувши поточний стан мережі, зображений на малюнку 89, б, можемо зробити висновок, що частина ребер вже повністю насичена, а деякі ребра ще мають перспективу бути донасиченими. До них відносяться ребра (1,3), (2,5), (3,4), (5,4), (5,6). Спробуємо побудувати новий доповнюючий шлях, використавши ці ребра.

Почнемо, як завжди, з вершини 1, помітивши її тра­ диційною міткою [0, °°] (мал. 90, о). З неї можна перейти лише до вершини 3, передавши туди 25 одиниць резервної води і по­ значивши міткою [1,25] (мал. 90, б).

Далі перейдемо до вершини 3 і побачимо лише вершину 4, куди можна передати, зважаючи на пропускну спроможність

 

(І)-10(20)-(5

(2)-іо(2"о»

5

 

*«Гї\

;©« ^ 5(5)\ \%

0(3) ;©

ф ґ

5(5) % 0(3)

 

 

[1,25]

[3,5]

а)

 

1о З,

 

 

б)

 

Мал. 90

143

ребра (3,4), лише 5 одиниць води з 25 можливих. Підтвердимо цей факт міткою [3,5] біля вершини 4 (мал. 91, а). А от куди йти далі? Дуже хотілося б потрапити у вершину 2, оскільки саме звідти можна перейти до вершини 6, але як там опинитися? Поставимо собі слушне запитання: а чи вірно ми розподілили воду в кожній вершині мережі? Проаналізувавши сумарні по­ токи води, що входять у кожну вершину і виходять з неї, зазначимо, що ці значення збігаються. Цей факт відомий з ви­ значення мережі: вода ззовні у вершини не поступає, тому скільки до них втікає ребрами, що входять, стільки само і витікає ребрами, що виходять. У вершинах 2 і 4 цей основний принцип мережі справджується.

Уважно розглянувши досліджувану мережу, можна поміти­ ти, що є можливість розподілити потік об'ємом 20 одиниць, який приходить у вершину 2, далі у вершини 4 і 5 інакше, ніж це вийшло у результаті виконання попередніх ітерацій. На­ приклад, ребра (2,5) і (5,6) дають змогу пропустити більше ніж 10 одиниць води, тим самим на це значення зменшиться потік через ребра (2,4) і (4,5). Це, у свою чергу, дасть можливість донаситити ребро (4,6), подавши воду у вершину 4 ребром (3,4). Отже, вирішення проблеми знайдено і можна буде виконати ще одну ітерацію.

Сформулюємо задачу, що виникла, мовою графів так: повер­ немо частину потоку, що попередньо спрямований ребром (2,4), у зворотному напрямі. Насправді, потік не повертається назад, а лише його поточне значення зменшується на деяке значення.

Введемо фіктивне ребро (4,2), позначене на малюнку 91, б пунктирною лінією, що називається зворотним ребром. Усі ре­ ально існуючі у мережі ребра називаються прямими. Ще раз за­ уважимо, що насправді ребра (4,2) у мережі не існує. Уведення його до мережі означатиме лише те, що попередньо спрямова­ ний потік з вершини 2 у вершину 4 зі значенням 10 буде змен­ шено на деяке значення, що не перевищує насиченості прямого ребра. Цей факт зрозумілий, оскільки не можна прибрати з ребра (2,4) більше води, ніж там уже є. Який же потік можна передати зворотним ребром (4,2) у вершину 2? Стільки, скіль­ ки прийшло у вершину 4, тобто 5 одиниць. Це можливо зроби­ ти, оскільки пропускна спроможність зворотного ребра (4,2) така сама, як і прямого (2,4): труба ж одна і та сама! Поставимо мітку [4, -5] біля вершини 2, де на цей раз значення потоку, що передається у неї зворотним ребром з вершини 4, позначимо від'ємним числом - 5 . У послідовність вершин допишемо види­ му вершину 2 з індексом -4, відмічаючи цим, що сюди при­ йшли саме зворотним ребром (мал. 91, б).

144

 

 

(2>к10(20) *Ч 5

 

[4,-5]

 

 

 

 

 

 

 

Хї\

 

 

(2VlO(20)-^(T)

 

 

 

 

 

 

 

5(5)

% , 0(3)

 

 

 

[0,»] %

J

..\L

 

 

SST

 

 

 

 

 

 

 

»Л

v ^

 

 

[1,25]

[3,5]

 

<ф-0(5)

jjp

 

 

 

[1,25]

[3,5]

 

 

 

 

 

 

 

lo 3,

4

 

3,

 

a)

 

u

 

6)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Мал.

91

 

 

Отже, вихід знайдено і процес попіуку доповнюючого шляху з витоку до стоку, що можливо збільшить шуканий потік, роз­ блоковано. Дивимося з вершини 2 і бачимо нову вершину 5. У неї можна передати ще 5 одиниць води, які віртуально надійшли з вершини 4, а реально зекономлені у вершині 2. Зауважимо, що резерв ребра (2,5) становить на даний момент 10 одиниць води, однак у вершину 5 може прийти лише 5 оди­ ниць, які додатково подаються з вершини 2. Ставимо мітку [2,5] біля вершини 5 і дописуємо цю вершину у послідовність (мал. 92, а).

Тепер уже з вершини 5 видно стокову вершину 6. Вона буде позначена міткою [5,2], оскільки резерв ребра (5,6) обмежений величиною потоку 2. Таким чином, у вершину 6 надійшло ще 2 одиниці води (мал. 92, б).

 

[4,-5]

[2,5]

 

 

 

 

 

 

 

-Щ20)*^5Х

 

 

 

1^-10(20) - ф ^

 

 

*••%Т Х

 

,.« і'Ч, І '"•

 

5(5)

Sh-:<Z 0(3)

;©

 

 

5(5)

V 3 - 0(3)

J

[0,оо]

> ,

 

[0,оо] %

5(5)

 

 

\ 1

.V*№]

 

'°К

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 0 ( 5 ) ^ ^ ґ

 

 

[1,25]

[3,5]

 

 

 

[1,25]

[3,5]

 

 

 

 

 

І

 

а)

1. З, 43 2_4 5:

 

б)

 

1, 3, 43 2_4 52 6

 

 

 

¥

 

 

 

15

 

 

 

Мал.

92

 

 

 

 

 

 

 

 

 

 

Сумарна кількість води, яку нам вдалося пропустити мере­ жею, виконавши чотири ітерації, становить 22. На малюнку 93, а виділеними ребрами зображено отриманий доповнюючий шлях від витоку до стоку, що дає змогу проштовхнути мере­ жею ще 2 одиниці води.

Логічно було б прибрати уявне ребро (4,2) з мережі, оскіль­ ки воно вже виконало свою функцію. Для цього досить просу - мувати значення потоків, що рухаються прямим ребром (2,4)

145

ребра (3,4), лише 5 одиниць води з 25 можливих. Підтвердимо цей факт міткою [3,5] біля вершини 4 (мал. 91, а). А от куди йти далі? Дуже хотілося б потрапити у вершину 2, оскільки саме звідти можна перейти до вершини 6, але як там опинитися? Поставимо собі слушне запитання: а чи вірно ми розподілили воду в кожній вершині мережі? Проаналізувавши сумарні по­ токи води, що входять у кожну вершину і виходять з неї, зазначимо, що ці значення збігаються. Цей факт відомий з ви­ значення мережі: вода ззовні у вершини не поступає, тому скільки до них втікає ребрами, що входять, стільки само і витікає ребрами, що виходять. У вершинах 2 і 4 цей основний принцип мережі справджується.

Уважно розглянувши досліджувану мережу, можна поміти­ ти, що є можливість розподілити потік об'ємом 20 одиниць, який приходить у вершину 2, далі у вершини 4 і 5 інакше, ніж це вийшло у результаті виконання попередніх ітерацій. На­ приклад, ребра (2,5) і (5,6) дають змогу пропустити більше ніж 10 одиниць води, тим самим на це значення зменшиться потік через ребра (2,4) і (4,5). Це, у свою чергу, дасть можливість донаситити ребро (4,6), подавши воду у вершину 4 ребром (3,4). Отже, вирішення проблеми знайдено і можна буде виконати ще одну ітерацію.

Сформулюємо задачу, що виникла, мовою графів так: повер­ немо частину потоку, що попередньо спрямований ребром (2,4), у зворотному напрямі. Насправді, потік не повертається назад, а лише його поточне значення зменшується на деяке значення.

Введемо фіктивне ребро (4,2), позначене на малюнку 91, б пунктирною лінією, що називається зворотним ребром. Усі ре­ ально існуючі у мережі ребра називаються прямими. Ще раз за­ уважимо, що насправді ребра (4,2) у мережі не існує. Уведення його до мережі означатиме лише те, що попередньо спрямова­ ний потік з вершини 2 у вершину 4 зі значенням 10 буде змен­ шено на деяке значення, що не перевищує насиченості прямого ребра. Цей факт зрозумілий, оскільки не можна прибрати з ребра (2,4) більше води, ніж там уже є. Який же потік можна передати зворотним ребром (4,2) у вершину 2? Стільки, скіль­ ки прийшло у вершину 4, тобто 5 одиниць. Це можливо зроби­ ти, оскільки пропускна спроможність зворотного ребра (4,2) така сама, як і прямого (2,4): труба ж одна і та сама! Поставимо мітку [4, -5] біля вершини 2, де на цей раз значення потоку, що передається у неї зворотним ребром з вершини 4, позначимо від'ємним числом -5. У послідовність вершин допишемо види­ му вершину 2 з індексом -4, відмічаючи цим, що сюди при­ йшли саме зворотним ребром (мал. 91, б).

144

Источник: https://studfile.net/preview/14502489/