Algorithmus für Durchmesser von graph?

Wenn Sie ein Diagramm, und müssen feststellen, dass die Durchmesser der es (was ist die maximale Entfernung zwischen zwei Knoten), wie können Sie es tun in O(log v * (v + e)) Komplexität.

Wikipedia sagt, Sie können dies tun, indem Dijkstra-Algorithmus mit einem binary heap.
Aber ich verstehe nicht, wie das funktioniert. Kann sich das jemand erklären bitte?

Oder zeigt eine pseudocode?

  • Der Dijkstra-Algorithmus nicht den Durchmesser des Graphen; es wird nur der Abstand von einigen Knoten zu jedem anderen Knoten im graph. Gibt es eine Ressource, die Sie haben, die sagt, dass Sie verwenden können, Dijkstra, dies zu tun?
  • cs.stackexchange.com/questions/194/...
  • Nichts in dem link sagt, dass Sie verwenden sollten, Dijkstra, dies zu tun.
  • oh, ok, aber gibt es eine Möglichkeit, dies zu tun in O(log n * (n + e) Komplexität?
  • Ist sind die Kanten gewichtet?
  • Sie sind nicht gewichtet.
  • Was ist e? Auch soll das arbeiten auf Allgemeinen Graphen oder einer bestimmten Klasse von Graphen?
  • Einfache ungerichtete Graphen. e sollte sein |E|, wobei E die Menge von Kanten.
  • Check diese Antwort auf CS die sich mit Ihrer Frage, Sie haben im Grunde eine all-pairs-shortest-paths und wählen Sie das minimum über diese, was bedeutet, dass es nach dem Stand der Kunst von der Suche nach kürzesten Entfernungen in Allgemeinen gewichteten Graphen, den Sie nicht unter O(n2 log n + nm) mit Johnson ' s Algorithmus.
  • dass es mentiones Johnson ' s Algorithmus ( en.wikipedia.org/wiki/Johnson%27s_algorithm ), die für nicht-negative edge-GEWICHTE, läuft darauf hinaus, Dijkstra in einer Schleife.

InformationsquelleAutor omega | 2013-03-26
Schreibe einen Kommentar