用于查找特定节点的依赖关系的拓扑排序

时间:2013-01-22 12:32:46

标签: algorithm graph computer-science topological-sort

鉴于以下graph

enter image description here

我可以使用什么算法输出拓扑有序列表,其中包含要完成的任务,并且这些算法仅适用于特定节点?

例如,考虑node 2,列表应为:

7, 5, 11, 2

5, 7, 11, 2

2 个答案:

答案 0 :(得分:2)

  1. 反转边缘
  2. 2
  3. 开始运行DFS
  4. 离开节点后,将其插入列表中。
  5. 示例:

    Enter 2
      Enter 11
        Enter 7
        Leave 7, insert into list
        Enter 5
        Leave 5, insert into list
      Leave 11, insert into list
    Done, insert 2 into list
    
    Result: 7, 5, 11, 2
    

答案 1 :(得分:1)

您必须将图分解为邻接矩阵,其中从节点A到节点B的每个链路在矩阵中表示为“1”,其中节点对应于节点和列。

从这一点来说,您需要做的就是从终端节点向后工作,识别指向它的节点,然后从每个节点向后工作。

现在,您可能希望以广度优先的方式执行此操作,因此请使用队列数据结构来跟踪“从属”节点。