搜索
文章平均质量分 92
BFS与DFS
爱学习的图灵机
计算机新生努力学习
展开
-
BFS进阶技巧——多源BFS、最小步数模型、双端队列广搜、双向广搜
多源BFS多源BFS时有从多个源点出发的bfs算法,只需要将多个源点都连一条边权为0的边到虚拟源点,那么问题就等价于从虚拟源点开始BFS。一开始直接将所有源点加入BFS的队列即可.矩阵距离 输入样例:3 4000100110110输出样例:3 2 1 02 1 0 01 0 0 1思路题意为搜索所有0点到一群1点的最短曼哈顿距离。将所有为1的点直接加入bfs队列,向外搜索,由bfs性质到达的点一定离虚拟源点最短,而到虚拟源点的距离 == 到1点的距离,故最短。代码/*原创 2022-01-31 23:10:05 · 1756 阅读 · 0 评论 -
BFS基础应用--6道题
0.bfs的定义和性质bfs,译为中文是广度优先搜索,在图结构中从起点开始优先搜索直接相连的点,将这些点加入队列,再搜索这些点直接相连的点,以此过程重复。普通bfs可以用来求边权为1的图上的最短路(特殊的可以求边权<=0,下文会说),或某种带有变换性质的图、通过变换到达指定状态的最小步数。第二种情况的图如果满足群的性质那就是一个群(废话),那么此时bfs就在cayley图上搜索。1.基础应用1.1 Flood Fill 算法Flood Fill很简单,就是利用bfs的过程对连通块进行操作原创 2022-01-31 01:01:14 · 892 阅读 · 0 评论 -
DFS进阶技巧--迭代加深,IDA*和双向DFS
文章目录1.迭代加深AdditionChains2.IDA*BooksortTheRotationGame3.双向DFS送礼物1.迭代加深深度优先搜索每次选定一个分支,不断深入直到递归边界才回溯.当搜索树的分支特别多,但答案处于较浅层的节点上,就会导致浪费许多时间.所以我们通过指定搜索的最大深度,逐步加深,保证递归层数不大.这种方法确实会重复搜索浅层节点,但是前n−1n - 1n−1层的节点数量之和在最坏情况下等于第nnn层节点数 - 1(满二叉树),分支增多则小于最后一层节点数,故总数量级仍为最原创 2022-01-31 12:23:57 · 1328 阅读 · 0 评论