graph-algorithm

___ qstnhdr ___ Eppsteins Algorithmus und Yens Algorithmus für k kürzeste Wege ___ qstntxt ___

Ich versuche genau zu verstehen, wie diese Algorithmen funktionieren, aber ich konnte keine einfache Erklärung finden. Ich würde es sehr schätzen, wenn mir jemand eine Beschreibung dieser Algorithmen liefern oder auf sie hinweisen könnte, die leichter zu verstehen ist als die Beschreibung in den Originalpapieren. Danke.

    
___ tag123grafalgorithm ___ Graphalgorithmen sind eine Abfolge gut definierter Schritte, die ein Problem im Zusammenhang mit der Graphentheorie lösen, wobei ein Graph in diesem Kontext eine Sammlung von Knoten ("Knoten") und Kanten ist, die diese Knoten verbinden. ___ tag123shortestpath ___ Kürzeste Pfadprobleme sind Probleme beim Suchen des kürzesten Pfads von einer einzelnen Quelle zu einer Zielquelle, normalerweise in einem Diagramm. ___ answer14035001 ___

Zunächst möchte ich Ihnen die Links zu den Papieren geben, über die Sie gesprochen haben.

Eppsteins Beitrag: D. Eppstein, "Finden der k kürzesten Wege", SIAM J. Comput., Vol. 28, nein. 2, pp.652-673, Feb. 1999

Yens Papier: J. Y. Yen, "Finden der K Kürzesten Loopless-Pfade in einem Netzwerk", Management Wissenschaft, vol. 17, nein. 11, S. 712-716, 1971.

Hier ist meine Erklärung für Yens Algorithmus:

Der Yen-Algorithmus verwendet zwei Listen, d. h. Liste A (permanente kürzeste Wege von Quelle zu Ziel - chronologisch geordnet) und Liste B (vorläufige / in Frage kommende kürzeste Wege). Zuerst müssen Sie den kürzesten Weg von der Quelle zum Ziel finden, indem Sie einen geeigneten Algorithmus für den kürzesten Weg verwenden (z.B. Dijkstra). Dann nutzt Yen die Idee, dass die k-ten kürzesten Pfade Kanten und Unterpfade (Pfad von der Quelle zu irgendwelchen Zwischenknoten innerhalb der Route) von (k-1) -ten kürzesten Pfad teilen können. Dann müssen Sie den (k-1) -ten kürzesten Weg nehmen und jeden Knoten in der Route der Reihe nach unerreichbar machen, d. H. Eine bestimmte Kante abfärben, die zu dem Knoten innerhalb der Route führt. Sobald der Knoten nicht erreichbar ist, suchen Sie den kürzesten Pfad vom vorhergehenden Knoten zum Ziel. Dann haben Sie eine neue Route, die durch Anhängen des gemeinsamen Subpfades (von der Quelle zum vorhergehenden Knoten des nicht erreichbaren Knotens) erstellt wird und den neuen kürzesten Pfad vom vorhergehenden Knoten zum Ziel hinzufügt. Diese Route wird dann zu der Liste B hinzugefügt, vorausgesetzt, dass sie nicht zuvor in der Liste A oder in der Liste B erschienen ist. Nachdem Sie dies für alle Knoten in der Route wiederholt haben, müssen Sie die kürzeste Route in Liste B finden und diese in die Liste A verschieben. Sie müssen diesen Vorgang nur für die Anzahl der Ks wiederholen, die Sie haben.

Dieser Algorithmus hat eine rechnerische Komplexität von O (kn ^ 3). Bitte lesen Sie das Papier für weitere Details.

Der Algorithmus ist wie folgt:

%Vor%

Leider habe ich Eppsteins nicht benutzt, da Yens Algorithmus für mein Problem optimal war.

Hoffe, das hilft. Prost.

=====

Bearbeiten:

Schauen Sie sich auch den Wikipedia-Eintrag an. Es hat ein schönes Beispiel.

=====

Bearbeiten:

Ich habe einige Implementierungen in C gefunden. Die Links sind wie folgt:

Eppstein-Implementierung und Lade Grafik für Eppstein .

Wenn Sie interessiert sind, gibt es eine faule Version von Eppstein. Der Link lautet wie folgt:

Lazy Eppstein von Jiménez und Marzal

=====

Bearbeiten:

Nur ein weiterer Link . Dieser enthält mehrere Implementierungen (C / C ++).

=====

Bearbeiten:

Ich habe eine gute Erklärung von Eppsteins Algorithmus gefunden.

    
___ tag123algorithm ___ Ein Algorithmus ist eine Folge wohldefinierter Schritte, die eine abstrakte Lösung für ein Problem definieren. Verwenden Sie dieses Tag, wenn sich Ihr Problem auf den Algorithmusentwurf bezieht. ___
2
Antworten

Ein-Pass-Kraft-orientierter Graph-Zeichen-Algorithmus

Ich suche nach einem One-Pass-Algorithmus (oder Ideen, wie ich ihn selbst schreiben kann), der die zwei- oder dreidimensionalen Koordinaten für einen gerichteten, ungewichteten Graphen berechnen kann. Die einzigen Metadaten, die die Vertices hab...
24.06.2013, 23:39
2
Antworten

Graphentheorie - chromatischer Index

Ich muss ein Programm machen, das sagt, ob der Graph d-färbbar ist oder nicht - im Grunde muss ich prüfen, ob der chromatische Index d oder d + 1 ist, wobei d der maximale Grad aller Ecken ist (Satz von vizing). Ich weiß, dass dieses Problem NP-...
25.05.2011, 20:06
1
Antwort

Gibt es eine effiziente Möglichkeit, ein Diagramm nach der Jaccard-Ähnlichkeit zu gruppieren?

Gibt es eine effiziente Möglichkeit, Knoten in einem Diagramm mit der Jaccard-Ähnlichkeit zu gruppieren, sodass jeder Cluster mindestens K Knoten hat? Jaccard-Ähnlichkeit zwischen den Knoten i und j : S sei die Menge der Nachbarn...
20.12.2013, 21:59
1
Antwort

Diagramm-Connector-Algorithmus

Ich erstelle eine Anwendung, die oberflächlich wie Visio aussieht, also muss ich Objekte mit Konnektoren verbinden können. Ich möchte, dass die Konnektoren mehrere horizontale und vertikale Segmente haben und in der Lage sein, die Ecke der Konne...
17.08.2011, 15:09
1
Antwort

Wie erstelle ich einen zufälligen Pfad?

Ich suche nach einem Algorithmus, der etwas wie das, was in diesem Bild ist, erzeugen kann: Ich habe über betrunkene Walkalgorithmen gelesen, aber sie scheinen nicht ganz zu passen, was ich brauche. Ich bin nicht sicher, ob ich erreichen...
16.10.2011, 05:32
5
Antworten

Graph Suchalgorithmus

Ich suche nach einem Graphalgorithmus mit einigen ungewöhnlichen Eigenschaften. Jede Kante im Graphen ist entweder eine "obere" oder eine "untere" Kante. Ein gültiger Pfad kann eine unbestimmte Anzahl von "up" s folgen, gefolgt von einer u...
09.09.2008, 20:54
1
Antwort

Eppsteins Algorithmus und Yens Algorithmus für k kürzeste Wege

Ich versuche genau zu verstehen, wie diese Algorithmen funktionieren, aber ich konnte keine einfache Erklärung finden. Ich würde es sehr schätzen, wenn mir jemand eine Beschreibung dieser Algorithmen liefern oder auf sie hinweisen könnte, die le...
13.10.2012, 05:03