图算法一之广度搜索(bfs)
来源:互联网 发布:淘宝c店怎么装修 编辑:程序博客网 时间:2024/05/16 11:20
最近在优化师姐的论文,主要研究大规模图的可达性问题,原本就对图算法很模糊的我,显得更加糊涂。原来就对图的一些遍历算法就不是很了解,在阅读了算法设计手册之后,略有所悟。对于本文章有不足之处,希望各位批评指正。
对于每一个算法,数据结构的在算法的实现的过程中显得非常重要。下面就是我写的数据结构,当然是关于图的啦。这里主要是采用链表来存储每一个点的字节点。
struct edgenode{ int y;//下一个邻接点 int weight;//这一条边的权重 edgenode * next;//邻接点链表};struct graph{ int nvertex;//顶点个数 int nedges;//边的个数 int degree[MAX+1];//入度 edgenode *nodes[MAX+1];//邻接点 bool directed;//是否为有向图};对于广度优先,主要的思想是:给一个开始的点,然后找它的邻接点,如果邻接点没有被访问,加入队列, 然后在遍历队列。
void dfs(graph *g,int start){ edgenode *p; queue<int> q; q.push(start); discovered[start]=true; while(!q.empty()) { int x=q.top(); q.pop(); p=g->nodes[x]; if(!processed[x]) { cout<<x<<" "; processed[x]=true; } while(p) { int y=p->y; if(!processed[y]&&!discovered[y]) { parent[y]=x; q.push(y); discovered[y]=true; } p=p->next; } }}我这里添加了processed数组来判断该节点的处理,从以上代码可以看出,这里只是仅仅将节点答应出来。对于bfs,由于遍历了个点和边,时间复杂度为O(|V|+|E|)。
阅读全文
0 0
- 图算法一之广度搜索(bfs)
- BFS-广度优先搜索算法(图)
- 算法之BFS(广度优先搜索算法)
- 算法 BFS广度优先搜索
- 【算法】--广度优先搜索BFS
- 广度优先搜索BFS算法
- 图搜索算法之广度优先搜索(Breadth First Search,BFS)
- 训练第二周之BFS算法(广度优先搜索)
- 图的深度(DFS)/广度优先搜索算法(BFS)/Dijkstra
- 【算法导论】图的广度优先搜索遍历(BFS)
- 图的广度优先搜索算法并生成BFS树
- 广度优先搜索(BFS)算法
- 广度优先搜索算法(BFS)
- 【算法入门】广度/宽度优先搜索(BFS)
- 【算法入门】广度/宽度优先搜索(BFS)
- 【算法入门】广度/宽度优先搜索(BFS)
- 【算法】广度优先搜索(BFS)I
- 【算法】广度优先搜索(BFS)II
- PHP 获取客户端 IP
- 官宣:谷歌 AI 中国中心在北京成立
- 谈谈document.ready和window.onload的区别
- animation初体验
- sudo: mvn: command not found
- 图算法一之广度搜索(bfs)
- 基础工具---MD5加密
- Unity3d访问数据库
- 唯一的可能........
- Idea导入导出工具配置
- 知识 | 金融知识图谱
- 关于CMake生成OpenCV源码VS .sln出错的解决方法
- springcloud实战之7 断路器(Hystrix)
- Qt工程的目录结构创建