O algoritmo húngaro é um algoritmo de otimização combinatória que resolve o problema de correspondência bipartida de peso máximo em tempo polinomial e antecipou o desenvolvimento posterior do importante método primal-duplo . O algoritmo foi desenvolvido e publicado por Harold Kuhn em 1955, que deu o nome "algoritmo húngaro" porque o algoritmo foi baseado nos trabalhos anteriores de dois matemáticos húngaros: Dénes Kőnig e Jenő Egerváry. Munkres revisou o algoritmo em 1957 e observou que é realmente polytime. Desde então, o algoritmo também é conhecido como algoritmo de Kuhn-Munkres.
Embora o húngaro contenha a idéia básica do método primal-dual, ele resolve o problema de correspondência bipartida de peso máximo diretamente, sem usar nenhuma máquina de programação linear (LP). Assim, em resposta à seguinte pergunta , Jukka Suomela comentou
É claro que você pode resolver qualquer LP usando um solucionador de LP de uso geral, mas algoritmos especializados geralmente têm um desempenho muito melhor. [...] Você também pode evitar problemas como usar números racionais exatos vs. números de ponto flutuante; tudo pode ser feito facilmente com números inteiros.
Em outras palavras, você não precisa se preocupar em como arredondar uma solução de ponto flutuante / racional do solucionador de LP para obter uma correspondência perfeita de peso máximo de um determinado gráfico bipartido.
Minha pergunta é a seguinte:
Existe uma generalização do algoritmo húngaro que funcione para grafos gerais não direcionados sem o uso de máquinas LP semelhante ao espírito do algoritmo húngaro original?
Eu preferiria uma exposição moderna e fácil de ler em vez de um papel complicado original. Mas qualquer ponteiro será muito apreciado!
Muito obrigado antecipadamente e Feliz Natal !!!
Atualização: A pergunta é bem respondida por Arman abaixo. Quero apenas salientar que outra boa fonte para estudar o algoritmo de flor de Edmonds (para o caso ponderado) é o capítulo 11 da otimização combinatória da Korte e da Vygen . O livro do Google, na verdade, mostra quase todas as partes necessárias para entender o algoritmo.