Chinesischer Postbote Problem: Finden der besten Verbindungen zwischen Knoten ungeraden Grades

9

Ich schreibe ein Programm, löse das chinesische Postbotenproblem (auch als Routeninspektionsproblem bekannt) in einem ungerichteten Draph und stehe derzeit vor dem Problem, die besten zusätzlichen Kanten zu finden, um die Knoten mit ungeradem Grad zu verbinden, damit ich eine Eulersche Schaltung berechnen kann.

Möglicherweise gibt es (in Anbetracht der Größe des Diagramms, das gelöst werden soll) eine enorme Kombination von Kanten, die berechnet und ausgewertet werden müssen.

Als Beispiel gibt es den ungeraden Grad - Knoten . Die besten Kombinationen könnten sein:EIN,B.,C.,D.,E.,F.,G,H.

  1. EINB. , , ,E F.C.D.E.F.GH.
  2. EINC. , , ,E H F.B.D.E.H.F.G
  3. EIND. , , ,E G F.B.C.E.GF.H.
  4. EINE. ....

wobei "Kante zwischen Knoten und Knoten " bedeutet.A B.EINB.EINB.

Daher lautet meine Frage: Gibt es einen bekannten Algorithmus, um dieses Problem in einer Komplexität zu lösen, die besser ist als reine Brute Force (Berechnung und Bewertung aller)?

€: Nach einigen Recherchen habe ich diesen Artikel gefunden, in dem es um den "Edmonds 'Minimum-Length-Matching-Algorithmus" geht, aber ich kann keinen Pseudocode oder Lernbeschreibungen dieses Algorithmus finden (oder zumindest erkenne ich sie nicht als Google bietet viele Treffer und Matching-Algorithmen von J. Edmonds)

Sim
quelle
4
Wikipedia sagt, dass es einen -AlgorithmusÖ(n3) für das chinesische Postbotenproblem gibt.
Hugomg
Ich weiß, aber ich bin immer noch neugierig, wie das geht.
Sim
2
Diese Vorlesungsunterlagen behandeln das Problem des chinesischen Postboten: win.tue.nl/~nikhil/courses/2WO08/lec4.pdf
Alex ten Brink
Sim, ich interessiere mich für Ihre Software, da ich mit einem Mapping-Problem konfrontiert bin: help.openstreetmap.org/questions/13197/… Viel Glück bei Ihrem Projekt. Uhr bei pmbooks dot com
Probieren Sie den Artikel aus, den ich verlinkt habe. Er beschreibt einen Algorithmus zur Anpassung der Mindestlänge, aber aufgrund meiner mangelnden Erfahrung und des Mangels an Pseudocode konnte ich ihn leider nicht implementieren.
Sim

Antworten:

1

Wie in den Kommentaren erwähnt, reduziert Wikipedia die Routeninspektion auf Übereinstimmungen mit minimalem Gewicht . Vladimir Kolmogorov hat eine schnelle Implementierung der gewichteten Version von Edmonds 'Blütenalgorithmus in C ++ veröffentlicht [1].

[1] V. Kolmogorov, Blossom V: Eine neue Implementierung eines Algorithmus zur perfekten Anpassung bei minimalen Kosten . Mathematical Programming Computation , 1 (1): 43–67, 2009.

David Richerby
quelle
1
Und nennen wir es nicht das "chinesische Postbotenproblem". Die einzige Verbindung zu China besteht darin, dass es von Mei-Ko Kwan eingeführt wurde und seine Nationalität für das Problem irrelevant ist. Die Bezeichnung "Chinesisch" legt nahe, dass das Wichtigste an ihm seine ethnische Herkunft ist. Wir bezeichnen beispielsweise den bekannten Algorithmus zur Berechnung kürzester Pfade in Graphen nicht als "niederländischen Algorithmus" oder, noch schlimmer, als "Algorithmus des weißen Mannes". (Ja, ich
lehne aus