拓扑排序(针对有向无回路图DAG)是深度优先搜索的一个应用,其结果图中所有顶点的一个线性排列。
伪代码如下:
EG:
拓扑排序完整代码如下:
#include
#include
#include
#include
using namespace std;
#define UDG 0
#define DG 1
#define WHITE 0
#define ...
分类:
编程语言 时间:
2015-07-20 09:21:45
阅读次数:
172
图有两种标准的表示方法,即邻接矩阵和邻接表(通常邻接矩阵用于稠密图,邻接表用于稀疏图)。如下:
对于图的搜索有两种方法:深度优先搜索 & 广度优先搜索。
广度优先搜索(Breadth-first search)
广度优先搜索是将已发现和未发现顶点之间的边界沿其广度方向向外扩展。亦即算法首先会发现和s距离为k的所有点,然后才会发现和s距离为k+1的其他顶点。
伪代码:
...
分类:
编程语言 时间:
2015-07-20 09:18:55
阅读次数:
184
无向图的深度优先搜索与广度优先搜索
#include "stdafx.h"
#include
#include
using namespace std;
#define N 9
typedef struct{
int vexnum, arcnum;
char vexs[N];
int matirx[N][N];
}graph;
graph g;
int a[N] = { 0 ...
分类:
其他好文 时间:
2015-07-19 15:02:39
阅读次数:
93
题目的意思是:给你一个迷宫,0代表墙,1代表路,2代表起始位置,3代表终点,4代表爆破装置。一开始,你在2的位置,求到3的最少步数。
起初,你只有6秒钟的时间,时间减到0,你没到3的位置,代表不能出去,输出-1.想要增加时间,可以引爆爆破装置,引爆之后,时间重置为6,可以引爆多个。到引爆装置的时候,时间必须大于0,不然没有时间可以引爆。
迷宫最大是8 * 8。用广度优先搜索可以简单的解决问题。...
分类:
Web程序 时间:
2015-07-19 12:03:33
阅读次数:
128
题目地址:http://codevs.cn/problem/1031/
分析:
深搜回溯
代码:
var s:set of 1..17;
a:array[1..17]of word;
n:word;
b:boolean;
procedure print;{输出}
var i:word;
begin
for i:=1 to n do
write(a[i],' '...
分类:
其他好文 时间:
2015-07-18 17:10:34
阅读次数:
178
思想:用path数组存放路径(初始为空),d表示路径长度(初始为-1),查找从顶点u到v的最短路径过程如图所示:
对应算法如下:
void FindPath(AGraph *G,int u,int v,int path[ ],int d)
{
in...
分类:
编程语言 时间:
2015-07-18 14:12:20
阅读次数:
174
思想:图G是不带权的无向连通图,一条边的长度计为1,因此,求带顶点u和顶点v的最短的路径即求顶点u和顶点v的边数最少的顶点序列。利用广度优先遍历算法,从u出发进行广度遍历,类似于从顶点u出发一层一层地向外扩展,当第一次找到顶点v时队列中便包含了从顶点u到顶点v最近的路径,如图所示,再利用队列输出最路径(逆路径),所以设计成非循环队列。
...
分类:
编程语言 时间:
2015-07-18 12:40:05
阅读次数:
358
思想:图G是不带权的无向连通图,一条边的长度为1,因此,求距离顶点v的最远的顶点,即求距离顶点v的边数最多的顶点。利用广度优先遍历算法,从v出发进行广度遍历,类似于从顶点v出发一层层地向外扩展,到达j, …,最后到达的一个顶点k即为距离v最远的顶点。遍历时利用队列逐层暂存各个顶点,最后出队的一个顶点k即为所求。如图所示:
对...
分类:
编程语言 时间:
2015-07-18 11:04:50
阅读次数:
444
对于无向图来说DFS深度搜索 递归思想//深度优先搜索DFS的一般实现void DFS(MGraph G,int i)//DFS递归思想{ int j; visited[i]=TRUE;//设置Node已经被访问 printf("%c",G.vexs[i]); for(j=0...
分类:
其他好文 时间:
2015-07-17 22:34:54
阅读次数:
314