我正在尝试使用贪婪算法访问有向无环图中的所有节点。我认为像深度优先搜索这样的东西会起作用,但我不确定这对于DAG是如何工作的,因为我无法通过图表追溯自己。
感谢。
答案 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(递归)的作用是在当前实例完成时返回其调用者实例。由于它使用堆栈来保存所有活动实例,因此您不必自己返回,当函数在当前节点上执行完毕时,它会自动回滚到上一个节点。