Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
40-1-05.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
3.8 Mб
Скачать

6.8. Задача про максимальний потік для багатополюсних мереж. Мінімальний розріз. Алгоритм Гоморі-Ху

Маючи карту міської водопровідної мережі, де зазначені пропускні спроможності магістралей в обох напрямках, треба так визначити витік (водонапірна башта) та стік (водозабірний насос), щоб потік мережі був максимальним.

Інший варіант задачі: маючи карту вулиць міста, треба визначити місця в’їзду та виїзду для транзитного транспорту, щоб поставити знак «Рух транзитного транспорту заборонено».

Задача може бути розв’язана на основі теореми про мінімальний розріз, яка стверджує, що пропускна спроможність мережі дорівнює її мінімальному розрізу або максимальному потокові. Розглянемо деякі з визначень

1. Розріз – це мінімальна множина дуг, яка дає змогу відключити вершини одну від одної, що робить мережу незв’язною.

-

16

7

17

15

9

15

16

-

7

16

15

9

15

7

7

-

7

7

7

7

17

16

7

-

15

9

15

15

15

7

15

-

9

15

9

9

7

9

9

-

9

15

15

7

15

15

9

-

2. Пропускна спроможність розрізу – це сума пропуск-них спроможностей усіх вхідних дуг.

  1. Мінімальний розріз – це розріз, що має мінімальну суму.

Відповідь: максимальний потік 17 буде забезпечено при витоці 1 та стоці 4.

Отримавши витік 1 та стік 4, задачу можна розв’язати також методом Дейкстра 4. Якщо ж вони невідомі, метод треба «прогнати» N2-n раз (N – кількість вершин, n – елементи діагоналі) у циклі, змінюючи стік та витік, до визначення максимуму потоку. Розглянемо одну таку ітерацію (26):

Со=

0

8

4

6

0

0

0

С1=

0

8

4

6

0

0

0

8

0

0

5

3 -

0

0

8

0

0

5 -

0

0

0

4

0

0

2

0

1

0

4

0

0

2

0

1

0

6

5

2

0

7+

6 -

3

6

5+

2

0

10

3 -

3

0

3+

0

7 -

0

0

10

0

6

0

4

0

0

10

0

0

1

6+

0

0

2

0

0

1

9+

0

0

2

0

0

0

3

10

2

0

0

0

0

3

10

2

0

2546

Q=min(3, 7, 6)

246

Q= min(5, 3)

С2=

0

8

4

6

0

0

0

С3=

0

8

4

6

0

0

0

8

0

0

2-

0

0

0

8

0

0

1 -

0

0

0

4

0

0

2+

0

1 -

0

4

0

0

3

0

0

0

6

8+

2 -

0

10

0

3

6

9+

1

0

10 -

0

3

0

6

0

4

0

0

10

0

6

0

4+

0

0

10 -

0

0

1+

12

0

0

2

0

0

2

12

0

0

2+

0

0

0

3

10

2

0

0

0

0

3

10+

2 -

0

2436

Q=min(2, 2, 1)

24576

Q= min(1, 10, 10, 2)

С4=

0

8 +

4

6 -

0

0

0

С5=

0

9

4

5

0

0

0

8 -

0

0

0

0

0

0

7

0

0

0

0

0

0

4

0

0

3

0

0

0

4

0

0

3

0

0

0

6 +

10

1

0

9

0

3 -

7

10

1

0

9

0

2

0

6

0

5

0

0

9

0

6

0

5

0

0

9

0

0

2

12

0

0

3 +

0

0

2

12

0

0

4

0

0

0

3 +

11

1 -

0

0

0

0

4

11

0

0

21476

Q=min(8, 6, 3, 1)

F=

0

0

0

1

0

0

0

1

0

0

5

3

0

0

0

0

0

0

0

1

0

0

0

1

0

0

6

1

0

0

0

2

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

2

0

F26 = 9 (1+5+3, 1+6+2).

Максимально завантажені дуги при F26:

24, 25, 36, 46 та 76.

Завантаження вузлів при F26:

F1 = 1, F3 = 1, F4 = 8, F5 = 3, F7 = 2.

Примітка. Згадаймо, що після розв’язку цим методом як порівняння можна використати вже розрахований варіант 26 за допомогою теореми про min розріз.

Відповідь: при витоці 2 та стоці 6 max потік дорівнює 9.

Ідея методу Гоморі-Ху (стискання або конденсування) полягає в перетворенні багатополюсної мережі в остов мінімального розрізу. Має місце принцип «розплутування клубка». Складається з N-1 ітерацій: kl, mk, nm тощо (де N – кількість вершин, а k, l, m та n – вершини). Стягування (конденсування) двох вершин в одну пару відбувається тоді, коли вони обидві знаходяться з одного боку мінімального розрізу.

Розглянемо довільну пару вершин: 12, де f12=16. Вершину 2 треба «витягнути» з «клубка»:

Розглянемо наступну пару вершин: 31, де f31=7. Вершина 1 знаходиться на одному «березі» з 2, тому й «тягнеться» до неї:

Вершини 2 і 1 «витягнуті» окремо, тож виконується стискання мережі. Потім розглядаємо пару вершин: 63, де f63=7. Вершина 3 розміщена на іншому «березі», ніж 1 і 2, тому й «розплутується» окремо:

Потім «витягуємо» пари вершин 46 (f46=9) та 74 (f74=15), які лежать окремо відносно вершини 3, та пару 57 (f57=15):

Примітка. Результат розв’язання задачі методом Гоморі-Ху був би іншим, якби «клубок розплутувався» інакше.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]