Я пишу Программу, решая проблему китайского почтальона (также известную как проблема проверки маршрута), и в настоящее время сталкиваюсь с проблемой, чтобы найти наилучшие дополнительные ребра для соединения узлов с нечетной степенью, чтобы я мог вычислить эйлерову схему.
Может быть (учитывая размер графа, который нужно решить) огромную комбинацию ребер, которые необходимо вычислить и оценить.
В качестве примера есть нечетные степени узлы , B , C , D , E , F , G , H . Лучшие комбинации могут быть:
- , C D , E F , G H
- , B D , E H , F G
- , B C , E G , F H
- ....
где означает «ребро между узлом A и узлом B ».
Поэтому мой вопрос: существует ли известный алгоритм, который решает эту проблему сложнее, чем чисто грубая сила (вычисляя и оценивая их все)?
€: После некоторых исследований я нашел эту статью, говоря о «алгоритме соответствия минимальной длины Эдмондса», но не могу найти псевдокод или описания этого алгоритма для учащихся (или, по крайней мере, я их не распознаю, как Google предлагает множество совпадений алгоритмов сопоставления Дж. Эдмондса)
Ответы:
Как отмечается в комментариях, Википедия дает сокращение от проверки маршрута до сопоставлений с минимальным весом . Владимир Колмогоров опубликовал быструю реализацию взвешенной версии алгоритма цветения Эдмондса в C ++ [1].
[1] В. Колмогоров, Блоссом В. Новая реализация алгоритма идеального согласования с минимальной стоимостью . Математическое программирование вычислений , 1 (1): 43–67, 2009.
источник