• Nenhum resultado encontrado

O algoritmo 2.2 encontra um emparelhamento máximo.

se i for par então

Teorema 2.6 O algoritmo 2.2 encontra um emparelhamento máximo.

Prova. Queremos mostrar que o algoritmo encontra corretamente um emparelhamento

máximo. O algoritmo procura por um caminho M-aumentante em cada vértice do grafo, usando a função caminho-aumentante(). Consideramos através do lema2.5que a função

caminho-aumentante() encontra corretamente esse caminho, se ele existir.

Seja Mo emparelhamento encontrado pelo algoritmo. Suponha que M∗ não seja um emparelhamento máximo. Pelo teorema 2.4 de Berge existe um caminho M∗- aumentante.

Seja o vértice v um dos extremos do caminho M∗-aumentante. Quando esse vér- tice foi examinado pelo algoritmo, não existia caminho aumentante. Portanto, conside- ramos a iteração do vértice w, na qual passa a existir um caminho aumentante saindo de v, ou seja, não existe caminho M-aumentante a partir de v, mas existe um cami- nho M-aumentante a partir de v, onde M= M⊕ P e P é um caminho aumentante a

partir de w. Seja C o caminho M-aumentante, a partir do vértice v, denotaremos por

C= (v0, v1, ..., vt), onde v = v0.

Como não existe caminho M-aumentante a partir de v, temos que C e P têm pelo menos uma aresta em comum. Seja vivi+1 a primeira aresta do caminho C que esteja em

P. Observamos que i6= 0, pois o vértice v0é um vértice não saturado por M′e os vértices do caminho P são todos saturados pelo emparelhamento M′.

Vamos ver que a aresta vivi+1 não pertence a M. Suponha que a aresta vivi+1 pertença ao emparelhamento M. Como ele pertence ao caminho P, temos, por definição, que ela não pertence ao emparelhamento M. Logo, a aresta vi−1vi pertence a M′, pois

o caminho C é um caminho M-aumentante. Como, por escolha do i, a aresta vi−1vi não pertence a P, temos que a aresta vi−1vi pertence a M, pela definição de M′. Contradição, pois viestá saturado por duas arestas de M. Concluímos que a aresta vivi+1não pertence a M e, portanto, ela pertence a M′.

Agora queremos mostrar que a partir do vértice v tem um caminho M- aumentante. Seja P= (w0, w1, ..., wj, wj+1, ..., ws) o caminho M-aumentante, onde wj= vi e wj+1= vi+1. Queremos mostrar que CP= (v0, v1, ..., vi−1, wj, wj−1, ..., w0) é um cami- nho M-aumentante. Mostramos que vivi+1= wjwj+1 não pertence a M. Pela definição do caminho P, temos que a aresta wj−1wjpertence a M.

Por outro lado, o caminho (v0, ..., vi−1) é um caminho M-alternante, pois ele é

M-alternante e nenhuma aresta pertence a P pela escolha do i.

Falta só mostrar que vi−1vinão pertence a M. Mas isso segue do fato que viestá saturado, em M, pela aresta wj−1wj. Portanto, CP é um caminho M-aumentante a partir de v, uma contradição. Logo, M∗é um emparelhamento máximo. 

2.4

Complexidade do algoritmo de emparelhamento má-

ximo

O algoritmo 2.2 procura a partir de cada um dos vértices um caminho aumen- tante, encontrando esse caminho, o emparelhamento será aumentado em uma aresta. Para obtermos a complexidade do algoritmo também temos que analisar a complexidade das funções: caminho-aumentante e aumentar-emparelhamento. O resultado abaixo faz a aná- lise da função caminho-aumentante().

Lema 2.7 (Kameda e Munro [10]) Se o algoritmo encontra um caminho M-aumentante, então podemos identificar um caminho M-aumentante no tempo proporcional ao número de arestas do caminho.

O lema abaixo faz a análise da função aumentar-emparelhamento().

Lema 2.8 (Kameda e Munro [10]) Seja B um broto aninhado com base b e v, todo vértice (6= b) que pertence a B, um caminho M-alternante de tamanho par de u a b (dentro de B), pode ser identificado no grafo pelos rótulos em tempo proporcional ao número de arestas do caminho.

O teorema abaixo faz a análise da complexidade do algoritmo de emparelha- mento máximo.

2.5 Emparelhamento máximo em grafos bipartidos 45

Teorema 2.9 (Kameda e Munro [10]) Um emparelhamento máximo pode ser encontrado no tempo c1nm+ c2, onde c1e c2são constantes.

Prova. O algoritmo 2.2 começa com um grafo G(V, E) e um emparelhamento M = /0, depois é analisado todos os vértices de G. Para cada vértice não saturado é usada a função

caminho-aumentante() para encontrar um caminho M-aumentante. Pelo resultado 2.7, temos que um caminho M-aumentante é encontrado no tempo proporcional à quantidade de arestas do caminho, ou seja, as arestas podem ser examinadas no máximo duas vezes. Então, o tempo total gasto para encontrar um caminho M-aumentante é limitado por

c1m, onde m= |E| e c1 é uma constante positiva. Pelo resultado2.8, temos que o tempo necessário para identificar as arestas de um caminho M-aumentante é limitado por c2m, onde c2 é uma constante. Portanto, um emparelhamento máximo é alcançado em um tempo de c1nm+ c2, ou seja, no pior caso temos que o tempo é O(nm). 

2.5

Emparelhamento máximo em grafos bipartidos

Nesta seção, consideramos somente os grafos bipartidos. Podemos encontrar mais facilmente um emparelhamento máximo em grafo bipartido, pois não temos ciclos ímpares nesses grafos, ou seja, não encontramos nesse caso um broto. Portanto, podemos utilizar uma versão simplificada do algoritmo de Kameda e Munro para encontrar esse emparelhamento. Nessa versão não precisamos da função encontrar-broto().

Além disso, o teorema de Hall fornece condições necessárias e suficientes para determinar se um emparelhamento é máximo num grafo bipartido.

Teorema 2.10 (Hall [8]) Seja G um grafo (X,Y )-bipartido. O grafo G tem um empare- lhamento que satura X se, e somente se,|N(S)| ≥ |S| para todos S ⊆ X.

Prova. Queremos provar que se o grafo G tem um emparelhamento que satura X , então |N(S)| ≥ |S| para todos S ⊆ X. Suponha que o grafo G tenha um emparelhamento M que

satura todos os vértices da partição X e seja S um subconjunto de X . Como os vértices de

S estão saturados por arestas de M, e essas arestas têm vértices únicos em N(S), temos

que a cardinalidade dos vizinhos de S é no mínimo igual à cardinalidade do subconjunto

S, ou seja,|N(S)| ≥ |S|.

Agora queremos provar que se|N(S)| ≥ |S| para todos S ⊆ X, então existe um emparelhamento M que satura todos os vértices de X . Para isso, iremos provar o teorema através da contrapositiva. Seja M um emparelhamento máximo em G que não satura X . Queremos encontrar um conjunto de vértices S⊆ X tal que |N(S)| < |S|.

Seja u um vértice de X não saturado por M e seja Z o conjunto dos vértices que são alcançáveis por caminhos M-alternantes, a partir de u. Como M é um emparelhamento máximo, não há caminhos M-aumentantes e u é o único vértice não saturado em Z.

Sejam S= Z ∩ X e T = Z ∩Y , conforme exemplo abaixo.

S

X u

Y • • • • • • • •

T = N(S)

Figura 2.11: Teorema de Hall.

Notamos que o vértice u pertence a S e que os caminhos M-alternantes que partem de u atingem Y através de arestas que não estão em M e voltam para X através de arestas em M. Sendo assim, temos que cada y∈ T é adjacente a um x ∈ S − {u} por uma aresta de M, ou seja T ⊆ N(S).

Pela construção, temos que|T | = |S|−1 e queremos mostrar que T = N(S). Seja

y∈ N(S), então por definição y é adjacente a um v em S. Temos um caminho M-alternante

de u a v, que termina com uma aresta de M. Se vy não pertence a M, temos um caminho

M-alternante de u a y, ou seja, y∈ T . Senão, vy pertence a M. Logo v 6= u, pois o vértice u não é saturado e na verdade vy tem que ser a última aresta do caminho M-alternante de u a v. Portanto, y pertence a T .

Concluímos que T = N(S) e |N(S)| = |T | = |S| − 1 < |S|. Isso completa nossa

prova. 

Uma aplicação para o teorema de Hall é encontrado no resultado abaixo.

Documentos relacionados