Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_prakt_Inform_merezi-Kh-Hnure-2011-ukr.doc
Скачиваний:
4
Добавлен:
09.09.2019
Размер:
4.24 Mб
Скачать

3.5 Контрольні запитання

1. Що являє собою задача маршрутизації у телекомунікаційних та інформаційних мережах, які критерії оптимальності її розв'язання?

2. У чому полягає ідея алгоритму Беллмана–Форда для розв'язання задачі маршрутизації?

3. Яка послідовність кроків алгоритму Беллмана–Форда?

4. У чому полягає сутність алгоритму Дейкстри для розв'язання задачі маршрутизації?

5. Яку послідовність операцій реалізує алгоритм Дейкстри?

6. У чому полягають методологічні основи алгоритму Флойда для розв'язання задачі маршрутизації?

7. Що являють собою елементи дистанційної матриці, як вони визначаються в алгоритмі Флойда?

8. Як в алгоритмі Флойда визначаються елементи маршрутної матриці?

9. Як знаходиться послідовність вершин у найкоротшому шляху між двома заданими вершинами графа мережі зв'язку?

10. Що являє собою медіана графа мережі?

11. Як визначаються внутрішні передаточні числа вершин графа мережі?

12. Як визначаються зовнішні передаточні числа вершин графа мережі?

3.6 Завдання для самостійного розв’язання

1. Знайдіть з використанням алгоритму Беллмана–Форда найкоротші шляхи для заданого викладачем графа мережі (додаток Б) та положення вершини-витоку.

2. Знайдіть з використанням алгоритму Дейкстри найкоротші шляхи в умовах завдання задачі1 і порівняйте отримані результати.

3. Знайдіть з використанням алгоритму Флойда найкоротші шляхи між всіма вершинами графа мережі в умовах завдання 1.

4 Аналіз потоків у мережах

4.1 Мета заняття

Закріплення знань методів і алгоритмів аналізу потоків у мережах; набуття практичних навичок їхнього використання під час розв’язання відповідних задач.

4.2 Організація самостійної роботи студентів

4.2.1. Повторіть методи та алгоритми аналізу мережних потоків за конспектом лекцій, літературою [1–4] і наведеними нижче основними теоретичними відомостями.

4.2.2. Дайте відповіді на контрольні запитання.

4.2.3. Розгляньте наведені приклади розв’язання задач.

4.2.4. Розв’яжіть варіанти завдань.

4.3 Основні теоретичні відомості

Розглянемо зважений орграф мережі з вершинами та дугами. Нехай його кожній дузі поставлено у відповідність ненегативне дійсне число , яке відповідає пропускній здатності (ємності) дуги , . Позначимо через підмножину дуг, які виходять із вершини , а через – підмножину дуг, які заходять у вершину .

Потоком в орграфі мережі із вершини-витоку до вершини-стоку величиною називається невід’ємна визначена на дугах функція , така, що

(4.1)

, (4.2)

де величина має назву «чистого» потоку з вершини ;

вираз (4.1) – умови зберігання потоку.

4.3.1 Задача про двополюсний максимальний потік. Теорема та алгоритм Форда–Фалкерсона

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

Пропускною здатністю перерізу називається сума пропускних здатностей дуг, які входять до нього:

. (2.3)

Доказ цієї теореми подає алгоритм розміщення позначок для розв’язання задачі про максимальний потік. Алгоритм починає роботу з відомого припустимого потоку , наприклад, з нульового. Потім обчислення розвиваються у вигляді послідовності «розміщення позначок» (операція A), кожна з яких або призводить до потоку з більшою величиною (операція Б), або ж закінчується висновком, що розглянутий потік максимальний.

Операція А (розміщення позначок).

Кожна вершина може перебувати в одному з трьох станів:

– вершині приписана позначка, і вершина переглянута, тобто вона має позначку і всі суміжні з нею вершини «оброблені»;

– вершина позначена, але не переглянута;

– вершина не позначена.

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

Крок 1. Витоку надаємо позначку . Вершина-витік позначена, але «не переглянута».

Крок 2. Візьмемо будь-яку позначену, але «не переглянуту» вершину. Нехай вона має позначку . «Переглянемо» її, тобто «переглянемо» всі вершини, суміжні з нею, і позначимо ті з них, які ще непозначені.

Всім непозначеним вершинам , до яких йдуть дуги із вершини і для яких , приписуємо позначку , де

.

Всім непозначеним вершинам , із яких йдуть дуги до вершини і для яких , приписуємо позначку , де

.

Тепер вершина і позначена, і переглянута, а вершина позначена, але «не переглянута».

Крок 3. Повторюємо крок 2 доти, доки або не буде позначена вершина-стік , або вершина буде непозначена і ніяких інших позначок не можна буде розставити. У першому випадку переходимо до операції Б, а у другому – алгоритм закінчує роботу з максимальним потоком . У другому випадку множини позначених і непозначених вершин утворять дві сторони мінімального перерізу .

Операція Б (збільшення потоку).

Крок 4. Призначимо вершині і перейдемо до кроку 5.

Крок 5. Якщо позначка вершини має вигляд , то змінюємо потік вздовж дуги з на .

Якщо позначка вершини має вигляд , то змінюємо потік вздовж дуги із на .

Крок 6. Якщо вершина , то слід стерти всі позначки та повернутися до кроку 1, щоб знову розпочати розставляти позначки з використанням поліпшеного потоку, який знайдено на кроці 5.

Якщо , то потрібно прирівняти і повернутися до кроку 5.

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

4.3.2 Задача про багатополюсний максимальний потік. Алгоритм Гоморі–Ху

Розіб'ємо множину вершин графа мережі на підмножину вершин-витоків , які створюють потік, та множину стоків , що споживають потік, і множину проміжних вершин , які зберігають потік. Основна ідея алгоритму Гоморі–Ху полягає в ітеративній побудові дерева, гілки якого відповідають перерізам, а пропускні здатності гілок дорівнюють пропускним здатностям цих перерізів. Наведемо формальний опис алгоритму Гоморі–Ху.

Крок 1. Виберемо деякі дві вершини графа. Позначимо одну з них як виток , а іншу – як стік .

Крок 2. Використаємо алгоритм Форда–Фалкерсона і знайдемо максимальний потік із витоку у стік . При цьому множину позначених вершин і множину непозначених вершин утворять дві сторони мінімального перерізу ( , ).

Крок 3. Виберемо дві вершини графа і , які лежать з однієї сторони від перерізу (наприклад, , )..

Крок 4. Замінимо дуги з мінімального перерізу ( , ) однією дугою, а вершини сторони перерізу, в якій не лежать вершини , (наприклад, ), – однією вершиною. Пропускну здатність для такої визначеної дуги прирівняємо до пропускної здатності перерізу ( , ).

Крок 5. Прирівняємо , і повернемося до кроку 2.

4.4 Приклади розв’язання задач

Задача 1. Для графа мережі (рис. 4.1) визначити потік з вершини-витоку до вершини-стоку . Кожній дузі графа приписано два числа: перше – величина потоку по дузі, друга – пропускна здатність дуги.

Рисунок 4.1 – Граф мережі

Розв’язання

Визначимо величини «чистих» потоків для вершин графа мережі (рис. 4.1):

; ; ; ; .

Отже, величина потоку з вершини-витоку = у вершину-стік = дорівнює 3.

Задача 2. Знайти таку множину потоків по дугах графа мережі (рис. 4.1), щоб величина чистого потоку з вершини-витоку була максимальною.

Розв’язання

1. Візьмемо потік, зображений на рис. 4.1, як початковий припустимий потік. Він має величину 3.

2. Надамо вершині-витоку = «позначку» (+,∞). Вершина «позначена», але «не переглянута».

3. «Проглянемо» вершини, суміжні з вершиною . Вершині надамо «позначку» , тому що , а вершині – позначку , тому що . Вершина «позначена» і «переглянута», а вершини і «позначені», але «не переглянуті».

4. «Проглянемо» вершини, суміжні з вершиною . З вершин, суміжних із нею, «непозначені» вершини і . Вершині надамо «позначку» , тому що і min(2,4)=2. Вершину не позначаємо, тому що .

5. «Проглянемо» вершини, суміжні з вершиною . Вершині надамо «позначку» , тому що . Стік «позначений». Переходимо до процедури Б – збільшення потоку.

6. Стік має «позначку» . Тому збільшуємо потік уздовж дуги на 1.

7. Вершина має «позначку» . Тому збільшуємо потік уздовж дуги на 1. У результаті одержимо новий потік величини 4.2.

Рисунок 4.2 – Потік величини 4

8. Стираємо всі «позначки».

9. Надамо вершині «позначку» (+,∞).

10. «Проглянемо» вершини, що суміжні з вершиною . Вершині надамо «позначку» . Вершину не позначаємо, тому що .

11. «Проглянемо» вершини, суміжні з вершиною . Вершині надамо «позначку» , тому що , і min(2,4)=2.

12. «Проглянемо» вершини, суміжні з вершиною . Вершині надамо «позначку» , тому що , і min(2,4)=2. Стік «позначений». Переходимо до процедури Б – збільшення потоку.

13. Стік має «позначку» . Тому зменшуємо потік уздовж дуги на 2.

14. Вершина має «позначку» . Тому зменшуємо потік уздовж дуги на 2.

15. Вершина має «позначку» . Тому зменшуємо потік уздовж дуги на 2. Одержимо новий потік величини 6 (рис. 4.3).

16. Стираємо всі «позначки».

17. Надамо вершині «позначку» (+,∞).

Рисунок 4.3 – Потік величини 6

18. Вершини, суміжні з вершиною не можна позначити, тому що дуга насичена – , а через дугу потік не передається. Стік залишився «непозначеним». Отже, отриманий потік є максимальним.

Таким чином, розв’язання задачі має вигляд: , , , , , .

Задача 4. Визначити за алгоритмом Гоморі–Ху величини максимальних потоків між усіма парами вершин зваженого графа мережі, який зображено на рис. 4.4, де ваги ребер відповідають їх пропускним здатностям.

Рисунок 4.4 – Зважений граф мережі з декількома витоками і декількома стоками

Розв’язання

Крок 1. Виберемо вершини і . Мінімальну пропускну здатність щодо витоку і стоку має перетин зі сторонами і . За теоремою Форда–Фалкерсона величина максимального потоку між вершинами і дорівнює пропускній здатності перерізу : =2+3=5. Об'єднаємо вершини з в одну вершину і з'єднаємо її з вершиною ребром із пропускною здатністю 5 (рис. 4.5).

Рисунок 4.5 – Перший крок алгоритму Гоморі–Ху

Крок 2. Виберемо вершини і . Мінімальну пропускну здатність відносно витоку і стоку має переріз зі сторонами і . Величина максимального потоку між вершинами і дорівнює пропускній здатності перерізу : =2+4+2=8. Об'єднаємо вершини в одну і з'єднаємо її з вершиною ребром із пропускною здатністю 8 (рис. 4.6).

Рисунок 4.6 – Другий крок алгоритму Гоморі–Ху

Крок 3. Виберемо вершини і . Мінімальну пропускну здатність відносно витоку і стоку має переріз зі сторонами і . Величина максимального потоку між вершинами і дорівнює пропускній здатності перерізу : =2+5+4=11. Об'єднаємо вершини в одну вершину і з'єднаємо її з вершиною ребром із пропускною здатністю 11 (рис. 4.7).

Рисунок 4.7 – Третій крок алгоритму Гоморі–Ху

Крок 4. Виберемо вершини і . Мінімальну пропускну здатність відносно витоку і стоку має переріз зі сторонами і . Величина максимального потоку між вершинами і дорівнює пропускній здатності перерізу : =5+4=9. Об'єднаємо вершини в одну вершину і з'єднаємо її з вершиною ребром із пропускною здатністю 9 (рис. 4.8).

Рисунок 4.8 – Четвертий крок алгоритму Гоморі–Ху

Крок 5. Виберемо вершини і . Мінімальну пропускну здатність відносно витоку і стоку має переріз зі сторонами і . Величина максимального потоку між вершинами і дорівнює пропускній здатності перерізу : =5+6+4=15. З'єднаємо вершину з вершиною ребром із пропускною здатністю 15 (рис. 4.9).

15

11

8

5

9

Рисунок 4.9 – Остаточне дерево перерізів

За деревом перерізів, зображеним на рис. 4.9, можна знайти інші величини максимальних потоків.

Запишемо величини максимальних потоків у вигляді матриці:

.

Тут на перетині -го рядка та -го стовпця міститься величина максимального потоку між вершинами і .

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