|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Задача про максимальний потік
Алгоритм побудови максимального потоку. 1. Побудувати деякий початковий потік Х 2. Організувати процедуру складання підмножини А вершин, що виходять з витоку І по ненасиченим ребрам. Якщо в цьому процесі стік S не попадає в підмножину А, то побудований потік максимальний і задача розв’язана. Якщо ж S попав у А, то перейти до п.3 алгоритму. 3. Виділити шлях із І в S, що складається з ненасичених ребер, і збільшити потік х Приклад 2.
Мал.2. Розв’язання. У відповідності до п.1 алгоритму на сітці необхідно з формувати початковий потік Х
Табл.3.
Табл.4.
Починаючи виконання п.2 алгоритму, складемо матрицю R-X Знаючи матрицю R-X
Табл.5.
алгоритму), а також виділити (якщо потік Х Вершини підмножини А виділяють поступово, починаючи з витоку І. З цією метою переглядають перший рядок матриці R-Х Повернемося до нашого прикладу. В даному випадку І = 1, S = 6. Побудуємо під множину А, послідовно складаючи списки вершин, починаючи з вершини 1. Дивлячись на перший рядок матриці R-X0(див. Табл. 5), у список вершини 1 попаде одна вершина 2, оскільки елемент другого стовпця цього рядка відмінний від нуля. Отже, запишемо: 1║ 2. Тепер переходимо до складання списку вершини 2 як вершини, що ввійшла в список вершини 1. В другому рядку матриці два елементи відмінні від нуля: 10 і 1. Але 10 відповідає вершині 1, яка вже присутня в підмножині А, тому повторно її в списки не включаємо. Елемент 1 відповідає вершині 3, вона зустрічається вперше, тому включаємо її в список вершини 2. Таким чином отримуємо наступний список: 2║ 3. Аналогічно отримуємо інші списки. В результаті маємо набір:
1 ║ 2, 2║ 3, 3║ 4, 4║ 5, 5 ║ 6. (5)
Аналізуючи списки (5), помічаємо, що стік 6 попав у під множину А, оскільки опинився у списку однієї з вершин підмножини А (в даному випадку вершини 5). Це означає, що існує шлях з витоку І в стік S (у нас з 1 в 6), що складаються з ненасичених ребер. Продовжимо деталізувати алгоритм, побудову ненасиченого шляху з І в S починають з останнього ребра цього шлях. Ним буде ребро (і n-1, S), де і n-1 – вершина, в список якої попав стік S. Далі виписують ребро (і n-2 і n-1), де і n-1 – вершина, в список якої попала вершина і Повернемося до нашого прикладу. Переділяючись списки (S) з кінця до початку, помічаємо, що ребром (і Після виділення ненасиченого шляху з витоку І в стік S залишається за допомогою матриці R-Х В нашому прикладі, як видно з таблиці 5, по ребру (1,2) додатково можна припустити 2 од., по ребрам (2,3), (3,4), (4,5) і (5,6) – відповідно 1, 1, 1 і 2 од., так, що збільшити потік по всьому шляху 1-2-3-4-5-6, що складається із вказаних ненасичених ребер, можна на величину
∆=
Для побудови матриці нового потоку Х В розглядаємо му прикладі на величину ∆=1 збільшаться елементи х Побудований потік Х
Табл. 6
Табл. 7
вершин, що досягаються з витоку І по ненасиченим шляхом. В результаті отримуємо такі списки:
1║2, 2║. (6)
Якщо видно зі списків (6), стік 6 не попав у список вершин, досягаються з І по ненасиченим ребрам. Це означає, що потік Х
Мал.3. Використовуючи списки (6), виділимо підмножини А і В, на які розбита множина всіх вершин: А={1,2},В={3,4,5,6}. А зараз випишемо ребра, що створюють розтин А/В мінімальної пропускної здібності: (1,3), (2,3), (2,5).
Розглянемо деякі додатки задачі про максимальний потік. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.) |