Estou escrevendo um programa, resolvendo o problema do carteiro chinês (também conhecido como problema de inspeção de rota) em um draph não direcionado e atualmente enfrentando o problema para encontrar as melhores arestas adicionais para conectar os nós em graus ímpares, para que eu possa calcular um circuito euleriano.
Pode haver (considerando o tamanho do gráfico que deseja ser resolvido) uma enorme combinação de arestas que precisam ser calculadas e avaliadas.
Como um exemplo, existem os nós estranho graus . As melhores combinações podem ser:
- , C D , E F , G H
- , B D , E H , F G
- , B C , E G , F H
- ....
onde significa "borda entre o nó A e o nó B ".
Portanto, minha pergunta é: existe um algoritmo conhecido para resolver esse problema em uma complexidade melhor que a força bruta pura (calculando e avaliando todos eles)?
€: Após algum esforço de pesquisa, encontrei este artigo, falando sobre o "algoritmo de correspondência de tamanho mínimo de Edmonds", mas não consigo encontrar nenhum pseudo-código ou descrição de alunos desse algoritmo (ou pelo menos não os reconheço, como o Google oferece muitos hits e algoritmos de correspondência por J. Edmonds)
Respostas:
Conforme observado nos comentários, a Wikipedia reduz a inspeção de rota para correspondências de peso mínimo . Vladimir Kolmogorov publicou uma rápida implementação da versão ponderada do algoritmo de flor de Edmonds, em C ++ [1].
[1] V. Kolmogorov, Blossom V: Uma nova implementação de um algoritmo de correspondência perfeita de custo mínimo . Computação em Programação Matemática , 1 (1): 43–67, 2009.
fonte