Ich möchte K am weitesten Punkte von einem gegebenen Scheitelpunkt in einem jung implementation of directed graph finden.K entferntesten Punkte vom Scheitelpunkt in Grafik edu.uci.ics.jung
Ich nehme an, dass BFSDistanceLabeler die Arbeit macht. Es bietet jedoch keine API für die Rückgabe von K am weitesten entfernten Punkten, also muss ich es manuell tun, indem ich alle Scheitelpunkte im Graph durchquere und die Methode getDistance aufruft. Oder gibt es einen besseren Weg?
Aber es gibt eine größere Herausforderung für mich. Trotz der Tatsache, dass die Grafik gerichtet ist, möchte ich sie als ungerichtet für den Entfernungsmarker behandeln. Ist es möglich, von einem gerichteten Graphen in eine ungerichtete Version zu wechseln?
Warum muss ich Graphen als ungerichtet behandeln?
Ich analysiere ein sehr großes Netzwerk (Millionen von Vertices) in konsequenten Schritten. In jedem Schritt wird ein kleiner Teil des Netzwerks (Tausende von Knoten) in ein Diagramm geladen und analysiert. Diese Analyse erfordert einen gerichteten Graphen und liefert das Ergebnis für einen bestimmten Eckpunkt, der in der Mitte des geladenen Bereichs liegen muß.
Wenn ich von Schritt A zu Schritt B gehe, könnte ich die gesamte vorherige Grafik löschen und eine neue erstellen. Dies wäre jedoch sehr zeitaufwendig. Da ich weiß, dass mein neuer Scheitelpunkt nahe bei dem vorherigen ist, kann ein großer Teil des Graphen wiederverwendet werden.
Und deshalb muss ich K am weitesten Punkte für den neuen Hauptknoten entfernen und sie durch neue Eckpunkte aus der Umgebung dieses Eckpunkts ersetzen.
Werfen wir einen Blick auf das untere Bild mit Grafik und sagen wir, dass Scheitelpunkt 1 unser Scheitelpunkt von Interesse ist. Da der Graph gerichtet ist, ist der Eckpunkt 6 am weitesten entfernt. Wenn jedoch der Graph als ungerichtet behandelt würde, wäre die Ecke Nummer 4 am weitesten entfernt und das ist es, was ich brauche.
Vielen Dank für die tolle Antwort. Die Methode getVerticesInOrderVisited ist genau das, was ich gesucht habe, genauso wie Ihr Vorschlag, Nachfolger durch Nachbarn zu ersetzen. Groß! Vielen Dank :) – Michal