Gerichtete Azyklische Graph Traversal... Hilfe?
ein wenig aus meiner Tiefe hier und Notwendigkeit, rufen Sie einen Freund. Ich habe einen gerichteten azyklischen Graphen, die ich brauche, um die traverse und ich bin stolpern in der Graphentheorie für die erste Zeit. Ich ve wurde Lesen eine Menge über das es in letzter Zeit, aber leider habe ich keine Zeit, um dies herauszufinden, wissenschaftlich. Kann jemand geben mir einen kick, mit etwas Hilfe, wie zu Verfahren ist dieser Baum?
Hier sind die Regeln:
- es gibt n root-Knoten (ich nenne Sie "Quellen")
- es gibt n Endknoten
- source-Knoten mit einem numerischen Wert
- downstream-Knoten (ich nennen Sie "worker nodes") durchführen verschiedener Operationen, die auf die ankommenden Werte wie Add, Mult, etc.
Wie Sie sehen können aus dem Diagramm unten, Knoten a
, b
, und c
müssen verarbeitet werden, bevor d
, e
oder f
.
Was ist der richtige, um zu Fuß diesen Baum?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde in die Linearisierung von DAGs, die zu erreichen sein dürfte, durch Topologische Sortierungen.
Linearisierung, von was ich mich erinnere, im Grunde sortiert in eine Reihenfolge, die hält die invariante, die für alle Knoten (Node_X), die eine outdegree zu beliebigen anderen Knoten
NodeA
,NodeX
erscheint vorNodeA
.Dies würde bedeuten, dass, aus deinem Beispiel Knoten a,b und d werden zuerst verarbeitet. Knoten c zweite. Knoten e und f, letzten.
http://en.wikipedia.org/wiki/Topological_sorting
Benötigen Sie den Knoten über eine Topologische Sortieren. Die Art ist nicht unbedingt eindeutig, so dass es möglicherweise mehr als einen zur Verfügung, um (nicht, dass dies eh egal).
Den verlinkten wikipedia-Seite sollte konkrete algorithmen, um Ihnen zu helfen.