Correspondência de cardinalidade máxima - Maximum cardinality matching

A correspondência de cardinalidade máxima é um problema fundamental na teoria dos grafos . Recebemos um gráfico e o objetivo é encontrar uma correspondência contendo tantas arestas quanto possível, ou seja, um subconjunto de cardinalidade máxima das arestas de modo que cada vértice seja adjacente a no máximo uma aresta do subconjunto. Como cada aresta cobrirá exatamente dois vértices, este problema é equivalente à tarefa de encontrar uma correspondência que cubra o maior número possível de vértices.

Um caso especial importante do problema de correspondência de cardinalidade máxima é quando G é um grafo bipartido , cujos vértices V são particionados entre vértices esquerdos em X e vértices direitos em Y , e arestas em E sempre conectam um vértice esquerdo a um vértice direito. Nesse caso, o problema pode ser resolvido de forma eficiente com algoritmos mais simples do que no caso geral.

Algoritmos para grafos bipartidos

A maneira mais simples de calcular uma correspondência de cardinalidade máxima é seguir o algoritmo Ford-Fulkerson . Este algoritmo resolve o problema mais geral de calcular o fluxo máximo , mas pode ser facilmente adaptado: nós simplesmente transformamos o gráfico em uma rede de fluxo adicionando um vértice de origem ao gráfico com uma aresta para todos os vértices esquerdos em X , adicionando um vértice coletor tendo uma aresta de todos os vértices direitos em Y , mantendo todas as arestas entre X e Y , e dando uma capacidade de 1 para cada aresta. O algoritmo Ford-Fulkerson irá então prosseguir encontrando repetidamente um caminho crescente de algum xX para algum yY e atualizando o M correspondente tomando a diferença simétrica desse caminho com M (assumindo que tal caminho exista). À medida que cada caminho pode ser encontrado em tempo, o tempo de execução é , e o emparelhamento máximo consiste nas arestas de E que transportam o fluxo de X para Y .

Uma melhoria neste algoritmo é dada pelo algoritmo Hopcroft-Karp mais elaborado , que procura vários caminhos aumentantes simultaneamente. Este algoritmo é executado no tempo.

O algoritmo de Chandran e Hochbaum para grafos bipartidos é executado no tempo que depende do tamanho do emparelhamento máximo , que para é . Usando operações booleanas em palavras de tamanho, a complexidade é aprimorada ainda mais .

Existem algoritmos mais eficientes para tipos especiais de grafos bipartidos:

  • Para grafos bipartidos esparsos , o problema de correspondência máxima pode ser resolvido com o algoritmo de Madry baseado em fluxos elétricos.
  • Para planares grafos bipartidos, o problema pode ser resolvido no tempo , onde N é o número de vértices, através da redução do problema de fluxo máximo com múltiplas fontes e destinos.

Algoritmos para gráficos arbitrários

O algoritmo de flor encontra uma correspondência de cardinalidade máxima em gráficos gerais (não necessariamente bipartidos). Corre no tempo . Um melhor desempenho de O ( V E ) para gráficos gerais, correspondendo ao desempenho do algoritmo Hopcroft-Karp em gráficos bipartidos, pode ser alcançado com o algoritmo muito mais complicado de Micali e Vazirani. O mesmo limite foi alcançado por um algoritmo de Blum ( de ) e um algoritmo de Gabow e Tarjan .

Uma abordagem alternativa usa a randomização e é baseada no algoritmo de multiplicação de matrizes rápidas . Isso fornece um algoritmo aleatório para gráficos gerais com complexidade . Em teoria, isso é melhor para gráficos suficientemente densos , mas na prática o algoritmo é mais lento.

Outros algoritmos para a tarefa são revisados ​​por Duan e Pettie (consulte a Tabela I). Em termos de algoritmos de aproximação , eles também apontam que o algoritmo de flor e os algoritmos de Micali e Vazirani podem ser vistos como algoritmos de aproximação rodando em tempo linear para qualquer limite de erro fixo.

Aplicações e generalizações

Referências