【问题标题】:Topological sort of DAGDAG的拓扑排序
【发布时间】:2015-04-26 13:32:42
【问题描述】:

我有一个 dag(树),其中有向边只有三种:

  1. 从左到右(兄弟姐妹)
  2. 孩子到父母
  3. 孩子的父母

具体来说,问题是评估一个属性解析树,但具体问题是什么并不重要。

种类:

什么遍历可以保证给节点的拓扑排序?

我认为 inorder 会失败,但有些地方建议 inorder 是要走的路。我知道一般 DAGS 上的反向 post order woeks 但我认为我的情况必须有一个更简单的遍历。

【问题讨论】:

  • 你说它是一个“DAG”,但你没有证明它是一个 DAG;你描述的东西对我来说听起来像一棵普通的树。如果它不是 DAG,则您实际上不需要对其进行排序。由于这是关于属性语法的,也许您对属性之间的依赖关系感兴趣?
  • @IraBaxter 是的,这里有一棵树。我想对其进行排序以使依赖关系正常。它是一个 L 属性语法的注释语法树。
  • @IraBaxter 感谢您之前的回答,非常棒。

标签: parsing sorting compiler-construction directed-acyclic-graphs topological-sort


【解决方案1】:

由于您的图是一个 DAG,因此您没有后边,您可以使用深度优先搜索来遍历您的图并按照节点从 DFS 堆栈中出来的顺序将节点添加到您的排序列表中。

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多