宽度优先搜索
定义:宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。
之所以称之为宽度优先算法,是因为算法自始至终一直通过已找到和未找到顶点之间的边界向外扩展,就是说,算法首先搜索和s距离为k的所有顶点,然后再去搜索和S距离为k+l的其他顶点。
搜索过程:从初始结点开始,逐层向下扩展,即第n层搜索未完成,不得进入下一层搜索
一、初始结点入队,进入循环
二、取出队列的第一个元素
三、判断该结点是不是目标结点,如果是目标结点,则问题解决,跳出循环
四、如果该结点不是目标结点,判断其是否能够扩展,若不能,跳到步骤二
五、如果该结点能扩展,将其子结点放入队列的尾部
六、跳到步骤二
经典问题(走迷宫)
给定一个二维数组 inta[10][10] = {0 , 1 , 0 , 0 , 0
0 , 1 , 0 , 1 , 0