Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Diskr_Mat(Fadeev(21)).docx
Скачиваний:
161
Добавлен:
25.02.2016
Размер:
2.37 Mб
Скачать

Алгоритм построения совершенного паросочетания в полном нагруженном двудольном графе.

Пусть полный двудольный с нагруженными ребрами граф

G = Kn , n = (X, Y, E), где вершины X = { x1, …, xn }, Y = { y1, …, yn }, ребра

E = {eij = (xi , yj ): i, j = 1, 2,…, n }, веса ребра eij задаются n х n – матрицей

A = [aij], в котором вес ребра eij равен aij . Полный двудольный граф G всегда имеет совершенное паросочетание (обозначим его через СПС). Далее выполнить следующее.

Пометить вершины из G числами по правилу: xi X ui = max aij (это максимумы чисел соответствующих строк матрицы А) и yj Y vj = 0. Для любого ребра aij выполняется aij ui + vj . Взять в G исходное паросочетание P = .

1. Построить подграф G´ графа G, содержащий все вершины в G и все ребра из G, для которых ui + vj = aij . Перейти к п. 2.

2. Взять вне P некоторую вершину. Методом чередующихся цепей (как это делалось в предыдущей задаче) найти P – увеличитель и построить новое паросочетание в G, у которого ребер больше, чем в P. Далее построить в G´ дерево T всех возможных чередующихся цепей (как в предыдущей задаче). Перейти к п. 3.

3. Вычислить Δ = max (ui + vj aij ) по всем xi T, yj T. Изменить пометки вершин по правилу: xi T ui := ui – Δ, yj T vj := vj + Δ. Перейти к пункту 4.

4. Если построенное P есть СПС для G, то алгоритм заканчивает работу. Если нет, то перейти к пункту 1.

Решение:

y1 y2 y3 y4

┌ ┐

X1 y1 x1 0 3 4 3

W = x2 3 6 7 6

x3 4 7 8 7

x2 y2 x4 3 6 7 6

x3 y3

x4 y4

Рис. 1.

Шаг 0. Пометим вершины x1 ,…, x4 , y1 ,…, y4 соответственно числами

u1 = 4, u2 = 7, u3 = 8, u4 = 7, v1 = v2 = v3 = v4 = 0. Возьмем в G исходное паросочетание P0 = .

Шаг 1. 1. Подграф G1 = {e13 , e23 , e33 , e43}, ибо 4 = w13 = u1 + v3 = 4 + 0 = 4 ,

7 = w23 = u2 + v3 = 7+0 = 7, 8 = w33 = u3 + v3 = 8+0 = 8, 7 = w43 = u4 + v3 = 7+0 = 7. Переход к пункту 2.

2. Вершина x1 P0 . С1 = [x1 , y3] = {e13} есть чередующаяся цепь в G с корнем в x1 . Для G паросочетание P1 = (P0C1) (C1P0) = {e13}. Вершина x2 P1 . Дерево T1 всех чередующихся цепей G1 с корнем x2 на рис. 2. Переход к пункту 3.

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