Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Raz3Te3Alg_UA.doc
Скачиваний:
2
Добавлен:
09.11.2019
Размер:
488.45 Кб
Скачать

Будемо вважати, что граф g заданий матрицею ваг.

Алгоритм А9 побудови зробленого паросполучення мінімальної ваги в двочастковому зваженому графі.

  1. Побудувати граф T = (X, Y, U), U = {xy: w(x, y) = 0}.\

  2. Знайти в графі Т максимальне паросполучення М. Нехай XM і YM – безлічі вершин, не насичених паросполученням М и вхідних, відповідно, у частки X і Y.

  3. Якщо XM = YM = (, то кінець [М – оптимальний розв’язок задачі]. Інакше побудувати граф(T = (T(T, M).

  4. Застосувати до графа(T пошук у ширину (алгоритм А6) з безлічі XM. Якщо знайдений (x, y)-шлях Р, x(XM, y( YM, то перейти до п. 5. Інакше до п. 7.

  5. Перетворити графT,

замінивши в ньому кожну дугу шляху Р на зворотню. Нехай

[ шляхом зміни М уздовж ланцюга, що збільшує, знайдене нове паросполучення в T T = (X, Y, U), XM ( X, YM ( Y - підмножини вершин Т Т, не насичених новим паросполученням].

  1. Якщо XM = YM = (, то кінець [безліч усіх таких ребер xy, x ( X, y ( Y і (y, x) – дуга графа(Т, складає зроблене паросполучення мінімальної ваги у вихідному графі G]. Інакше перейти до п. 4.

  2. Нехай X( ( X і Y( ( Y – підмножина вершин графа(Т, що одержала позначки в результаті пошуку в ширину (у п. 4). Серед ребер графа G, що мають вид xy, x ( X(, y ( Y – Y(, знайти ребро мінімальної ваги. Нехай ??– вага цього ребра.

  3. Модифікувати ваги дуг графа G, застосувавши до нього операцію (X(,Y(,().

  4. Модифікувати граф(T додавши до нього всі такі дуги (x, y), що x ( X(, y ( Y – Y(, w(x, y) = 0, і видаливши всі такі дуги (x, y), що x ( X – X(, y ( Y(. Перейти до п. 4.

Займемося тепер обґрунтуванням алгоритму А9. Корективность пп. 1 – 3 не викликає сумнівів. Легко бачити також, что кожний з цих пунктів можна виконати за час

І нші пункти алгоритму розглянемо більш докладно.

Кожне виконання п. 5 збільшує на одиницю число вершин

О тже, цей пункт виконується не більш n раз. Наша найближча мета – показати, що після виконання пп. 4, 6 – 9 не більш ніж n раз підряд обов'язково відбудеться перехід до п. 5., тобто очевидне виконання п. 4 закінчиться відшуканням шляху Р. Розглянемо докладніше пп. 7 – 9. Після закінчення п. 4 і переходу до п. 7 кожна дуга графа(T інцидентна принаймні одній вершині безлічі (X – X() ( Y(. Це відразу випливає з твердження 77.4. Таким чином, кожне ребро нульової ваги в графі G інцидентно однієї з вершин цієї безлічі. З іншого боку, оскільки XM ( (, Y M ( (, те X( ( X, Y( ( Y. Тому з правила вибору величини ??в п. 7 випливає, що ??> 0. Після модифікації графу G у п. 8 ваги його ребер залишаться невід’ємними (це випливає з правила вибору ?). У результаті наступної модифікації графу(T у (п. 9) володіє двома важливими властивостями. По-перше, вилучені дуги цього графа спрямовані від непомічених вершин частки Х. Тому усі вершини, досяжні з ХМ у “старому” графі(T досяжні з цієї безлічі й у “новому” графі(T. По-друге, додані дуги спрямовані від позначених вершин частки Х к непоміченим вершинам частки Y. Таким чином, застосування пошуку в ширину до модифікованого графа(T (п. 4) приведе до того, що додатково буде позначена принаймні одна вершина частки Y. Оскільки | Y | = n, то після виконання пп. 4, 7 – 9 не більш ніж у n раз підряд позначеної зробить деяка вершина безлічі YM , тобто буде знайдений шлях Р, і потім піде виконання п. 5. Як уже було показано, п. 5 (а виходить, і п. 6) виконується не більш n раз. Тому кожний із пп. 4, 7 – 9 виконується не більш

р аз.

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