使用贪婪算法访问DAG中的所有节点

时间:2013-03-06 07:33:18

标签: algorithm graph

我正在尝试使用贪婪算法访问有向无环图中的所有节点。我认为像深度优先搜索这样的东西会起作用,但我不确定这对于DAG是如何工作的,因为我无法通过图表追溯自己。

感谢。

2 个答案:

答案 0 :(得分:2)

是的,你可以使用深度优先搜索(DFS)或广度优先搜索(BFS),检查任何好的texbook,例如,Thomas H. Cormen的“算法简介”。

您不需要使用边缘来“追溯自己”,使用堆栈(或递归)或队列。

答案 1 :(得分:1)

void dfs(node V) {
    mark V as visited;
    for each edge E, so that E.source = V, do {
        if(E.destination is not marked as visited) {
            dfs(E.destination);
        }
    }
}

就是这样。 DFS(递归)的作用是在当前实例完成时返回其调用者实例。由于它使用堆栈来保存所有活动实例,因此您不必自己返回,当函数在当前节点上执行完毕时,它会自动回滚到上一个节点。