本专题主要锻炼搜索的两大方法——bfs (广度优先搜索)和 dfs (深度优先搜索)======================华丽的分割线=============================一、bfs——广度优先搜索 bfs主要运用于搜索中求最短时间的问题,搜索过程中一般需要运用 ...
分类:
其他好文 时间:
2015-06-09 23:37:38
阅读次数:
176
这道题我们可以采用广度优先搜索的办法,在我看来实现起来要比深搜更好一些核心算法写为了bfs()函数 = =#include #include using namespace std;typedef struct{ int x; int y;}location;int n, dis;loc...
分类:
其他好文 时间:
2015-06-09 23:29:50
阅读次数:
118
搜索算法问题求解
一、需求分析
分别用深度优先、迭代加深、一致代价、A*搜索算法得到从起始点Arad到目标点Bucharest的一条路径,即为罗马尼亚问题的一个解,在求解的过程中记录每种算法得到的解,即输出每种解得到的条路径。
图一:罗马尼亚地图
二、详细代码
测试类:
/**Main类,打印各个算法的结果
* @author dyl * */classMain{...
分类:
编程语言 时间:
2015-06-07 12:38:04
阅读次数:
155
1 #include 2 /* 3 输入一个数n,输出1~n的全排列,有多少种不同的排列? 4 //暴力枚举当然可以,写判断累死.for循环嵌套起来也是累. 5 6 这里运用的是depth first search,DFS 深度优先搜索的思想 7 装作n对应的是n张扑克牌,将其放入n个盒子里有...
分类:
编程语言 时间:
2015-06-06 01:36:54
阅读次数:
143
要按从上到下,从左到右的顺序查找叶子节点,可以采用广度优先搜索的办法#include #include using namespace std;typedef struct{ int loc; int left; int right;}unit;int n;unit* a;int ...
分类:
其他好文 时间:
2015-06-05 22:35:23
阅读次数:
180
template //深度优先搜索DFS算法(全图)
void Graph::dfs(int s) { //assert: 0 <= s < n
reset(); int clock = 0; int v = s; //初始化
do //逐一检查所有顶点
if (UNDISCOVERED == status...
分类:
其他好文 时间:
2015-06-05 17:42:20
阅读次数:
142
查找某一结点的邻居: virtual int firstNbr(int i) { return nextNbr(i, n); } //首个邻接顶点
virtual int nextNbr(int i, int j) //相对于顶点j的下一邻接顶点
{ while ((-1 < j) && (!exists(i, --j))); return j; } //逆向线性试探(改用邻接表可提...
分类:
其他好文 时间:
2015-06-05 14:06:02
阅读次数:
170
根据图的深度优先遍历和广度优先遍历,可以用最少的边连接所有的顶点,而且不会形成回路。这种连接所有顶点并且路径唯一的树型结构称为生成树或扩展树。实际中,希望产生的生成树的所有边的权值和最小,称之为最小生成树。
常见的最小生成树算法有Kruskal算法和Prim算法。
Kruskal算法每次选取权值最小的边。然后检查是否加入后形成回路,如果形成回路则需要放弃。最终构成最小生成树。n个顶点的图最小生...
分类:
编程语言 时间:
2015-06-04 17:10:21
阅读次数:
151
#include
#include
#include
#include
#define INFINTY INT_MAX //最大值
#define MaxVertexNum 100 //最大顶点数
using namespace std;
typedef enum{DG,UDG,DN,UDN} GraphKind; //图的种类(有向图,无向图,又向网,无向网) ...
分类:
其他好文 时间:
2015-06-04 15:54:10
阅读次数:
150
一 最短路径最短路径分为单源最短路径和任意两点的最短路径,前者用Dijkstra算法,后者用floyed算法。Dijkstra算法是一种广度优先算法,以起始点层层往外扩展,直至到终点为止。其把顶点分为两个集合: 1. 已经求出最短路径的节点集合 S 2. 未确定最短路径的顶点集合U通过逐渐把U中.....
分类:
编程语言 时间:
2015-06-04 11:43:44
阅读次数:
163