
- •Курсовая работа по курсу «Комбинаторика»
- •Курсовая работа по курсу «Модулярная арифметика»
- •Курсовая работа по курсу «Графы»
- •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.