图论算法-搜索
来源:互联网 发布:单片机计分牌课设 编辑:程序博客网 时间:2024/06/06 06:30
BFS
bool visited[MAX_VERTEX_NUM); //访问标记数组 void BFSTraverse(Graph G){ //对图G进行广度优先遍历,设访问函数为visit() for(i=0;i<G.vexnum;i++) visited[i]=FALSE; //访问标志数组初始化 InitQueue(Q); //初始化辅助队列Q for(i=0;i<G.vexnum;i++) //从0号顶点开始遍历 if(!visited[i]) //对每个连通分量开始遍历 BFS(G,i); //v[i]未访问过,从v[i]开始BFS } void BFS(Graph G,int v){ //从顶点v出发,广度优先遍历图G,算法借助一个辅助队列Q visit(v); //访问初始顶点v visited[v]=TRUE; //对v做已访问标志 Enqueue(Q,v); //顶点v入队列 while(!isEmpty(Q)){ DeQueue(Q,v); //顶点v出队列 for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)) //检测v所有邻接点 if(!visited[w]){ //w为v的尚未访问的邻接顶点 visit(w); //访问顶点w visited[w]=TRUE; //对w做已访问标记 EnQueue(Q,w); //顶点w入队列 } } }
DFS
bool visited[MAX_VERTEX_NUM]; int Vnum=0,Enum=0; bool IsTree2(Graph G){ for(i=1;i<=G.vexnum;i++) visited[i]=FALSE; DFS(G,1); if(Vnum==G.vexnum && Enum==2*(G.vexnum-1)) return TRUE; else return FALSE; } void DFS(Graph G,int v){ visited[v]=TRUE; Vnum++; int w=FirstNeighbor(G,v); while(w!=-1){ //可以写成for的形式 Enum++; if(!visited[w]) DFS(G,w); w=NextNeighbor(G,v,w); } }
0 0
- 图论算法-搜索
- 小论搜索算法
- 一般图搜索算法
- 图的搜索算法
- 图的搜索算法
- 图算法--人肉搜索
- 图搜索算法
- 图搜索算法(一):图搜索的一般算法
- [算法] 基本图算法:深度优先搜索、广度优先搜索
- 图搜索的通用算法
- 图的搜索算法javascript
- 图算法:深度优先搜索
- 算法之图搜索算法(一)
- 算法之图搜索算法(一)
- 算法之图搜索算法(一)
- 算法导论中的图搜索算法范例
- 搜索算法
- 搜索算法
- javadoc中{@link}与@see的简单使用以及区别
- 文章标题
- 牛顿插值
- 文章标题
- ElasticSearch速学
- 图论算法-搜索
- ttyS、ttySAC、tty、ttyn的区别
- 数制转换
- 【LeetCode】413. Arithmetic Slices
- 了解linux网络协议栈(一)——内核模块初始化
- 最小生成树C++模板
- 题目1439:Least Common Multiple
- ~元素出栈、入栈顺序的合法性~
- NYOJ 323 Drainage Ditches 最大流 Dinic 算法模板