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