广度优先搜索找出的是段数最少的路径 而狄克斯特拉算法可以找出最快的路径 ①找出最便宜的节点。比如说到A节点6分钟,到B节点2分钟【未明确前往终点的时间,假设无穷大】,所以节点B是最近的。 ②计算经节点B前往各个邻居所需的时间,B-->A ,五分钟,更短! 直接到A需要6分钟。 对于节点B的邻居,如果 ...
分类:
编程语言 时间:
2020-04-19 18:03:51
阅读次数:
66
一、广搜的特性(队列状态之特性) 当使用BFS遍历一张无权图,每次从队列中取出队首进行一系列扩展,将扩展成功结点放入队尾中; 这样的操作会使得整队列满足“两段性”,即对于这张搜索树中队列只会保留两层的结点; 证明: 1. 第p层结点扩展时只会扩展第p+1层结点,不会越级扩展p+k层结点(p = 1& ...
分类:
其他好文 时间:
2020-04-04 00:06:00
阅读次数:
69
【最短路径】之 "Bellman Ford算法" 最短路径 问题是 "图论" 研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。算法具体的形式包括: 确定起点的最短路径问题 即已知起始结点,求最短路径的问题。适合使用 "Dijkstra算法" 。 确定终点的最短路径问 ...
分类:
编程语言 时间:
2020-03-30 12:36:53
阅读次数:
88
广度优先搜索(BFS) 主要用于树的层序遍历或图的最短路径寻找,主要使用队列queue来完成。 ①树的层序遍历:使用队列保存未被检测的结点,结点按照宽度优先的次序被访问和进出队。 ②有向无环图的最短路径查找:由于有向无环图的某个节点的next节点可能会与另一个节点的next节点重复,所以我们需要记录 ...
分类:
其他好文 时间:
2020-03-26 17:50:35
阅读次数:
78
1252:走迷宫 时间限制: 1000 ms 内存限制: 65536 KB提交数: 7272 通过数: 3241 【题目描述】 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。 给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或 ...
分类:
其他好文 时间:
2020-03-25 21:50:27
阅读次数:
205
1329:【例8.2】细胞 时间限制: 1000 ms 内存限制: 65536 KB提交数: 8535 通过数: 4744 【题目描述】 一矩形阵列由数字00到99组成,数字11到99代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如: 阵列 4 10 0 ...
分类:
其他好文 时间:
2020-03-25 21:17:51
阅读次数:
91
前面介绍了深度优先搜索,可知DFS是以深度作为关键词的,即当碰到岔道口时总是先选择其中的一条岔路前进,而不管其它的岔路, 直到碰到死胡同时才返回岔道口并选择其它岔路。接下来介绍的广度优先搜索(Breadth First Search,BFS)则是以广度为第一关键词, 当碰到岔道口时,总是先依次访问从 ...
分类:
其他好文 时间:
2020-03-24 23:17:24
阅读次数:
71
题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1728/ 关于广度优先搜索的第一篇题解。广度优先搜索,就是状态树的层次遍历,一层一层的搜索,直到搜索到目标状态为止。在扩展的过程中设定一种由上一层扩展到下一层的转化机制,将出现的新的状态放入队列之中,每次取出队首元 ...
分类:
其他好文 时间:
2020-03-16 21:48:42
阅读次数:
75
DFS使用c++中的stack,BFS使用c++中的queue 1 #include <iostream> 2 #define MAX_VERTS 20 3 #include <stack> 4 #include <queue> 5 6 using namespace std; 7 8 class ...
分类:
其他好文 时间:
2020-03-14 20:24:01
阅读次数:
68
题意: 0到N的数轴上,每次可以选择移动到x-1,x+1,2*x,问从n移动到k的最少步数。 思路: 同时遍历三种可能并记忆化入队即可。 Tips: n大于等于k时最短步数为n-k。 在移动的过程中可能会越界、重复访问。 poj不支持<bits/stdc++.h>和基于范围的for循环。 #incl ...
分类:
其他好文 时间:
2020-03-13 18:38:08
阅读次数:
50