Breadth First Search 宽度优先搜索
BFS(Breadth First Search 宽度优先搜索)
宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。
1.BFS实现方法
首先需要了解BFS搜索的顺序, BFS搜索的每一层, 都依次的遍历完, 然后进入下一层。
知道了搜索顺序, 就可以写出伪代码了。
queue<类型名称>
q.push(初始条件);
while(!q.empty()) {
x = q.front(); q.pop();
if(满足答案的条件) {
执行对应操作;
break;
}
生成下一层节点的方法;
q.push(由方法得到的结果);
}
2.例题
2.1最少步数
题目描述:
在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”。有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字。他的同桌平时喜欢下围棋,知道这件事后觉得很有趣,就想试一试,在一个(100×100)的围棋盘上任选两点A、B,A点放上黑子,B点放上白子,代表两匹马。棋子可以按“日”