对于这些情况,BFS与DFS?

时间:2017-03-23 15:46:56

标签: algorithm breadth-first-search dfs

我无法决定是否在这两种情况下使用bfs或dfs

情况1:图是不平衡的无向边加权树,高度为40,任何叶节点的最小深度为38.什么是从根到任何叶子找到最小边缘成本的最佳算法

情境2:图表是最大堆,该算法最适合在堆的每个级别内找到最大密钥值。

对于情况1我正在考虑DFS,因为您不必遍历所有分支以找到最小的分支,第二分支比您停止的比较大。

表示情况2我正在考虑BFS,因为BFS一次从每个级别获取所有节点,并且更适合比较..

任何建议?

1 个答案:

答案 0 :(得分:0)

我假设在两种情况下你都只有一个指向树/堆根的指针。

无论您使用BFS还是DFS,两种情况的最坏情况时间复杂度都是O(n),其中n是节点数。因此,您可以提出的任何优化平均值为#34;"优化

你是正确的,因为你给出的确切原因,DFS可能比情况1的BFS表现更好。

但是,对于情况2,DFS并不比BFS慢(理论上至少),因为您可以简单地将每个节点存储在相应的级别,然后比较每个级别中的所有节点。然而,对于空间复杂性,BFS会更好,因为一旦完成一个级别并且你移动到下一个级别,你就不必存储任何父节点。因此,建议在情况2中使用BFS。

相关问题