Bei einem ungerichteten, ungewichteten, verbundenen und möglicherweise parallelen Graphen kann eine Euler-Schaltung konstruiert werden, wenn jeder Scheitelpunkt in einen geraden Grad hat.
In Graphen mit zwei oder mehr Scheitelpunkten ungeraden Grades (es kann nur ein Vielfaches von zwei geben) muss der Graph "Eulerisiert" werden, wobei die ungeraden Scheitelpunkte bei Bedarf mit zusätzlichen Kanten durch andere Scheitelpunkte verbunden werden.
Der optimale Fall für die Eulerisierung ist die Konstruktion von nur Kanten, wobei die Anzahl der Scheitelpunkte ungeraden Grades ist. Dies kann jedoch nur dann der Fall sein, wenn jeder ungerade Scheitelpunkt einen benachbarten Partner hat, sodass wir beide Scheitelpunkte mit verbinden können eine Kante und beide gleichmäßig machen.
Davon abgesehen benötigen die meisten Diagramme mehr als Kanten. Als Menschen tendieren wir dazu, Graphen zu eulerisieren, indem wir immer jedes Paar ungerader Eckpunkte auswählen, die nebeneinander liegen, und dann für den Rest Versuch und Irrtum verwenden. Dies funktioniert jedoch nicht immer.
Wenn Sie im folgenden Diagramm beispielsweise eine Kante zwischen dem Paar benachbarter ungerader Eckpunkte hinzufügen und Kanten verwenden, um zu verbinden, wird eine Eulerisierung durchgeführt, die Kanten kostet . Wenn Sie jedoch stattdessen und eine Eulerisierung, die Kanten kostet , obwohl die benachbarten ungeraden Scheitelpunkte nicht zu ihrem Vorteil verwendet wurden.
Ich weiß mit Sicherheit, dass dieses Problem zumindest durch rohe Gewalt lösbar ist, da die Anzahl der Paare ungerader Eckpunkte, die mit einer bestimmten Anzahl von Kanten verbunden werden sollten, endlich ist. Insbesondere gibt es ( Mathematica sagte dies ) mögliche Sätze von Paaren ungerader Eckpunkte, die verbunden werden können. Es ist möglich, jeden einzelnen zu durchlaufen und jeden Scheitelpunkt mit seinem Partner zu verknüpfen (das Finden des kürzesten Pfades zwischen den beiden Scheitelpunkten in einem ungerichteten Diagramm ist wahrscheinlich eine Herausforderung für sich, für die Wikipedia keine zeitliche Komplexität angibt ).
Am Ende läuft der ganze Deal wahrscheinlich in Polynomzeiten Exponentialzeiten Fakultätszeit, was ziemlich böse ist. Ich habe einige grundlegende Untersuchungen durchgeführt, ob es Algorithmen gibt, die Pfade Eulerisieren, aber keine zu finden scheinen.
Mathematica- Code für Grafik:
GraphPlot[
{1 -> 2, 2 -> 5, 5 -> 3, 3 -> 6, 6 -> 3, 6 -> 7, 7 -> 6, 2 -> 7, 7 -> 8, 8 -> 9, 9 -> 10, 10 -> 4, 4 -> 11, 11 -> 4, 11 -> 12, 12 -> 1, 1 -> 12},
VertexRenderingFunction ->
(If[#2 < 5,
Text[Style[#2, Large], #1, Background -> Yellow], Null] &)]
quelle
Antworten:
Betrachten Sie das chinesische Postbotenproblem bei ungerichteten Graphen: Suchen Sie bei einem ungerichteten Graphen den kürzesten Stromkreis des Graphen, der jede Kante mindestens einmal durchläuft. Wenn nun Euler ist, dann ist die Euler-Schaltung die kürzeste solche Schaltung. Wenn nicht, werden einige Kanten mehr als einmal zurückgelegt. Mit anderen Worten, einige Kanten werden dupliziert, und die Schaltung ist im Diagramm mit diesen zusätzlichen Kanten Eulersch.G G
Um den kürzesten Stromkreis zu erhalten, muss nun die Kantenverdoppelung minimiert werden. Dies ist das gleiche wie Ihr Problem. Sie müssen einen neuen Graphen der alle Kanten von und einige zusätzliche parallele Kanten enthält - so wenige zusätzliche Kanten wie möglich -, damit Eulersch ist. Jede zusätzliche Kante in entspricht der Tatsache, dass ihre entsprechende parallele Kante in in einer kürzesten vollständigen Schaltung von . Mit anderen Worten, die optimale (minimale) "Eulerisierung" entspricht dem chinesischen Postbotenproblem. Für eine bessere ausgedrückt Erklärung hierfür finden Sie in Abschnitt 4 (Chinese Postman Problem) und Definition 11 (Eulerization, Minimal Eulerization) von diesenH G H H G G Anmerkungen. Glücklicherweise ist dies für ungerichtete Graphen in Polynomzeit lösbar.
Für das chinesische Postbotenproblem hat Wikipedia eine Lösung. Ich beschreibe einen anderen Algorithmus aus Steven Skienas The Algorithm Design Manual [1]:
Somit können Sie die optimale "Eulerisierung" im Zeitpolynom (kubisch) in der Anzahl der ungeraden Eckpunkte erhalten. Dies basiert auf einem Artikel von Edmonds und Johnson [2], der das chinesische Postbotenproblem löst.
Verweise:
quelle