
24.2.7 Паросочетание двудольного графа
Рассмотрим
двудольный граф G(X,Y,E)
и два таких подмножестваи
,
что |A| = |B|.
Взаимно однозначное отображение AнаBназывается паросочетанием отображающимAвYилиAнаB. На языке графов паросочетание – это подмножество несмежных ребер (дуг) двудольного графа.
Условие существования паросочетания.
Паросочетание,
отображающее XвY,
существует тогда и только тогда, когда
Это
значит, что подмножество Bдолжно быть не меньше любого подмножестваAX.
В качестве подмножестваAрассматриваются все сочетания из |X|
вершин по 1, 2, 3,…, |X|
вершин.
Дефицитом двудольного графа G(X,Y,E) называется число
Для графа рис. 24.2 имеем
|{x1}| – |Г{x1}| = 1 – 3 = – 2, |{x2}| – |Г{x2}| = 1 – 2 = – 1,…,
|{x1,x2}| – |Г{x1,x2}| = 2 – 5 = – 3, …, |{x4,x6}| – |Г{x4,x6}| = 2 – 1 = 1,…,
|{x1,x2,x3,x4,x5,x6}| – |Г{ x1,x2,x3,x4,x5,x6}| = 6 – 5= 1.
Следовательно, дефицит графа
=1.
Максимальное паросочетание – это паросочетание V0с максимально допустимым числом ребер (дуг).
Для отыскания максимального паросочетания по матрице смежности графа проделаем следующее.
Реализуем некоторое паросочетание, выделяя полужирным шрифтом одну и только одну 1 в строке и столбце (см. табл. 24.6).
Таблица 24.6
|
y1 |
y2 |
y3 |
y4 |
y5 |
y6 |
y7 |
x1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
x2 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
x3 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
x4 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
x5 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
x6 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
Помечаем крестиком все строки и все столбцы, которые содержат 1, выделенные полужирным шрифтом (табл. 24.7).
Таблица 24.7
|
y1 |
y2 |
y3 |
y4 |
y5 |
y6 |
y7 |
|
x1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
|
x2 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
|
x3 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
|
x4 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
|
x5 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
|
x6 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
Рассмотрим непомеченные столбцы.
В непомеченном столбце выбираем 1, которая одновременно принадлежала бы помеченной строке. Находим в этой строке 1, выделенную полужирным шрифтом, и в соответствующем ей столбце ищем 1, которая принадлежала бы непомеченной строке.
Если такая единица есть, то число выделенных полужирным шрифтом единиц можно увеличить. В противном случае ищем 1 в помеченной строке, по 1, выделенной шрифтом, в этой строке ищем…
Если не можем больше найти столбца, с помощью которого можно увеличить число выделенных шрифтом 1, то единицы, выделенные полужирным шрифтом, дают максимальное паросочетание.
В рассматриваемом примере столбец y7не помечен. Он содержит 1 в клетке (x3,y7). В строкеx3единица, выделенная полужирным шрифтом, стоит в клетке (x3,y6). В столбцеy6в клетке (x5,y6) стоит 1 и соответствующая ей строкаx5не помечена. Следовательно, возможно увеличить число единиц, выделенных полужирным шрифтом. Выделяем полужирным шрифтом 1 в клетке (x3,y7), а перед этим запишем обычным шрифтом 1 в клетку (x3,y6), и выделяем полужирным шрифтом 1 в клетке (x5,y6) табл.24.8.
Таблица 24.8
|
y1 |
y2 |
y3 |
y4 |
y5 |
y6 |
y7 |
|
x1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
|
x2 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
|
x3 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
|
x4 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
|
x5 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
|
x6 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
Нетрудно проверить, что процедуру нельзя продолжить. Единицы, выделенные полужирным шрифтом, дают максимальное паросочетание
V0 = {(x1,y2), (x2,y1), x3,y7), (x5,y6), (x6,y3)}.
На рис. 24.5 приведен граф, соответствующий матрице табл. 24.8, на котором максимальное паросочетание выделено толстыми линиями.
Рисунок
24.5
В общем случае может быть несколько возможных решений.