从时间空间复杂度,使用场合进行分析广度优先搜索和深度优先搜索。
前置条件
一棵树,满足以下条件:
- 每个树的节点至多可以有w个扇出,即分支节点可以有n个子节点。
- 树都高度为h,即,树共有h+1层。
时间复杂度
深度优先搜索与广度优先搜索的最坏情况都是最后一个叶节点代表目标节点,那么二者的时间复杂度都是:w0+w1+w2+……+wh = O(h w^h)。
空间复杂度
深度优先搜索的空间复杂度的最坏情况是一直展开,直到树的最后一层的第一个节点,栈中包含有树的第二层以及h-1个节点,其空间复杂度是:w + h - 1 = O(w+h)。
广度优先搜索的空间复杂度的最坏情况是队列中包含有最后一层的节点,其空间复杂度是:wh=O(wh)。
使用场合
深度优先搜索可以尽快的找到一个可行解,可用于在优化问题中进行剪支。
广度优先搜索可以尽快的找打一个子问题的最优解。