13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

9. <strong>Algoritmos</strong> em grafos<br />

5 M := M ⊕ P<br />

6 end while<br />

7 return M<br />

Observação 9.11<br />

O grafo HM <strong>de</strong> um emparelhamento extremo M não possui ciclo (par) negativo,<br />

que seria uma contradição com a maximalida<strong>de</strong> <strong>de</strong> M. Portanto po<strong>de</strong>mos<br />

encontrar a caminho mínimo no passo 3 do algoritmo usando o algoritmo <strong>de</strong><br />

Bellman-Ford em tempo O(mn). Com isso a <strong>complexida<strong>de</strong></strong> do algoritmo é<br />

O(mn 2 ). ♦<br />

Observação 9.12<br />

Lembrando Bellman-Ford: Seja dk(t) a distância mínimo <strong>de</strong> qualquer caminho<br />

<strong>de</strong> s para t usando no máximo k arcos ou ∞ caso não existe. Temos<br />

dk+1(t) = min{dk(t), min<br />

(u,t)∈A dk(u) + l(u, t)}.<br />

Para ver que o algoritmo é correto, chama um emparelhamento M extremo<br />

caso ele possui o maior peso entre todos emparelhamentos <strong>de</strong> tamanho |M|.<br />

Teorema 9.12<br />

Cada emparelhamento encontrado no algoritmo 9.3 é extremo.<br />

Prova. Por indução. Para M = ∅ o teorema é correto. Seja M um emparelhamento<br />

extremo, P o caminho aumentante encontrado pelo algoritmo 9.3<br />

e N um emparelhamento <strong>de</strong> tamanho |M| + 1 arbitrário. Como |N| > |M|,<br />

M ∪ N contém uma componente que é um caminho Q M-aumentante (por<br />

um argumento similar com aquele da prova do teorema <strong>de</strong> Hopcroft-Karp 9.8).<br />

Sabemos l(Q) ≥ l(P ) pela minimalida<strong>de</strong> <strong>de</strong> P . N ⊕ Q é um emparelhamento<br />

<strong>de</strong> cardinalida<strong>de</strong> |M|, logo c(N ⊕ Q) ≤ c(M). Com isso temos<br />

w(N) = w(N ⊕ Q) − l(Q) ≤ w(M) − l(P ) = w(M ⊕ P ).<br />

Proposição 9.1<br />

Caso não existe caminho M-aumentante com comprimento negativo no algoritmo<br />

9.3, M é máximo.<br />

226<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!