我的深度有点偏离,需要给朋友打电话。我有一个我需要遍历的定向非循环图,我第一次绊到了图论。我最近一直在阅读很多关于它的内容,但不幸的是我没有时间在学术上解决这个问题。有人可以给我一些关于如何处理这棵树的帮助吗?
以下是规则:
从下图中可以看出,需要在a
,b
或{之前处理节点c
,d
和e
{1}}。
走这棵树的正确顺序是什么?
答案 0 :(得分:7)
我会研究DAG的线性化,这应该可以通过拓扑排序来实现。
根据我的记忆,线性化基本上按照保持不变量的顺序进行排序,对于所有节点(Node_X),其具有与任何其他给定节点NodeA
的outdegree,NodeX
出现在{ {1}}。
这意味着,从您的示例中,将首先处理节点a,b和d。节点c秒。节点e和f,最后一次。
答案 1 :(得分:5)
您需要通过Topological sort处理节点。排序不一定是唯一的,因此可能有多个可用订单(并不是说无论如何这都很重要)。
链接的维基百科页面应该有具体的算法来帮助你。