【发布时间】:2017-08-16 07:00:50
【问题描述】:
我无法决定在这两种情况下是否使用 bfs 或 dfs
情况1:图是高度为40且到任何叶节点的最小深度为38的不平衡无向边加权树。找到从根到任何叶的最小边成本的最佳算法是什么
情况2:图是一个最大堆,哪种算法最好在堆的每一层内找到最大的键值。
对于情况 1,我正在考虑 DFS,因为您不必遍历所有分支来找到最小的分支,第二个分支大于您停止的比较。
对于情况 2,我正在考虑 BFS,因为 BFS 一次从每个级别获取所有节点,并且更适合比较..
有什么建议吗?
【问题讨论】:
-
您是否出于特殊原因不提及 Dijkstra(针对情况 1)?它增加了对数开销,但如果情况非常不平衡,可以有效地避免坏分支。
标签: algorithm depth-first-search breadth-first-search