为DAG分配优先级

时间:2015-01-13 16:24:20

标签: java directed-acyclic-graphs

我将DAG存储为数组。如何以父节点获得最高优先级并且所有叶节点具有最低优先级的方式为DAG分配优先级?

如果我有DAG如下

    A       # A -> B,C                      # A     
   / \      # B -> D        ----->          # B C   //can be used in parallel
  C   B     # C -> E                        # D 
  \    \    # D -> E                        # E
   \   D    # E ->                             
    \ /
     E

我将父节点和子节点都存储在我用作DAG的数组中。

拓扑排序返回一个线性列表,例如仅A,C,B,D,E

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是topological ordering,这是一种对DAG中的节点进行排序的方法,这样就不会在每个父节点之前出现节点。幸运的是,使用各种拓扑排序算法可以非常有效地(线性时间)找到拓扑排序,包括基于DAG的简单DFS的算法。

希望这有帮助!