深度优先算法和广度优先算法
深度优先算法DFS(Depth-First-Search)
广度优先算法BFS(Breadth-First-Search)又叫做层次遍历,自上向下,自左向右逐层访问结点,访问完一层再访问下一层,直到无结点。
深度优先搜素算法:不全部保留结点,占用空间少;有回溯操作(即有入栈、出栈操作),运行速度慢。其实回溯法就是对隐式图的深度优先算法,若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束。
广度优先搜索算法:保留全部结点,占用空间大; 无回溯操作(即无入栈、出栈操作),运行速度快。若图中所有边的长度相等,广度优先搜索算法是最佳解——亦即它找到的第一个解,距离根节点的边数目一定最少;但对一般的图来说,BFS并不一定回传最佳解。这是因为当图形为加权图(亦即各边长度不同)时,BFS仍然回传从根节点开始,经过边数目最少的解;而这个解距离根节点的距离不一定最短。这个问题可以使用考虑各边权值,BFS的改良算法成本一致搜索法来解决。然而,若非加权图形,则所有边的长度相等,BFS就能找到最近的最佳解。