• Nenhum resultado encontrado

Cap´ıtulo 1

1.3 Algoritmo de Kuhn-Munkres

No problema anterior, n˜ao h´a distin¸c˜ao, por parte da empresa, entre os trabalhadores qua-lificados para uma determinada tarefa. Mas existem casos em que a empresa necessita ter em conta a competˆencia do trabalhador para desenvolver as tarefas para as quais est´a qualificado. Assim, considere-se que uma empresa tem n tarefas distintas x1, x2, ..., xn para serem desempenhadas e tem dispon´ıveis n trabalhadores distintos y1, y2, ..., yn, em que cada um deles est´a qualificado para uma ou mais dessas tarefas e cada trabalhador tem um certo n´ıvel de competˆencia para desempenhar cada tarefa para a qual est´a qualifi-cado. O objectivo neste problema ´e obter uma correspondˆencia trabalhador-tarefa, com n pares, tendo em conta as competˆencias dos trabalhadores, de forma a que estas sejam as melhores poss´ıveis, o que vai ser traduzido por maximixar a “soma” das competˆencias dos trabalhadores atribu´ıdos `as tarefas dispon´ıveis.

O problema apresentado pode ser modelado por um grafo bipartido completo G = (V, A), tal que V = X ˙∪ Y , em que X ´e o conjunto das tarefas e Y ´e o conjunto dos trabalhadores. Um grafo bipartido G = (V, A), com V = X ˙∪Y , diz-se completo se, para todo o v´ertice x ∈ X e y ∈ Y a aresta xy est´a em A. Para este problema, h´a que acrescentar uma informa¸c˜ao extra, `a qual se chama peso nas arestas. Este peso ´e representado pela fun¸c˜ao f : A → Z+0, tal que f (xiyj), com xi ∈ X, yj ∈ Y e xiyj ∈ A, ´e a competˆencia que o trabalhador yj tem para realizar a tarefa xi; tal como se conclui da defini¸c˜ao da fun¸c˜ao f , a competˆencia de um trabalhador para uma determinada tarefa ´e representada por um n´umero inteiro n˜ao negativo podendo existir trabalhadores com a mesma competˆencia para desempenhar uma determinada tarefa. No entanto, nenhum trabalhador tem a mesma competˆencia para desempenhar tarefas diferentes. O objectivo do problema ´e encontrar em G um matching completo cuja soma dos pesos nas arestas ´e m´aximo, a que se chamar´a matching optimal .

algoritmo baseia-se no facto de, usando uma etiquetagem conveniente dos v´ertices a partir do peso nas arestas, se poder assegurar que certos matchings s˜ao optimais. Para perceber o algoritmo, vai-se definir essa equiquetagem dos v´ertices e os matchings definem-se a partir dela.

Dado um grafo bipartido G = (V, A), com V = X ˙∪ Y , com pesos nas arestas definidos atrav´es da fun¸c˜ao f : A → Z+0, uma etiquetagem conveniente dos v´ertices ´e uma fun¸c˜ao l : V (G) → R, tal que, para todo x ∈ X e todo y ∈ Y , l (x) + l (y) ≥ f (xy), em que l (v) ´e a etiqueta do v´ertice v. Dada uma etiquetagem conveniente dos v´ertices l num grafo G, denota-se por Al o seguinte conjunto

Al= {xy ∈ A : l (x) + l (y) = f (xy)} .

Defina-se ainda Gl como sendo o grafo cujo conjunto das arestas ´e Al e o conjunto dos v´ertices ´e V (G). Com o resultado seguinte, ir´a perceber-se de que forma o grafo Gl ajuda na constru¸c˜ao de um matching optimal em G.

Teorema 1.3.1. Seja l uma etiquetagem conveniente dos v´ertices do grafo bipartido com-pleto G = (V, A) com peso nas arestas. Se Gl cont´em um matching completo M0, ent˜ao M0 ´e um matching optimal de G.

Demonstra¸c˜ao. Sejam G = (V, A) um grafo bipartido completo com peso nas arestas e l uma etiquetagem conveniente dos v´ertices de G. Suponha-se que Gl cont´em um matching completo M0. Como V (Gl) = V (G), M0 tamb´em ´e um matching completo de G. Da defini¸c˜ao de Gl, sabe-se que l (x) + l (y) = f (xy), para todo xy ∈ M0. Represente-se por f (A0) a soma de todos os pesos das arestas do subconjunto A0 ⊆ A; tem-se ent˜ao que

f (M0) = X

e∈M0

f (e) =X

v∈V

l (v)

uma vez que M0 ´e um matching completo, isto ´e, todos os v´ertices de V (G) s˜ao M0 --saturados, existindo apenas uma aresta de M0que lhes ´e incidente e M0 ⊆ Al. Considere-se

agora M um matching completo qualquer em G; ent˜ao f (M ) = X e∈M f (e) ≤X v∈V l (v)

uma vez que, para todo xy ∈ A, f (xy) ≤ l (x) + l (y). Tem-se ent˜ao que f (M ) ≤ f (M0), para qualquer outro matching completo M , pelo que M0 ´e um matching optimal.

Assim sendo, basta encontrar um matching completo em Gl, j´a que esse matching ´e optimal em G. Vai-se ver agora uma descri¸c˜ao do algoritmo de Kuhn-Munkres, para a obten¸c˜ao de matchings optimais. Considere-se ent˜ao um grafo G com peso nas arestas e defina-se a partir deste uma etiquetagem conveniente dos v´ertices l, que determina o grafo Gl; determina-se um matching M arbitr´ario neste grafo e aplica-se o algoritmo H´ungaro para se determinar um matching completo. Se Gl admitir um tal matching, ent˜ao este ´

e optimal em G, pelo teorema anterior. Caso contr´ario, o algoritmo H´ungaro determina um matching M0 que n˜ao ´e completo, por existir em Gl um conjunto S ⊆ X tal que |NGl(S)| < |S|. Ou seja, existe em Gl uma ´arvore H, M0-alternada, que n˜ao cont´em qualquer caminho M0-aumentativo. H´a ent˜ao que alterar l para uma nova etiquetagem conveniente dos v´ertices ˆl de forma a que Gˆl contenha M0 e H e permita que esta ´arvore “cres¸ca” de forma a admitir um caminho M0-aumentativo em Gˆl. Seja T = NGl(S); para obter ˆl, h´a que calcular αl determinado por

αl= min

x∈S y /∈T

{l (x) + l (y) − f (xy)} ;

vai-se ent˜ao substituir l pela etiquetagem conveniente dos v´ertices definida pela express˜ao seguinte          l (v) − αl, se v ∈ S l (v) + αl, se v ∈ T l (v) , outros casos

Note-se que αl > 0, pois este valor ´e apenas calculado para arestas xy ∈ A (G) tais que x ∈ S e y /∈ T , pelo que xy /∈ Gl, ou seja, l (x) + l (y) 6= f (xy); conclui-se ent˜ao que se obt´em uma etiquetagem distinta da anterior. A obten¸c˜ao de uma nova etiquetagem ´e repetida tantas vezes quantas as necess´arias at´e que Gl admita um matching completo.

Vai-se agora aplicar este algoritmo ao exemplo seguinte, para que se perceba como fun-ciona. O grafo bipartido em causa, G = (X ˙∪ Y, A), tem dez v´ertices (cinco em cada uma das parti¸c˜oes X e Y ) e, tal como ´e exigido para este problema, ´e um grafo completo com peso nas arestas. Para que seja mais percept´ıvel os valores que toma a fun¸c˜ao peso, vai-se tomar uma matriz P quadrada de dimens˜ao 5 onde estes s˜ao apresentados: a linha i da matriz corresponde `a tarefa xi ∈ X, a coluna j ao trabalhador yj ∈ Y e a entrada da matriz P que corresponde `a intersec¸c˜ao da linha i com a coluna j ´e o peso da aresta xiyj (com 1 ≤ i, j ≤ 5). A matriz P para este exemplo ´e a seguinte:

P =            3 5 5 4 1 2 2 0 2 2 2 4 4 1 0 0 1 1 0 0 1 2 1 3 3           

O primeiro passo ´e estabelecer uma etiquetagem conveniente dos v´ertices, l, e determinar Gl. Vai-se escolher para l a seguinte fun¸c˜ao:

l (v) =   

maxy∈Y f (vy) , se v ∈ X

0, se v ∈ Y

Tendo em conta esta fun¸c˜ao l, a etiquetagem conveniente dos v´ertices para G est´a repre-sentada a seguir com a respectiva matriz P . Do lado direito da linha i est´a representado l (xi) e por baixo de cada coluna j est´a representado l (yj).

           3 5 5 4 1 2 2 0 2 2 2 4 4 1 0 0 1 1 0 0 1 2 1 3 3            5 2 4 1 3 0 0 0 0 0

Daqui vem que Gl ´e o grafo representado na figura 1.13.

Figura 1.13: O grafo Gl.

Pelo que foi feito no exemplo do problema anterior (de obten¸c˜ao de matchings maximais num grafo bipartido), sabe-se que este grafo n˜ao cont´em qualquer matching completo, j´a que NGl({x1, x3, x4}) = {y2, y3}; o matching final obtido foi M = {x1y2, x2y1, x3y3, x5y5} e a ´arvore H sem caminhos M -aumentativos ´e a apresentada na figura 1.12. H´a ent˜ao que mudar a etiquetagem conveniente dos v´ertices, consoante ´e explicado na descri¸c˜ao do algoritmo. Ou seja, para cada aresta xy de G, com x ∈ {x1, x3, x4} e y /∈ {y2, y3}, h´a que calcular o valor de l (x) + l (y) − f (xy) e escolher o menor deles. Para o problema em causa estes valores s˜ao apresentados na matriz seguinte, em que cada linha i corresponde a uma tarefa xi e cada coluna j a um trabalhador yj.

           2 − − 1 4 − − − − − 2 − − 3 4 1 − − 1 1 − − − − −           

Tem-se ent˜ao que αl = 1, obtendo-se, assim, a seguinte etiquetagem:            3 5 5 4 1 2 2 0 2 2 2 4 4 1 0 0 1 1 0 0 1 2 1 3 3            4 2 3 0 3 0 1 1 0 0

sendo o grafo Gl correspondente o representado na figura 1.14.

Figura 1.14: O grafo Gl associado `a nova etiquetagem conveniente dos v´ertices.

Aplicando o algoritmo H´ungaro a este grafo, obt´em-se o seguinte matching completo para Gl: M = {x1y4, x2y1, x3y3, x4y2, x5y5}; tem-se assim um matching maximal para G.

´

E de notar que tamb´em se pode ter o seguinte matching completo de Gl: M0 = {x1y4, x2y1, x3y2, x4y3, x5y5} .

Este matching M0 ´e igualmente maximal em G.

1.4 Conclus˜ao

No decorrer deste cap´ıtulo, apresentou-se a primeira caracteriza¸c˜ao de matchings completos em grafos bipartidos, o teorema de Hall, bem como a respectiva prova; contudo, esta

n˜ao ´e construtiva. Assim, de seguida apresentou-se o algoritmo H´ungaro, que ´e uma forma de se encontrar um matching completo num grafo bipartido, ou mostrar que um tal matching n˜ao existe. Este algoritmo tem por base um resultado que caracteriza os matchings maximais de um grafo bipartido, o teorema de Berge. No seguimento deste algoritmo (associado `a resolu¸c˜ao de um problema de atribui¸c˜ao de tarefas), foi apresentado o algoritmo de Kuhn-Munkres, o qual tem como objetivo encontrar matchings optimais num grafo bipartido completo com peso nas arestas; este algoritmo est´a tamb´em associado `

a resolu¸c˜ao de problemas de atribui¸c˜ao de tarefas tendo em conta a competˆencia dos trabalhadores, que tem por base um resultado que caracteriza os matchings optimais de um grafo bipartido com peso nas arestas a partir de um matching completo num grafo a ele associado com uma etiquetagem conveniente dos v´ertices.

´

E natural agora formular, no seguimento dos problemas anteriores, a quest˜ao que deu origem `a no¸c˜ao de estabilidade em matchings tratada neste trabalho.

Consideram-se de novo dois conjuntos distintos que podem ser interpretados como traba-lhadores e empresas, estudantes e universidades, hospitais e internos, professores e escolas, homens e mulheres, etc. ´E natural admitir que cada elemento de cada conjunto estabelece uma ordem de preferˆencias estrita para os elementos do outro conjunto que considera aceit´aveis. Assim, o objectivo ser´a caracterizar um bom matching entre os dois conjuntos, isto ´e, um matching que de algum modo compatibilize da melhor maneira as preferˆencias dos elementos dos dois conjuntos. A no¸c˜ao que vai traduzir essa ideia ´e a de matching est´avel, que ´e tratada no cap´ıtulo seguinte.

Documentos relacionados