首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >无向图----广度优先搜索

无向图----广度优先搜索

作者头像
SuperHeroes
发布2018-05-30 17:49:17
发布2018-05-30 17:49:17
1.1K00
代码可运行
举报
文章被收录于专栏:云霄雨霁云霄雨霁
运行总次数:0
代码可运行

上一篇:无向图的实现

下一篇:深度优先遍历

广度优先搜索比深度优先搜索更容易解决最短路径问题。

使用广度优先搜索查找图中路径:

代码语言:javascript
代码运行次数:0
运行
复制
public class BreadthFirstPaths {
	private boolean[] marked;
	private int[] edgeTo;
	private int s;
	
	public BreadthFirstPaths(Graph G,int s){
		marked = new boolean[G.V()];
		edgeTo = new int[G.V()];
		this.s =s ;
		bfs(G,s);
	}
    //广度优先遍历
	private void bfs(Graph G,int s) {
		Queue<Integer> queue = new Queue<Integer>();    //用队列保存遍历到的结点
		marked[s] = true;//标记起点
		queue.enqueue(s);//将起点加入队列
		while(!queue.isEmpty()) {
			int v = queue.dequeue();//从队列中删去下一个顶点
			for(int w:G.adj(v))    //将与该点相连的结点加入队列中
				if(!marked[w]) {
					edgeTo[w] = v;//保存路径(这里直接就是最短路径)
					marked[w] = true;//标记它
					queue.enqueue(w);//添加到队列中
				}
		}
	}
	public boolean hasPathTo(int v) {return marked[v];}
}

对于从s可达的任意顶点v,广度优先搜索都能找到一条s到v的最短路径。

广度优先搜索最坏情况下所需时间和V+E成正比。

下一篇:加权无向图的实现

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.12.20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档