Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 - Графы / Лекция 23 Двудольные графы.doc
Скачиваний:
132
Добавлен:
09.04.2015
Размер:
246.27 Кб
Скачать

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. Реализуем некоторое паросочетание, выделяя полужирным шрифтом одну и только одну 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. Помечаем крестиком все строки и все столбцы, которые содержат 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, выделенной шрифтом, в этой строке ищем…

Если не можем больше найти столбца, с помощью которого можно увеличить число выделенных шрифтом 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

В общем случае может быть несколько возможных решений.