Ich möchte ein Diagramm in seine Komponenten aufteilen (wie im folgenden Beispiel DAG). Beachten Sie die farbigen Kennungen jedes Knotens, wie sie dargestellt werden die Komponenten). Nachdem ich die Komponenten im Bild gefunden habe, möchte ich den Stamm und das letzte Kind dieser Komponente finden. Nehmen wir zum Beispiel die Komponente blue, die Wurzel ist E
und das letzte Kind ist H
. Grün: Wurzel B
- letztes Kind H
.Aufteilen eines gerichteten azyklischen Graphen (DAG) in Komponenten, dann Suchen des Stamm- und letzten untergeordneten Objekts in diesen Komponenten
Beispiel grafische Darstellung:
Wenn Sie eine Verbindung zwischen E
finden - H
, B
-E
, B
-H
, A
-I
ohne sie in Komponenten aufzuteilen. Lass es mich wissen, denn das ist mein letztes Ziel.
Über das Kompilieren von Komponenten. Das ist eigentlich mein Endziel. Ich wollte das nur einbeziehen, um vielleicht ein besseres Verständnis dafür zu bekommen, was ich erreichen möchte. Das kann ich nicht, wenn ich diese Verbindungen finde.
Fragen fand ich hilfreich, aber meine Frage nicht beantwortet:
Algorithm to find lowest common ancestor in directed acyclic graph?
Finding best common ancestor of two leaf nodes where nodes have zero, one, or two parents
(Diese Antworten ausreichend sein, aber ich weiß nicht, wie zu implementieren es)
Hinweis:
Bitte senden Sie alle Beispielcode in C++ oder C# (wenn du gehst, Beispiel-Code schreiben)
Dies ist meine erste Frage. Wenn ich etwas falsch gemacht habe, lass es mich wissen.
// Big edit: Überarbeitete die Frage zu machen, mehr klar, was ich will. Einführung von Komponenten, wie ich denke, dass das hilfreicher sein wird.
Ich habe die Antwort für 2 Tage vor dieser Frage gesucht und werde fortfahren. Wird die Antwort natürlich posten, wenn ich eine finde! – Glaze
Möchten Sie die LCA für alle Eltern des Startknotens berechnen (dies führt möglicherweise nicht zu einem Ergebnis für Grafiken mit mehreren Minimalelementen) oder suchen Sie nach dem _closes_-Knoten, der eine LCA für mindestens 2 Eltern Ihres Startknotens ist (Dies könnte mehrere Lösungen haben). Um den Unterschied zu sehen, fügen Sie dem Beispielgraphen die Kanten '(C, H), (D, H)' hinzu - wäre das gewünschte Ergebnis 'E' oder 'B' für den Startknoten' H'? – collapsar
Vielen Dank für Ihren Kommentar! Wirklich guter Punkt! Ich werde das Diagramm und die Frage zu einem komplexeren Diagramm aktualisieren, um genau zu zeigen, was ich will. – Glaze