假设我们有无向加权图。我们的任务是找到两个顶点(源和目标)之间的所有路径,总成本等于 = N。我认为可以通过修改后的 Dijkstra 算法结合 BFS 或 DFS 来完成,但我不知道如何实现这样的事情。谢谢你的帮助。
问问题
396 次
1 回答
3
假设您有一个框架/库来创建图形数据结构并对其进行遍历,如果您越过资源限制,您可以进行回溯深度优先搜索并提前返回。在伪代码中:
void DFS(Vertex current, Vertex goal, List<Vertex> path, int money_left) {
// oops
if (money_left < 0)
return;
// avoid cycles
if (contains(path, current)
return;
// got it!
if (current == goal)) {
if (money_left == 0)
print(path);
return;
}
// keep looking
children = successors(current); // optionally sorted from low to high cost
for(child: children)
DFS(child, add_path(path, child), money_left - cost(child));
}
然后你可以把它称为DFS(start, goal, List<Vertex>(empty), N)
于 2013-01-24T21:43:20.657 回答