• Nenhum resultado encontrado

umgrafo, em que V representa o conjunto dos vértices de G e E o conjunto das é um grafo bipartido;

N/A
N/A
Protected

Academic year: 2021

Share "umgrafo, em que V representa o conjunto dos vértices de G e E o conjunto das é um grafo bipartido;"

Copied!
26
0
0

Texto

(1)

No nosso dia-a-dia existem muitas situações que podem ser representadas por um conjunto de pontos e linhas que ligam aos pares esses pontos. Por exemplo, os pontos poderiam representar cidades e as linhas as estradas entre pares destas cidades; ou os pontos poderiam representar pessoas e as linhas a ligação entre pares de pessoas que se conhecem. Ou ainda, outro exemplo, suponhamos que existem n candidatos para preencher m vagas distintas numa empresa, mas nem todos têm as competências necessárias para desempenhar qualquer uma das vagas. Esta situação pode ser representada por grafo bipartido, onde cada aresta liga um candidato a uma vaga que poderia eventualmente ocupar. A questão agora é a seguinte: é possível empregar cada candidato de tal maneira que cada um ocupa uma das vagas disponíveis, de acordo com as suas capacidades? Em teoria de grafos isso é um problema de emparelhamento de um subconjunto de vértices noutro subconjunto de vértices. Em outras palavras, um emparelhamento é um subconjunto de arestas onde não existe duas arestas incidentes a um mesmo vértice.

O primeiro estudo relacionado com emparelhamentos em grafos foi efectuado pelo matemático húngaro D. Konig que, em Abril de 1914, em Paris, no Congresso de Filosofia Matemática, apresentava uma comunicação onde referia que todo o grafo bipartido regular admitiria um emparelhamento perfeito. Desde então, têm-se desenvolvido inúmeros resultados com emparelhamentos em grafos (bipartidos ou não) com muita aplicação quer na própria teoria de grafos, quer noutras áreas da Matemática.

Dentre todos os problemas já tratados em teoria dos grafos sobre emparelhamentos, optei por, neste trabalho, abordar a questão da procura de um emparelhamento máximo num grafo bipartido. Por exemplo, suponhamos que os vértices de um grafo representam as pessoas e as arestas a possibilidade de duas pessoas se casarem, estamos interessados em responder perguntas deste tipo: "De que forma podemos realizar o maior número de casamentos, de modo a que as pessoas casem com uma das pessoas de que gostam?"

(2)

G =( EV, ) um grafo, em que V representa o conjunto dos vértices de G e E o conjunto das arestas de G;

G =( EV, ) em que V =V1V2 é um grafo bipartido;

• | X | denota o número de elementos em X (cardinalidade);

⊕ denota o ou exclusivo (também chamada de diferença simétrica) ente dois conjuntos, ou

seja, se X e Y são dois conjuntos, então XY =

(

XY

) (

\ XY

) (

= X \Y

) (

Y \ X

)

;

(3)

Um grafo G é bipartido se o conjunto de vértices V está dividido em dois conjuntos V1 e

V2, de modo que toda a aresta aE

( )

G possui um extremo em V1 e outro em V2, ou seja, não há arestas a ligar os vértices do mesmo conjunto.

Dado um grafo G =( EV, ), um emparelhamento (matching) é um subconjunto de

arestas M ⊂ tal que, quaisquer duas arestas de M não são adjacentes. (*) E

Seja M um emparelhamento de G.

Um vértice v diz-se saturado em M (ou emparelhado) se alguma aresta de M é incidente

nesse vértice; caso contrário, v diz-se livre.

Um emparelhamento M de G que sature todos os vértices de G designa-se por

emparelhamento perfeito.

Um grafo bipartido, cuja decomposição dos vértices é V1V2, diz-se completo se e só se

todo o vértice de V1 está emparelhado com um vértice de V2, ou seja, todos os vértices de V1 estão saturados.

(4)

Um emparelhamento M é máximo se não existe um emparelhamento M´ tal que

M

M′ > .

Seja M um emparelhamento de G.

Um caminho alternante (alternating) em G é um caminho cujas arestas estão

alternadamente em E\M e em M .

Um caminho aumentável (augmenting) em G é um caminho alternante, cujos extremos

são livres.

OBS: Quando estiver a considerar dois emparelhamentos diferentes M e M´, para evitar confusões, vou

escrever, por exemplo, M-alternante ou M’-alternante, para denotar caminho alternante em M ou em M´, respectivamente; o mesmo para caminhos aumentáveis.

Seja S um conjunto constituído por vértices de G.

A vizinhança de S , representada por Γ(S), é definida como sendo o conjunto de todos os

vértices de G adjacentes aos vértices de S.

Seja M um emparelhamento do grafo bipartido G e x0 um vértice livre de V1. Então, o subgrafo H de G é uma árvore alternante, com raiz no vértice x0 se:

i) H é uma árvore;

ii) x0V

( )

G , isto é, x0 pertence ao conjunto de vértices de H;

(5)

Seja G =( EV, ), M e M´ emparelhamentos de G.

Então, as componentes conexas de H =( EV, ′), em que E´é a diferença simétrica entre M e M´, são de um dos seguintes tipos:

i) ciclo de comprimento par cujas arestas pertencem alternadamente a M e a M´; ii) caminhos, com arestas pertencentes alternadamente a M e a M´, e cujos extremos são vértices que, num dos emparelhamentos, são livres.

O maior grau de um vértice de H é dois, pois, não existe mais do que uma aresta de M, nem de M´, incidentes a um vértice de H. Isso implicaria que, num dos

emparelhamentos, existisse mais de uma aresta incidente no mesmo vértice, o que

contradiz a definição de emparelhamento. Além disso, se o grau de um vértice de H for 2, então uma das arestas é proveniente de M e a outra de M´.

(6)

Este teorema é de fundamental importância para o desenvolvimento de um algoritmo para o problema de emparelhamento em grafos bipartidos. Permite caracterizar se um dado emparelhamento é ou não máximo em função da existência de um caminho aumentável entre vértices livres do grafo.

Vejamos então, o Teorema de Berge que caracteriza um emparelhamento máximo.

!

!"" de Berge, 1957

Um emparelhamento M em G é máximo se e só se não existir nenhum caminho aumentável entre dois quaisquer vértices livres.

( )

Vamos supor que existe um caminho aumentável, e seja C o conjunto de arestas desse caminho. É possível construir um emparelhamento M´ considerando, para além das arestas de M que não pertencem ao caminho aumentável, todas as arestas de C que não pertencem a M, isto é, M′ =

(

M \C

) (

C \M

)

= MC. Este emparelhamento M´tem cardinal maior que M, concretamente M′ = M +1, e, portanto, M não é um emparelhamento máximo.

( )

⇐ Suponhamos que M é um emparelhamento em G, tal que não admite um caminho aumentável em G. Queremos mostrar que M é um emparelhamento máximo.

Sejam M´ um emparelhamento máximo qualquer em G e H o subgrafo de G, tal que

(

V M M

)

(7)

Pelo Lema 1, sabemos que as componentes conexas de H podem ser:

i) ciclos de comprimento par, cujas arestas estão alternadamente em M eM´; ou

ii) caminhos cujas arestas estão alternadamente em M e M´e os vértices extremos são livres num dos emparelhamentos.

Se existir um caminho, definido em ii), cujo comprimento é ímpar, então a origem e a extremidade desse caminho são ambos livres em M ou ambos livres em M´, então tal caminho será M-aumentável ou M´-aumentável. Mas, a primeira hipótese não não acontece dado o modo como M foi definido inicialmente e o segundo também não, uma vez que M´ é um emparelhamento máximo e portanto, pela primeira parte da prova não tem caminho aumentável. Deste modo, as componentes do subgrafo H ou são caminhos de comprimento par ou ciclos de comprimento par e portanto cada uma delas envolve o mesmo número de arestas de M, como de M´. Assim, MM′ = MM′ .

Como M = MM′ + MM′ e M′ = M′−M + MM′ , pela propriedade de intersecção de conjuntos, dado que M e M´ são subconjuntos do conjunto das arestas E(G). Tem-se então que, M = M′ e portanto M é máximo.

A demonstração deste teorema envolve uma técnica que pode ser usada para encontrar um emparelhamento máximo. Vou, sucintamente, referi-la:

Seja M um emparelhamento qualquer de G. Vou referir-me às arestas de M como as arestas escuras e às outras arestas de G como as arestas claras (arestas de G/M). Seja C um caminho alternante em G, logo as arestas de C são alternadamente escuras e claras. Suponhamos que C é um caminho aumentável e como tal, o vértice inicial e final são livres, portanto a primeira e a última aresta de C são claras. A sequências das arestas de C são da forma: clara, escura, clara, ..., escura, clara , portanto o número de arestas de C é ímpar, digamos 2n+1, das quais m são escuras e m+1 claras.

(8)

conseguinte, considerando M´ como o conjunto formado por todas as arestas escuras que não estão em C e por todas as arestas claras que estão em C, isto é, M´ é obtido substituindo em C, k arestas escuras por k+1 arestas claras ( removemos k arestas de M e são substituídas por k+1 arestas que não estão em M). Portanto, M´ é um novo emparelhamento, que contém mais uma aresta que M.

Este procedimento, revela claramente que podemos estender um emparelhamento M se existir um caminho aumentável.

!

!

!

!

!

!

!

!

O Teorema de Berge fornece um algoritmo para obter um emparelhamento máximo. Tal como foi referido na técnica descrita a ideia é procurar caminhos aumentáveis, a partir de vértices livres.

O algoritmo de emparelhamento máximo para grafos bipartidos é apresentado seguidamente, de uma forma condensada. A operação de construção do novo emparelhamento pode ser expresso como a diferença simétrica entre o emparelhamento anterior e o caminho aumentável C.

Algoritmo

Input: grafo bipartido G =

(

V1V2,E

)

Output: emparelhamento máximo M begin

emparelhamento válido M

while existe caminho aumentável C do

M:= MC

(9)

Em cada iteração é feita uma busca, a partir dos vértices livres de V1 que estão em M, à procura de um caminho aumentável. Se tal caminho C for encontrado, pelo Teorema de Berge sabemos que M não é o emparelhamento máximo. Nesse caso, substitui-se M por M ⊕ e C vamos procurar, se existir, um outro caminho a partir do novo emparelhamento. Quando consideramos um novo emparelhamento, aumentamos o número de arestas do emparelhamento, portanto, o número de vértices livres de V1 e V2 diminui.

A busca pode terminar por dois motivos ou não existem vértices livres em V1 ou não encontramos vértices livres em V2. E em ambos os casos, não existem mais caminhos aumentáveis. Portanto, pelo Teorema de Berge, o último emparelhamento obtido é máximo.

Este algoritmo apresentado, descreve como determinar um emparelhamento máximo, mas ainda fica uma questão por responder “Como encontrar um caminho aumentável (se existir) e como determiná-lo?”, uma vez que para determinar um emparelhamento máximo é necessário procurar caminhos aumentáveis a partir de vértices livres.

Responder a esta questão será o próxima etapa neste trabalho.

O processo de determinação de um caminho aumentável, corresponde à construção de uma árvore de pesquisa, ou seja, de uma árvore alternante cuja raiz é um vértice livre de V1, onde são integrados sucessivamente vértices, que são por sua vez analisados, até se encontrar um vértice livre de V2.

"

"

"

"

"

"

"

"

########$$$$$$$$%%%%%%%%&&&&&&&& $$$$$$$$ ########

'

'

'

'

'

'

'

'

!!!!!!!! (((((((()))))))) $$$$$$$$ &&&&&&&&!!!!!!!!########(((((((( ********++++++++######## $$$$$$$$

(10)

Inicia-se a pesquisa de caminhos aumentáveis a partir de vértices livres em V1, procurando encontrar um vértice livre de V2. Se tal acontecer é detectada a existência de um caminho aumentável.

Por outro lado, os vértices de V2 encontrados que não sejam livres, estão necessariamente emparelhados com vértices de V1. Assim, no processo de pesquisa, quando se encontra um vértice de V2 que não seja livre, atribui-se um rótulo ímpar a esse vértice e, simultaneamente, um rótulo par ao vértice de V1 que com ele está emparelhado.

O algoritmo mantém uma lista de vértices pares já rotulados, mas ainda não examinados, todos pertencentes a V1. Se esta lista ficar vazia sem ter sido encontrado nenhum vértice livre, então não existe nenhum caminho aumentável a partir do vértice livre escolhido.

Se a repetição da mesma pesquisa para os restantes vértices livres de V1 não produzir nenhum caminho aumentável, então o emparelhamento em questão é máximo.

Seguidamente, vou apresentar um algoritmo de pesquisa para determinar se existe algum caminho aumentável.

Algoritmo

Input: Grafo bipartido G =

(

V1V2,E

)

Emparelhamento M definido pelo vector par ( ) , isto é, = ∈ ∀ livre se , 0 com o emparelhad se , ) ( , 2 j i j i j par V j

(11)

begin

apagar todos os rótulos; v0 ← vértice livre de V1;

R(v0)←

( )

−,P ;

X

{ }

v0 ( X é o conjunto de vértices rotulados e não examinados) while X ≠Ο do begin seleccionar um vértice i∈ ; X

{}

i X X ← \ ;

for all j∈Γ(i) não rotulados do

begin

( )

i I j

R( )← , ;

if j livre then

return caminho aumentável

else

(

par j

) ( )

j P R ( ) ← , ;

{

par( j)

}

X X ← ∪ ; end; end;

return não existe caminho aumentável; end.

#

$

A figura ao lado apresenta um grafo bipartido, sendo V1=

{

v1,v2,v3,v4,v5

}

e V2=

{

v6,v7,v8,v9,v10

}

. As arestas

sombreadas representam o emparelhamento definido. E pretende-se encontrar, se existir, um caminho aumentável.

(12)

A pesquisa de caminhos aumentáveis, vai começar num vértice livre de V1, por exemplo,

em v4. Este vértice é rotulado como

( )

−,P , significando que não tem precedente e se trata de um vértice par.

A análise de v4 consiste em rotular os vértices adjacentes a ele, que são v6 e v7, como

( )

v ,4 I , indicando que são vértices ímpares. Como ambos estes vértices estão emparelhados, os respectivos pares são rotulados. O vértice v1 é rotulado como

( )

v ,6 P e o vértice v3 é rotulado como

( )

v ,7 P .

No fim desta fase, há na lista dois vértices pares, v1 e v3. De seguida procede-se à análise de um destes vértices, por exemplo, de v1. A análise de v1 permite detectar um vértice livre em V2, o v8 e a existência de um caminho aumentável, v4v6v1v8. A árvore de pesquisa resultante é:

(13)

De seguida analisa-se o vértice v5 e detecta-se um caminho aumentável até ao vértice v10, obtendo-se, assim, um emparelhamento de cardinal 5, que é um emparelhamento máximo. Apresentado nas figuras seguintes:

(14)

C1 C2 C3 C4 C5 V1 V2 V3 V5 V4

)

)

)

)

)

)

)

)

O problema descrito na introdução, dos n candidatos para preencher m vagas existentes numa empresa, é um exemplo de um problema de designação de tarefas. Neste tipo de problema procuram-se condições para a existência de um emparelhamento completo. Para o resolver, surgiram alguns resultados que apresentavam condições suficientes, mas não necessárias ou condições necessárias, mas não suficientes para determinar tal emparelhamento. (referidos a seguir).

Dado um emparelhamento M de grafo bipartido G, cujo conjunto dos vértices é dado por

2 1 V

V ∪ , uma condição para esse emparelhamento ser completo, é que o número de vértices de V2 seja igual ou maior ao número de vértices de V1. Mas não é suficiente. No exemplo da figura

1, apesar do número de candidatos ser igual ao número de vagas (5 candidatos e 5 vagas), não é possível obter tal emparelhamento completo. O seguinte resultado dá uma condição suficiente mas, não necessária, para que um grafo tenha um emparelhamento completo: “Seja G um emparelhamento completo num grafo bipartido decomposto em dois subconjuntos V1 e V2 é

possível identificar um emparelhamento completo nesse grafo se existe um valor inteiro k tal que o grau de todo o vértice de V1 é superior ou igual a k e o grau de todo o vértice de V2 é inferior ou

igual a k”. Mas, como já foi referido, este resultado não dá uma condição necessária, e por isso, o grafo da figura 2 não respeita a condição do resultado, apesar de permitir um emparelhamento completo, como se verifica pela figura 3.

(15)

Em 1935, Philip Hall apresenta um teorema (conhecido como o teorema de Hall ou dos casamentos) onde estabelece uma condição necessária e suficiente para a existência de um emparelhamento completo.

!

!""

%

%

de Hall

Seja G um grafo bipartido, cuja decomposição do conjunto de vértices é V =V1V2. G tem um emparelhamento completo se e só se Γ )(SS , para todo o subconjunto S de V1.

Seja G um grafo bipartido, tal que V(G)=V1V2.

( )

Num emparelhamento que sature todos os vértices de V1, ou seja, completo, todos os vértices de V1 estão emparelhados com vértices diferentes de V2. Qualquer que seja o subconjunto S de V1 “seleccionado”, a vizinhança desse conjunto tem cardinal maior ou igual a S.

( )

⇐ (por redução ao absurdo)

Suponhamos que a condição Γ )(SS é satisfeita, para todo o subconjunto S de V1. Queremos mostrar que G contém um emparelhamento completo. Vamos então, supor que G não tem tal emparelhamento e obteremos uma contradição.

(16)

que começa no vértice x0 e que termina num vértice saturado qualquer de M, então C possui uma das seguintes forma: x0y1x1y2x2...xn1ynxn (1)

ou x0y1x1y2x2...xn1yn (2) , em que x0,x1,...,xn são vértices de V1 e y1,y2,y3,... vértices de V2; as arestas y1x1, y2x2, ... estão em M e as outras arestas x0y1, x1y2,... não estão em M; e em (2), yn é um vértice saturado de M. Além disso, em (2) a aresta xn1yn não está em M, mas como yn é um vértice saturado podemos estender o caminho. Neste caso, com a adição da aresta ynxn, em que xn está emparelhado com yn em M, transformando-se o caminho na forma (1).

Seja R o conjunto formado por todos os vértices de V1, que podem ser estendidos a partir de x0 num caminho alternante em M (excluindo o vértice inicial x0, isto é, não consideremos os caminhos de comprimento 0), ou seja, R representa todos os x ,...,1 xn que podem ocorrer no caminho C anteriormente referido. Seja T o conjunto formado por todos os vértices de V2, que podem ser estendidos a partir de x0 num caminho alternante em M, isto é , T consiste em todos os y1,y2,y3,... que podem ocorrer no caminho C anteriormente referido. Tem-se que R = T , pois cada um dos possíveis x0,x1,...,xn está emparelhado com o correspondente yi.

Consideremos S = R

{ }

x0 . Se um vértice y é adjacente a um vértice de S, pode acontecer uma das duas situações :

i) y é adjacente a x0 ou

ii) y é adjacente a um dos vértices xi de V1 que ocorre em qualquer caminho alternante que começa no vértice x0.

Na situação i), y∈ , assim y é o vértice terminal do caminho alternante de comprimento 1. T Na situação ii), se C é um caminho alternante do vértice x0para o vértice xi, então y ou já é um vértice pertencente ao caminho ou o caminho pode ser estendido adicionando a aresta xiy, obtendo-se um caminho alternante maior. E neste caso, também y∈ . Isto prova que T

T S

Γ )( . Além do mais, do modo como T foi construído, tem-se que T ⊆Γ(S). Portanto, T

S =

(17)

portanto, S = R +1= T +1= Γ(S) +1. Logo, Γ )(S < S , o que constitui uma contradição. Mostramos que G admite um emparelhamento completo.

"

"

&&'' !!

O problema já referido, dos n candidatos e das m vagas, pode ser representado por um grafo bipartido, cujo conjunto dos vértices é dado por X ∪ , em que Y X =

{

c1,c2,...,cn

}

é o conjunto dos candidatos e Y =

{

y1,y2,...,ym

}

é o conjunto das vagas e as arestas ligam os candidatos ci às vagas yi se e só se têm qualificação para as preencher. Pretendemos obter resposta à questão: “É possível empregar cada candidato de tal maneira que cada um ocupa uma das vagas disponíveis, de acordo com as suas qualificações?”. Para obtermos uma resposta a esta questão, temos de saber se existe um emparelhamento que sature cada vértice de X, ou seja, um emparelhamento completo.

De seguida, vou apresentar um método que, para qualquer grafo bipartido G, ou encontra um emparelhamento completo em G, ou se tal emparelhamento não existir , mostra que ele não existe encontrando um subconjunto S de V1 tal que Γ )(S < S (porque se tal subconjunto existir,

então pelo teorema de Hall, sabemos que não existe emparelhamento completo).

O Algoritmo que vou apresentar, tem por base esta ideia e o Teorema de Hall, e é um

algoritmo de busca de um emparelhamento completo. Este algoritmo parte de um grafo bipartidoG =( EV, ), tal que V =V1V2 e segue essencialmente os três passos seguintes:

(18)

Não Não

Sim

Sim

Passo 2: Escolher um vértice livre x0 de V1, caso exista.

Se não existir, então M é um emparelhamento completo.

Se existir, determinamos um caminho aumentável C com origem em x0. Se tal caminho for encontrado, então obtemos um emparelhamento M´ maior do que M e como tal, satura mais vértices de V1 do que M. Então, executa-se o

passo 3.

Se não for encontrado tal caminho então pelo processo utilizado na demonstração de Teorema de Hall, obtém-se um subconjunto S de V1 tal que

S

S <

Γ )( e portanto, G não tem um emparelhamento que sature V1.

Passo 3: Se todos os vértices de V1 são saturados em M´, pará-se e portanto, M´é um

emparelhamento desejado.

Caso contrário, repete-se o passo 2, substituindo M por M´.

Algoritmo (representação esquemática)

Input: um emparelhamento qualquer de um grafo bipartido Output: emparelhamento completo

Existe v0 livre em M?

Existe caminho aumentável em M? Pára. (M é um emparelhamento completo e máximo) Obtém um emparelhamento M´ tal que M′ > M . Não existe emparelhamento

completo.

(19)

Segundo este algoritmo, dado um grafo qualquer bipartido conseguimos determinar se existe ou não um emparelhamento completo em G. No passo 2, é necessário determinar um caminho aumentável, se tal existir. Embora, esta questão já tenha sida abordada anteriormente (T. de Berge), vou agora apresentar um outro algoritmo, embora esteja de alguma forma relacionado com o que já foi apresentado, distinguindo-se essencialmente na “estrutura da construção”, pois este segue basicamente os passos da demonstração do Teorema de Hall. Tal algoritmo pode ser olhado como uma representação algorítmica do Teorema de Hall.

Seja M um emparelhamento de um grafo bipartido G.

Para determinar um caminho aumentável vamos recorrer a uma árvore alternante, cuja raiz é um vértice livre deV1. O “crescimento” de uma árvore aumentável H com raiz em x0 é tal

que, em qualquer etapa, acontece uma das duas situações:

i) todos os vértices de H excepto x0 são saturados em M; ii) H tem um vértice livre diferente de x0.

No caso i) na primeira etapa, a árvore consiste apenas no vértice livre x0. Consideremos então, R como o conjunto dos vértices emparelhados na árvore H cuja distância a x0 é par e T como o conjunto dos vértices de H cuja distância a x0 é ímpar. Tem-se então que

T

R = . A definição de R e de T é similar à que foi usada para estes conjuntos na demonstração do teorema de Hall. Consideremos agora, S = R∪

{ }

x0 . Então T⊆Γ

( )

S .

Vamos agora separar i) em dois subcasos: (i1) T(S) e ( i2) T ≠ Γ(S).

Se acontece (i1), segundo a demonstração do Teorema de Hall, Γ(S) = T = R = S −1,

logo Γ

( )

S < S , concluindo-se que não existe emparelhamento

Se acontece (i2), então existe um vértice y em G que não está em T, mas que é adjacente a

(20)

adicionando-se as aresta xy e yz e esta “nova” árvore continua a satisfazer o caso i). Se pelo contrário, y não é um vértice saturado de M, aumentámos H adicionando o vértice y e a aresta xy, produzindo uma nova árvore que satisfaz o caso ii).

Se em alguma etapa do crescimento obtivermos uma árvore que satisfaça o caso ii), então a árvore contém um caminho aumentável de M, que começa num vértice x0 livre e termina noutro vértive livre. E assim, podemos substituir o emparelhamento M por outro maior.

Vou, de seguida, apresentar um algoritmo que reflecte o método que estive a descrever, seguindo os seguintes quatro passos:

Passo 1: Começar com um emparelhamento M, arbitrário.

Passo 2: Se M satura todos os vértices de V1, pára e M é o emparelhamento desejado.

Caso contrário, seja x0 um vértice livre de M em V1 e seja S =

{ }

x0 e T = Ο.

Passo 3: Se , em G, Γ )(S =Tentão Γ )(S < S , portanto T = S −1. Neste caso, pára;

pois pelo Teorema de Hall sabemos que G não tem um emparelhamento completo.

Caso contrário, escolhe qualquer elemento y em Γ(S), que não está em T.

Passo 4: Se y é um vértice saturado em M, considera yzM , isto é, z é um vértice

emparelhado com y em M. Neste caso, substitui-se S por S

{ }

z e T por T

{ }

z e retorna ao passo 3.

Caso contrário, y é um vértice livre em M, considera C como caminho aumentável de x0 a y e substitui M por um emparelhamento maior que M.

(21)

#

#

#

#

#

#

#

#

,,,,,,,,########!!!!!!!!"""""""" --- '''''''' ...//////// !!!!!!!!

Para exemplificar este algoritmo, consideremos o grafo G, dado na figura 1 (página 15) que representa 5 candidatos que pretendem preencher 5 vagas disponíveis.

Passo 1: Começar com o emparelhamento M, representado pelas arestas sombreadas. Passo 2: O vértice c4 é livre em M. Seja S =

{ }

c4 e T = . O

Passo 3: Γ

( )

S =

{

v3,v4,v5

}

, portanto Γ )(ST. Escolhe-se v3 que está em Γ(S), mas não está

em T.

Passo 4: v3 é um vértice livre em M. Seja C o caminho aumentável de comprimento 1, v4v3.

Substitui-se M por um emparelhamento maior que M. Este novo emparelhamento está representado na figura seguinte:

E retorna-se ao passo 2.

Passo 2: O vértice c5 é livre em M. Seja S =

{ }

c5 e T = . O

(22)

Passo 4: v1 é um vértice saturado em M. Tem-se S =

{ }

c5, c1 e T =

{ }

v1 .

Passo 3: Γ

( )

S =

{

v1,v2,v3

}

T. Escolhe-se v3 que está em Γ(S), mas não está em T.

Passo 4: v3 é um vértice saturado em M. Logo, S =

{

c5,c1,c4

}

e T =

{ }

v1, v3 .

Passo 3: Γ

( )

S =

{

v1,v2,v3;v4,v5

}

T. Escolhe-se v5 que está em Γ(S), mas não está em T.

Passo 4: v5 é um vértice livre em M. Seja C o caminho aumentável de c5 a v5. Substitui-se M por

um emparelhamento maior que M. Este novo emparelhamento está representado na figura seguinte:

E retorna ao passo 2.

Passo 2: O emparelhamento M satura todos os vértices de V1, o algoritmo pára. Logo, M é um

(23)

(

(

!

!

)

)

Um treinador tem 6 jogadores disponíveis para formar uma equipa de hóquei em patins. Além do guarda-redes (GR), é necessário preencher as posições de Defesa e de Ataque, tanto do lado Direito (DD ou AD) como do lado Esquerdo (DE ou AE). Cada jogador tem aptidões que lhe permitem jogar, pelo menos, numa posição, de acordo com o grafo apresentado na figura seguinte.

A questão a que se pretende responder é: Será possível, com estes jogadores, preencher todas as posições e formar uma equipa?

Neste caso, a resposta é negativa, o que pode ser mostrado com o seguinte argumento: o único jogador capaz de jogar na direita é o jogador 5, e ele não pode jogar simultaneamente à defesa e ao ataque.

Do ponto de vista da teoria de grafos, existe um conjunto S =

{

DD,AD

}

, de cardinal 2, cujo vértice adjacente é o 5, isto é, Γ S

( ) { }

= 5 , sendo Γ S

( )

=1. Neste exemplo, S > Γ

( )

S . Logo, segundo o Teorema de Hall conclui-se de imediato que não existe um emparelhamento perfeito.

Num dos treinos faltou um dos jogadores, o treinador decidiu modificar o esquema de funcionamento implementado nos treinos anteriores, pedindo aos 5 jogadores para listarem no máximo três posições que gostariam de ocupar nesse jogo, podendo escolher posições quaisquer. Na tabela seguinte estão listadas as escolhas feitas (o X significa que o jogador escolheu a posição indicada). O treinador pretende atribuir as posições de modo atender às preferências de cada jogador.

1 2 3 4 5

GD DD DE AD AE

(24)

Jogadores Posição 1 2 3 4 5 GD X DD X X X DE X X X AD X AE X X

A tabela apresentada pode ser representada pelo grafo bipartido correspondente:

Começamos por escolher um emparelhamento qualquer, de seguida verificamos se existem caminhos aumentáveis. Se existirem, substituímos o emparelhamento dado por outro que é maior que este. E assim sucessivamente, até que a cada jogador seja atribuída uma posição.

(Só apresentei uma ideia muito sucinta da resolução do problema, dado ser um exemplo de aplicação simples dos teoremas apresentados.)

1 2 3 4 5

GD DD DE AD AE

1 2 3 4 5

(25)

0 1 0 1 0 1 0 1 " 2 " 2 " 2 " 2

Índices de notações e abreviaturas Definições e resultados utilizados

3333

Teorema e demonstração do teorema Algoritmo de Emparelhamento Máximo Pesquisa de Caminhos Aumentáveis

) 4 2

) 4 2

) 4 2

) 4 2

Teorema e demonstração do teorema Algoritmo Emparelhamento Completo Versão algorítmica do Teorema de Hall

Aplicação do teorema (exemplificação do algoritmo)

" 5 ! 0 6

" 5 ! 0 6

" 5 ! 0 6

" 5 ! 0 6

(26)

*

+

John M. Harris, Jeffry L.Hirst e Michael J. Mossinghoff; Combinatorics and Graph Theory; Springer.

John Clark e Derek Allan Holton; A First Look at Graph Theory; World Scientific. R.Brualdi; Introductory Combinatorics; Prentice-Hall.

R. Diestel; Graph Theory; Springer Béla Bollobás; Graph Theory

Pearls in Graph Theory- A computative Introduction A primer of Discrete Mathematics

Referências

Documentos relacionados

(grifos nossos). b) Em observância ao princípio da impessoalidade, a Administração não pode atuar com vistas a prejudicar ou beneficiar pessoas determinadas, vez que é

É primeiramente no plano clínico que a noção de inconscien- te começa a se impor, antes que as dificuldades conceituais envolvi- das na sua formulação comecem a ser

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,

Com relação à germinação das sementes armazenadas em câmara fria, aos três meses de armazenamento (Tabela 10), observou-se em sementes tratadas ou não com fungicidas e

Note on the occurrence of the crebeater seal, Lobodon carcinophagus (Hombron &amp; Jacquinot, 1842) (Mammalia: Pinnipedia), in Rio de Janeiro State, Brazil.. On May 12, 2003,

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá