Verschiedene Wege zur Implementierung des DAGs in java
Ich die Umsetzung DAG und Fragen, ob das folgende ist der einzige Weg, Sie zu vertreten in Java:
class Node{
List<Node> parents;
List<Node> successors;
int value; }
class DAG{
Node root; //assuming only one root exists
}
Ich bin auf der Suche nach etwas einfacher ohne zwei Listen für Eltern und Kinder.
ist es möglich?
Auch ich habe ein Problem mit dieser Darstellung, dass, wenn ich erreicht einen bestimmten Knoten x und wollte den Pfad von x zur Wurzel-Knoten, wie ich es finden kann, ohne durch alle Eltern einstellen?
- Schau mal in diesen thread stackoverflow.com/questions/144642/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur Vereinfachung Ihrer gerichteter graph Struktur ist es nicht erforderlich, für Knoten mit verbindungen zurück zu Ihren Vorfahren. Ich würde auch die Knoten-Klasse in Ihrem DAG-Klasse. Konzeptionell ist diese Darstellung macht mehr Sinn, da eh in einem gerichteten Graphen, wenn die Knoten Eines links zu Knoten B, es muss nicht ein Pfad von B nach A. In der Tat kann es keinen Pfad in beide Richtungen, denn das wäre ein Zyklus.
Finden Sie den Pfad von der Wurzel zu einem bestimmten Knoten, die Sie würde ausführen müssen, um einen Algorithmus zu suchen, durch die Grafik. Das bedeutet, auf den anderen Knoten im graph, wahrscheinlich rekursiv, bis Sie die gegebenen Knoten.
Wenn Sie vermeiden möchten, wiederholen Sie diese Arten von Berechnungen, können Sie auch speichern Sie den Pfad von der
Wurzel zu einem bestimmten Knoten mit so etwas wie dies:
Nun kann es verschiedene Wege von der Wurzel zu einem bestimmten Knoten. In diesem Fall können Sie umsetzen wollen, ein shortest-path-first-Algorithmus zu finden und zu speichern, die den optimalen Weg. Sehen Sie diese dzone Artikel für pseudocode.