对于搜索其实我还不是太会(对于dfs),不过我有把握讲bfs………………
宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。BFS,其英文全称是Breadth First Search。 BFS并不使用经验法则算法。从算法的观点,所有因为展开节点而得到的子节点都会被加进一个先进先出的队列中。一般的实验里,其邻居节点尚未被检验过的节点会被放置在一个被称为 open 的容器中(例如队列或是链表),而被检验过的节点则被放置在被称为 closed 的容器中。(open-closed表)
其实bfs并没有想象中的那么难,对于它,我们要准备的是一只大脑与手、耳朵(或眼睛),搜索多依赖于方向数组、栈与队(dfs实质上实在调用系统栈,就在递归时;而bfs需要用队列来维护、实现)以及一系列烦人的东西。
啊?你问我基本模板?抱歉没有,dfs的倒有一个模板,相信你们不要hehe~。
对于bfs,不同于dfs的可以死记硬背,它的思想理解尤为重要;但对bfs主体,到有一个模板,但模板就是模板,重要的是对题目的了解,接着换掉一些、删掉一些、加一些东西,低级错误是绝对不可以出现的(如:循环时没设成局部变量,使至变量没清零就用),且我需要做的不过是简介而已。
具体用法、注意事项详见其他大佬的博客>>
完~~~~