Questões-guia:
- Quantos emparelhamentos perfeitos existem em Kn,n?
- Para cada inteiro n ≥ 3, mostre um grafo com n vértices onde existe um emparelhanto maximal que não é máximo. Mostre um caminho aumentante para estes emparelhamentos.
- Qual a importância algorítmica do teorema de Hall?
- Como coberturas por vértices podem nos ajudar a garantir que um emparelhamento é máximo?
- Nos números α(G), α'(G), β(G), β'(G), o que significa a linha (')? E quais destes números somam n(G)? Em que condições?
- O efeito do Algoritmo 3.2.1 pode ser conseguido com uma BFS ou DFS modificada? Qual seria a complexidade deste algoritmo modificado?
- Por que o problema de emparelhamento de peso máximo em grafos bipartidos ponderados pode ser reduzido a bipartidos completos? E, ainda por cima, com partes do mesmo tamanho?
- Como se generaliza a noção de cobertura por vértices em grafos bipartidos ponderados?
- O Algoritmo Húngaro p/ resolver o problema de emparelhamento de peso máximo num grafo bipartido utiliza qual outro algoritmo como subrotina fundamental?
Exercícios:
Para entender o Algoritmo Húngaro, um bom exercício é ver as coisas acontecendo numa planilha de cálculo. Pegue um exemplo do livro e coloque numa planilha da seguinte forma.
- Separe uma região n × n da planilha para colocar a entrada.
- A seguir, ao lado ou embaixo da entrada, escolha outra região n × n da planilha para codificar um emparelhamento. Esta região terá apenas zeros e uns.
- Numa outra região do mesmo tamanho, faça a multiplicação da região entrada pela do emparelhamento, elemento a elemento, obtendo os pesos das arestas do emparelhamento. Faça uma célula conter o peso total deste emparelhamento.
- Finalmente, numa outra região do mesmo tamanho, compute a matrix de excessos. Nesta região é interessante ladear as bordas superior e esquerda com uma cobertura. Faça uma célula conter o peso total desta cobertura.
- Após este arranjo, o algoritmo pode ser "executado" mexendo apenas no emparelhamento e na cobertura, até que seus pesos fiquem iguais.