- •Курсовая работа по курсу «Комбинаторика»
- •Курсовая работа по курсу «Модулярная арифметика»
- •Курсовая работа по курсу «Графы»
- •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 = (U , V, E) – двудольный граф. Выберем исходное паросочетание Р1 , например, одно ребро графа G. Допустим, что паросочетание
Pi = (Ui , Vi , Ei) для графа G построенно.
Построим паросочетание Pi+1 для G следующим образом.
1. Выбираем u из U не из Pi . Если такой вершины u нет, то Pi есть совершенное паросочетание. Если есть, то построим в G чередующуюся цепь μi = [u1 , v1 , u2 , v2 , …, up , vp] c u1 = u, в которой всякое ребро (ui , vi ) не принадлежит Ei , а всякое ребро (vi , ui+1 ) принадлежит Ei . Если такой цепи нет, то совершенного паросочетания граф G не имеет, а паросочетание Pi является для G максимальным (тупиковым). Цепь μi есть Pi – увеличитель.
2. Удаляем из Pi все ребра (vi , ui+1 ) и добавляем все ребра (ui , vi ) цепи μi . Получившееся паросочетание Pi+1 на одно ребро длиннее Pi . Переходим к пункту 1.
Решение:
X1 y1



y2



x2



y3


x3



y4

x4


y5


x5

y6

Рис. 1.
x1
y1
Шаг
1. Выбираем
исходное паросочетание 


P1
= {(x1
,
y1)}.
P1
–
увеличитель 


(чередующаяся цепь) (Рис. 2).
y2



x2
μ1
= [x2
,
y6]


0
y3
1 

x3
Добавляем в P1
ребро
( x2
,
y6)
(Рис. 3).


y4

x4


y5 

x5

y6

Рис. 2.
x1
y1
Шаг
2.
P2
=
{(x1
,
y1),
(
x2
,
y6)}.






μ2 = [x3 , y6 , x2 , y5]
y2
0 1 0



x2
1
0 1



Единственная единица в первой строке
y3
из
нулей и единиц означает, что

x3
соответствующее этой единицы ребро


(x2 , y6) лежит в P2 . Убираем это ребро
y4
из P2
, а
вместо него добавляем два ребра
x4
(x3
,
y6),
(x2
,
y5)
соответствующие двум

единицам второй строки из нулей и
y5
единиц. В результате получим следующее

x5
паросочетание P3
, число
ребер в котором
на одно больше, чем в P2 (Рис. 4).
y6

Рис. 3.
x1
y1
Шаг
3. P3
= {(
x1
,
y1),
( x2
,
y5),
(x3
,
y6)}.






μ3 = [x4 , y3]
y2
0 



x2
1



Добавляем в P3 ребро ( x4 , y3) (Рис. 5).
y3


x3 


y4

x4


y5


x5

y6

Рис. 4.
