定向非循环图遍历......有帮助吗?

时间:2011-08-08 21:56:31

标签: graph traversal directed-acyclic-graphs

我的深度有点偏离,需要给朋友打电话。我有一个我需要遍历的定向非循环图,我第一次绊到了图论。我最近一直在阅读很多关于它的内容,但不幸的是我没有时间在学术上解决这个问题。有人可以给我一些关于如何处理这棵树的帮助吗?

以下是规则:

  • n 根节点(我称之为“来源”)
  • n 结束节点
  • 源节点带有数值
  • 下游节点(我称之为“工作”节点)对传入值(如Add,Mult等)执行各种操作。

从下图中可以看出,需要在ab或{之前处理节点cde {1}}。

走这棵树的正确顺序是什么?

enter image description here

2 个答案:

答案 0 :(得分:7)

我会研究DAG的线性化,这应该可以通过拓扑排序来实现。

根据我的记忆,线性化基本上按照保持不变量的顺序进行排序,对于所有节点(Node_X),其具有与任何其他给定节点NodeA的outdegree,NodeX出现在{ {1}}。

这意味着,从您的示例中,将首先处理节点a,b和d。节点c秒。节点e和f,最后一次。

http://en.wikipedia.org/wiki/Topological_sorting

答案 1 :(得分:5)

您需要通过Topological sort处理节点。排序不一定是唯一的,因此可能有多个可用订单(并不是说无论如何这都很重要)。

链接的维基百科页面应该有具体的算法来帮助你。