- •Курсовая работа по курсу «Комбинаторика»
- •Курсовая работа по курсу «Модулярная арифметика»
- •Курсовая работа по курсу «Графы»
- •2 4 E3
- •Алгоритм построения совершенного паросочетания для двудольного графа.
- •X1 y1
- •X1 y1 Шаг 4.
- •Алгоритм построения совершенного паросочетания в полном нагруженном двудольном графе.
- •X1 y1 x1 0 3 4 3
- •4X1 y1 0 x1 x1 x2
- •7 X2 y2 0 y3 y3
- •8 X3 y3 0
- •7 X4 y4 0
- •3X1 y1 0 x2 x1 x2 x3
- •6 X2 y2 0 y2 y3 y2
- •8 X3 y3 1
- •7 X4 y4 0
- •3X1 y1 0 x3 x1 x2 x3
- •3X1 y1 0 x4 x1 x1 x3 x4
- •6 X2 y2 0 y2 y1 y4 y1
- •7 X3 y3 1 x1
- •6 X4 y4 0 y4
- •3 X1 y1 0
- •6 X2 y2 0
- •7 X3 y3 1
- •6 X4 y4 0
- •Приложение
Алгоритм построения совершенного паросочетания в полном нагруженном двудольном графе.
Пусть полный двудольный с нагруженными ребрами граф
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 = (P0 – C1) (C1 – P0) = {e13}. Вершина x2 P1 . Дерево T1 всех чередующихся цепей G1 с корнем x2 на рис. 2. Переход к пункту 3.