Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
15.4. Максимальные паросочетания в графеВ этом разделе мы рассмотрим задачу построения максимального паросочетания в графе. Сначала мы обсудим основной подход к построению такого паросочетания, предложенный в работе [15.28]. Затем опишем алгоритм Габова [15.29], который является эффективной реализацией подхода Эдмондса. Более эффективный алгоритм для случая двудольных графов обсуждается в разд. 15.5. Приложения, связанные с задачей об оптимальном назначении и задачей о расписании, рассматриваются в разд. 15.6. 15.4.1. Подход ЭдмондсаАлгоритм Эдмондса основан на теореме Бержа (8.20), в которой устанавливается, что паросочетание максимально тогда и только тогда, когда не существует добавляющего пути по отношению к этому паросочетанию. Поэтому поданному графу и начальному паросочетанию М мы можем получить максимальное паросочетание, действуя следующим образом. Найдем добавляющий путь Р по отношению к М. Получим паросочетание
Рис. 15.10. Чтобы найти добавляющий путь по отношению к паросочетанию М, мы обязательно должны начать наш поиск с ненасыщенной вершины, например и. Если существует добавляющий путь Р из и к и (отметим, что вершины и в вершину v. Отсюда следует, что поиск добавляющего пути должен проводиться только в ограниченной группе вершин, а именно тех вершин, до которых существует чередующийся путь четной длины из Например, пусть
Рис. 15.11. Образование «цветка». Другими словами, предположим, что «1 не смежна ни с одной из выбранных вершин. Если Если в алгоритме Эдмондса образуется «цветок», то все его вершины заменяются одной. Новая вершина называется псевдовершиной. Все вершины, которые были смежны с одной или более вершинами «цветка», будут смежны с этой новой вершиной. Таким образом, мы получаем сокращенный граф. Эта процедура повторяется всякий раз, когда обнаруживается «цветок». Если в результате мы закончим, получив некоторый сокращенный граф, но не получив добавляющего пути, то это означает, что не существует добавляющего пути по отношению к текущему паросочетанию и в исходном графе. Следовательно, текущее паросочетание максимально. С другой стороны, если мы обнаруживаем добавляющий путь в каком-либо сокращенном графе, то, очевидно, следует, что существует добавляющий путь Сжатие и восстановление «цветков», требуемые в алгоритме Эдмондса, могут привести к сложности выполнения алгоритма Габов устранил операции расширения и сжатия, записывая структуры «цветков» с помощью эффективной процедуры расстановки меток и соответствующих массивов. Это позволило достичь сложности 15.4.2. Метод ГабоваВначале мы обсудим главную стратегию и определим различные массивы, используемые в алгоритме Габова. Пусть дан граф, имеющий Алгоритм Габова строит множество паросочетаний, начиная с начального, которое может быть пустым. Он завершается получением максимального паросочетания. Паросочетание хранится в массиве МАТЕ. Этот массив имеет по одному элементу для каждой вершины. Ребро Вершина v называется внешней по отношению к фиксированной ненасыщенной вершине и и тогда и только тогда, когда существует чередующийся путь четной длины от и к у. Ясно, что этот путь В массиве LABEL каждой вершине соответствует элемент массива. При этом элемент массива, соответствующий внешней вершине у, используется для определения чередующегося пути Начальная метка. Начальная вершина и имеет начальную метку. В этом случае LABEL Метка вершины. Если LABEL Метка ребра. Если LABEL LABEL Алгоритм использует также массив FIRST. Если у — внешняя вершина, то FIRST Массив, называемый OUTER, используется для хранения внешних вершин, встречающихся при поиске добавляющего пути. Граф поиска растет во внешних вершинах в порядке их появления. В этих внешних вершинах производится поиск в ширину. Алгоритм Габова (как он представлен ниже) состоит из трех процедур: PROC-EDMONDS, PROC-LABEL и PROC-REMATCH. PROC-EDMONDS является главной процедурой. Она начинает поиск добавляющего пути из каждой ненасыщенной вершины, просматривает ребра графа, решая приписать метки или расширить паросочетание. При обнаружении добавляющего пути (шаг ЕЗ в алгоритме 15.5) вызывается PROC-REMATCH. Эта процедура вычисляет новое паросочетание, которое имеет на одно ребро больше текущего паросочетания. Если при рассмотрении ребра 1. Значением переменной JOIN является первая невнешняя вершина, которая принадлежит как 2. Все невнешние вершины, предшествующие JOIN в 3. После этого JOIN — первая невнешняя вершина как в Р Опишем алгоритм Габова. Комментарии и объяснения, соответствующие каждому шагу, приводятся в скобках. Алгоритм 15.5. Максимальное паросочетание (Габов). PROC-EDMONDS. ЕО. (Инициализация.) Пусть G — данный граф. Пронумеровать вершины графа G числами от 1 до Е1. Нахождение ненасыщенной вершины.) Положить Е2. (Выбор ребра.) Выбрать ребро Если такого ребра нет, то идти к шагу Е3. (Обнаружить добавляющий путь.) Если у не входит в паросочетание и Е4. (Образовать «цветок».) Если у — внешняя вершина, то выполнить PROC-LABEL и идти к шагу Е2. Е5. (Пометить вершину.) Положить Е6. (Выбрать новое ребро.) Идти к шагу Е7. (Прекратить поиск.) Положить LABEL L0. (Инициализация. Положить L1. (Переключение путей.) Если то поменять местами L2. (Взять не внешнюю вершину.) Положить L3. (Пометить вершины в L4. Затем положить L4. (Пометить не внешнюю вершину и.) Если L5. (Изменить FIRST.) Для каждой внешней вершины i, если FIRST L6. (Расстановка реберных меток завершается.) Конец процедуры. PROC-REMATCH. R0. (Получить добавляющий путь.) Вычислить 1. Если Иначе 2. Если R1. (Дополнить текущее паросочетание.) Получить новое паросочетание, удаляя из текущего все ребра, входящие в Следует отметить, что в вышеприведенном алгоритме поиск добавляющего пути из какой-либо вершины выполняется только однажды. Предположим, что поиск из ненасыщенной вершины и завершается без выделения добавляющего пути. Обозначим этот поиск через
Рис. 15.12. Эдмондс [15.28] показал, что мы можем игнорировать венгерский подграф И после выделения Е2. (Выбрать ребро.) Выбрать ребро... Шаг Е2 вызовет выполнение шага Вопросы, касающиеся сложности и корректности алгоритма 15.5 обсуждаются в работе [15.29]. Проиллюстрируем работу алгоритма Габова. Для графа, представленного на рис. 15.12, а, начальное паросочетание в котором показано пунктирными линиями, алгоритм Габова работает следующим образом. Начальной вершиной является вершина 10. После завершения поиска во внешних вершинах 10, 16, 13, 11 и 2 граф поиска будет таким, как показано на рис. 15.12, б. Элементы массивов LABEL и FIRST на этом этапе приведены в табл. 15.2. Массив OUTER содержит вершины 10, 16, 13, 11,2, 12, 6 и 9 в указанном порядке. Таблица 15.2
Таблица 15.3
Когда мы осуществляем поиск в вершине 12, то рассматриваем ребро (12.6) и получаем «цветок» (13, 5, 12, 6, 8, 13). Элементы массивов LABEL и FIRST изменяются следующим образом: LABEL Затем мы осуществляем поиск в вершине 9. При рассмотрении ребра (9, 5) образуется «цветок» (9, 7, 11, 4, 16, 1, 13, 8, 6, 12, 5, 9). Вновь изменяем значения элементов массивов LABEL и FIRST для некоторых вершин. Полученные значения приведены в табл. 15.3. В этот момент массив OUTER содержит вершины 10, 16, 13, 11, 2, 12, 6, 9, 5, 8, 1, 7 и 4 в указанном порядке. Во всех вершинах массива OUTER вплоть до 9 поиск уже был произведен. Поэтому он продолжается в оставшихся вершинах. Поиск в вершинах 5 и 8 не добавляет каких-либо новых вершин в массив OUTER. При поиске в вершине 1 мы рассматриваем ребро (1, 15) и обнаруживаем, что вершина 15 ненасыщена. Получен добавляющий путь. Этим добавляющим путем является путь Используем процедуру, составляющую шаг
Аналогично Так как вершина 5 лежит на пути Р (12), то Таким образом, добавляющий путь имеет вид После дополнения мы получаем новое паросочетание, состоящее из ребер (15, 1), (13, 8), (6, 12), (5, 9), (7, 11), (4, 16), (3, 10) и (14,2). Так как все вершины графа насыщены в этом паросочетании, то это — максимальное паросочетание. (Фактически это совершенное паросочетание.) Эдмондс [15.33] и Габов [15.34] рассмотрели эффективный алгоритм для задачи выделения взвешенного паросочетания. Лоулер [15.9] обсуждает детально паросочетание и связанные с ним задачи.
|
1 |
Оглавление
|