240 likes | 491 Views
Паросочетания и задача о назначениях. Определения. Задан граф G = ( V , E ). Подмн. ребер M E является паросочетанием в G , если v V инцидентно 1 ребра из M . П., покрывающее все вер. графа, наз. совершенным .
E N D
Паросочетания и задача о назначениях
Определения Задан граф G = (V, E). Подмн. ребер M E является паросочетанием в G, если v V инцидентно 1 ребра из M. П., покрывающее все вер. графа, наз. совершенным. Вершинным покрытием графа наз. такое подмн. вершин R V: ребро e E инцидентно 1 вершине из R. Двойственная взаимосвязь: пар. M и вер. п. R |M| |R|. Действительно, пусть M = {(i1, j1), …,(ik, jk)} паросочетание. Тогда в вер. покрытии R должна быть хотя бы одна из вершин каждой пары {is, js}, s = 1, …, k. |R| k = |M|.
Постановка задачи и определения max{|M| : M паросочетание в G} (1) Назовем путь P=v0,e1,v1,e2,...,ep,vp (viV, ejE) чередующимся относительно паросочетания M, если: 1) нечетные ребра e1,e3,...,eoddM; 2) четные ребра e2,e4,...,eevenM; 3) вершина v0не инцидентна () паросочетанию M. Чередующийся путь наз. аугментальным (увеличивающим), если для него доп.: 4) количество ребер p нечетно, и вершина vpM v0 v1 v2 v3 v4 v5
Аугментальный путь Лемма.Пусть задано п. M и аугментальный путь P. Тогда симметричная разность M =(MP)\(MP) является паросочетанием мощности |M |>|M|. Доказательство. Т.к. v0,vpM и путь P чередующийся, то M паросочетание. А т.к. p нечетно, то |P(E\M)|=|PM|+1. |M |=|M|+1.
Max паросочетания Лемма.Если в графе не аугментального относительно M пути, то M является max паросочетанием. Доказательство. Предположим противное: M не max п. Тогда п. M: |M |>|M|. Рассмотрим граф с ребрами (MM)\(MM). Степень каждой вершины этого графа может быть равна 0,1,2. любая связная компонента этого графа путь или цикл. В любом цикле ребра из M и Mчередуются и, , цикл имеет четное количество ребер и содержит одинаковое количество ребер из M и M. Т.к. |M |>|M|, то путь, содержащий > ребер из M,чем из M, причем этот путь содержит нечетное число ребер и потому является аугментальным. M M (MM)\(MM)
Max паросочетание в двудольном графе G=(V1,V2,E), V=V1V2. Имеется нек. п. M. Нужно найти либо ауг. путь, либо показать, что такого пути нет, и значит, Mmax. Алг. начинает работу с пометки в-н в V1 M. 1-е ребро чер. пути M, и все ребра, инц. помеченным в. из V1, включаются в строящиеся пути. Конечные в. таких ребер, V2, получают метки. 2-е ребро чер. пути M, и все ребра из M, инц. помеченным в. из V2, включаются в чер. пути. Непом. в. из V1, кот. являются конц. для чет. ребер, также помечаются. И т.д. Пометка вершин прекращается, когда либо помеченная вершина из V2M, значит, найден аугментальный путь, либо ни 1 в. > не может быть помечена, и значит, аугментального пути не .
Алгоритм Шаг 0. Имеем п. M. Все в. не помечены и не просмотрены. Шаг 1. (Пометка вершин). 1.0. Приписать метку “” каж. непом. и M в. из V1. 1.1. Если нет не просм. в., то - на шаг 3. Иначе, выбрать пом. и не просм. в.i. Если iV1, то - на шаг 1.2.Если iV2, то - на шаг 1.3. 1.2. (Просмотр помеч. в. iV1). (i,j) M если jV2не помеч., то приписать j метку “i”. Теперь i просмотрена. На шаг 1.1. 1.3. (Просмотр помеч. в. iV2). Если iM, то - на шаг 2. В прот. сл., (j,i)M если jV1не помеч., то приписать j метку “i”. Теперь i просмотрена. На шаг 1.1. Шаг 2. (Аугментация). Аугм. путь P найден. Использовать метки, начиная с jV2, для восстановления этого пути. Положить M=(MP)\(MP). Удалить все метки. На шаг 1. Шаг 3. (Не аугм. пути). Стоп.
Корректность алгоритма Пусть после остановки алгоритма: мн. помеченных вершин доли Vi мн. не помеченных вершин Теорема.После остановки алгоритма 1) мн. является вер. покрытием гр. G; 2) |M| = |R|, и п. M max. Доказательство.1) Т.к. на шаге 1.2 не удается пометить ни 1 в. мн. V2, то не ребер из покрывает мн. в все ребра графа. инц. ребру eM 2) Т.к. аугм. пути нет, то каж. в. из мн. с другим концом в вершине из множества Каж. в. мн. инц. р. eM, т.к. иначе она была бы помечена на шаге 1.0 сим. “”. Др. в. р. e т.к. в прот. сл. она была бы помечена на шаге 1.2. Но |R| |M||R| = |M|
Пример Начальное п. M = {(3, 8), (5, 10)} (жирные ребра) 6 1 6 1 8 * 3 7 2 7 2 * * 8 1 8 3 8 3 2 9 5 4 9 4 * 10 5 10 5 10 4 M’={(1,8),(3,7),(4,10),(5,9)} R = {3,4,5,8} M={(,8),(5,10)}}
Паросочетание max веса Взвешенный граф G=(V1,V2,E), каж. р. e E приписан вес ce. Требуется найти паросочетание max веса. Из свойства абсолютной унимодулярности для построения паросочетания max веса достаточно решить след. задачу ЛП где (i)={eE : e=(i, j), jV} – мн. ребер, инц. в.i.
Задача о назначениях Если |V1|=|V2|=n и требуется найти совершенное паросочетание max веса, то получаем задачу о назначениях: ПЗ Двойственная задача: ДЗ ui+vj cij, i,j = 1, …, n.
Свойства задачи Лемма. и зн. ц.ф. z ПЗ с весами cij отличается от зн. функционала этой задачи с весами на постоянную величину. Доказательство. доп. решения ПЗ имеем: разница функционалов равна константе Следствие.Решение ПЗ с весами cijopt оно opt для з. с весами
Свойства задачи Лемма.Если для u,vRn и xBnn выполняются условия: i,j = 1, …, n; 1) 2) xij=1 только в случае, когда то решение x opt для ПЗ, и opt зн. ц.ф. равно i,j, то Доказательство. Т.к. По условию 2) зн. функционала на решении x равно оно opt. Из следствия opt решения x и для задачи с весами cij, и функционал на нем равен Замечание.В лемме представлена связь решений двойственных задач. 1) – это требование доп. двойственных переменных u и v. 2) – это условие дополняющей нежесткости.
Прямо-двойственный метод Полный 2-дольный графа G=(V1,V2,E), V1={1,...,n} и V2={1,...,n}. Во время работы алг., двойственные переменные u и v всегда остаются допустимыми, т.е. В графе ищем max паросочетание. Если его мощность = n, то стоп. Иначе, на двойственном шаге меняем значения двойственных переменных.
Алгоритм Шаг 0. Пусть u, v нач. зн. дв. переменных и Найти max п.M* в графе Если |M*|=n, то M* – opt реш. задачи о назначениях. В прот. сл. запомнить M=M*, а также метки вершин мн. и на шаг 2. Шаг 1. Имеем мн. п. M и мн. пом. вершин Используя имеющиеся метки вершин и п. M, построить max п. M*. Если |M*| = n, то M* – opt реш. задачи о назначениях, алгоритм останавливается. В прот. сл. запомнить M=M* и мн. Шаг 2. (Двойственный шаг). Изменить зн. дв. пер., положив: ui=ui – , vj=vj+ , На шаг 1.
Утверждения Лемма.После вып. шага 1 справедливо неравенство Лемма.На двойственном шаге > 0. Лемма.После изменения зн. дв. переменных, получаем: и новое решение дв. допустимо.
Утверждения Следствие. Зн. ц.ф. ДЗ в рез. изменения зн. дв. пер-х на шаге 2 уменьшится на увеличивается. Следствие. В результате дв. шага величина Лемма.Приведенный алг. построения opt решения для задачи о назначениях имеет трудоемкость O(n4). Доказательство. Т.к. в рез. шага 2 1 ребро добавляется в мн., то общее число дв. шагов величиной O(n2). Трудоемкость шага 2 = O(|E|). Сложность шага 1 также ограничена величиной O(|E|).
Пример Пусть 1 доп. дв. решение: u1=(0,0,0,0), v1=(27,19,12,8) и Во 2 строке мат. все элементы < 0 u2 = (0, 2, 0, 0), v2 = (27, 19, 12, 8)и w = 64
Пример u = (0, 4, 0, 2) v = (27, 19, 14, 8) w = 62
Задача о паросочетании max веса в 2-дольном графе Сведение задачи о паросочетании max веса в 2-дольном графе G = (V1, V2, E) к задаче о назначениях осуществим след. образом. Пусть |V1| = |V2| + a, a > 0. Добавим a вершин в мн. V2 и дополним граф до полного 2-дольного графа G с одинаковым количеством вершин в обеих долях, положив веса добавленных ребер = 0. Применим алг. для решения задачи о назначениях для графа G. Ребра, вошедшие в opt решение и имеющие >0 веса, определяют паросочетание max веса в исх.2-дольном графе G.
Транспортная задача и Венгерский метод (Harold Kuhn, 1955) One of the first algorithms ofCO I heard about was the Hungarian method which has been viewed by manyas a prototype of algorithm design and efficiency. Harold Kuhn presented itin 1955 in [3]. Having used ideas and results of J. Egerv´ary and D. K˝onig,he gave his algorithm (generously) the name Hungarian method.