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. ___
3
Antworten

Längster Pfad in einem bestimmten Grafiktyp

Ich weiß, dass das Problem mit dem längsten Pfad für ein allgemeines Diagramm NP-schwer ist. Ich betrachte jedoch eine bestimmte Art von Graphen, bestehend aus einem Zyklus plus einer zusätzlichen Kante, die auf jeden Eckpunkt des Zyklus einfä...
09.01.2013, 02:21
2
Antworten

Algorithmus zur Propagierung von Graphenwerten

Ich habe ein gerichtetes Diagramm (N, A) , wobei jeder Knoten n[i] einen Wert v[i] und einen Schwellenwert t[i] hat. Für jeden Pfeil (n[i], n[j]) gilt die Invariante v[i] <= v[j] . Ich muss die folgenden Operationen effizient...
10.09.2017, 21:15
3
Antworten

Algorithmus zum Finden verschiedener Pfade von A nach B in gewichteten, gerichteten, zyklischen Graphen

Angenommen, wir haben einen DIRECTED , GEWICHTET und CYCLIC . Angenommen, wir interessieren uns nur für Pfade mit einem Gesamtgewicht von weniger als MAX_WEIGHT Was ist der am besten geeignete (oder ein beliebiger) Algorithmus, um di...
17.01.2012, 10:56
1
Antwort

Algorithmus zum Erzeugen eines Zufallsnetzwerks

Was ist der beste Algorithmus zum Generieren eines zufälligen einfachen (nicht parallelen Kanten oder selbst-Schleifen) ungerichteten Graphen mit einer gegebenen Anzahl von Knoten, wobei jeder Knoten eine Anzahl von Kanten hat, die nicht kleiner...
24.06.2015, 19:00
8
Antworten

Nicht-rekursive Tiefensuche (DFS) unter Verwendung eines Stapels

Ok, das ist mein erster Beitrag auf Stack Overflow. Ich lese seit einiger Zeit und bewundere die Seite wirklich. Ich hoffe, dass dies akzeptabel ist. Also habe ich die ganze Zeit über Intro to Algorithms (Cormen. MIT Press) gelesen und bin dabei...
26.04.2012, 22:29
1
Antwort

Können wir den Bellman-Ford-Algorithmus auf ungerichtete Graphen anwenden?

Ich weiß, dass Bellman-Ford-Algorithmus für gerichtete Graphen funktioniert, aber nur für Info möchte ich wissen, ob es für Ungerichtete Graphen funktioniert? Da mit Ungerichtetem Graphen keine Zyklen erkannt werden können, werden parallele Kant...
09.02.2013, 05:54
2
Antworten

Warum hängt die zeitliche Komplexität von DFS und BFS davon ab, wie der Graph dargestellt wird?

Die Seite Ссылка beschreibt, dass wenn eine Adjazenzliste dann verwendet wird DFS und BFS haben Komplexität O (V + E), und wenn eine Adjazenzmatrix verwendet wird, ist die Komplexität O (V 2). Warum ist das?     
29.05.2014, 02:58
3
Antworten

Um die Grenze des Binärbaums zu drucken

Ich wurde in einem Interview gebeten, die Grenze des Binären Baums zu drucken. Zum Beispiel. %Vor% Die Antwort lautet: 1, 2, 4, 8, 9, 10, 7, 3 Ich habe die folgende Antwort gegeben. Erste Methode: Ich habe eine Bool Variable ver...
16.05.2015, 12:33
2
Antworten

VF2 Algorithmus Schritte mit Beispiel

Kann jemand die Schritte des VF2-Algorithmus für Graphisomorphie in einfachen Worten erklären? Ich lerne diesen Algorithmus, aber ohne ein funktionierendes Beispiel ist es hart. Kann mir jemand die richtige Richtung zeigen? Danke.     
18.11.2011, 00:26
4
Antworten

Ermitteln von verbundenen Komponenten mithilfe von Hadoop / MapReduce

Ich muss verbundene Komponenten für einen großen Datensatz finden. (Graph ist ungerichtet) Eine offensichtliche Wahl ist MapReduce. Aber ich bin ein Neuling für MapReduce und habe keine Zeit, es aufzunehmen und selbst zu programmieren. Ich...
20.05.2012, 21:30