频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
有向图的无权图最短路径算法与带权图的Dijkstra算法
2017-04-21 09:45:18           
收藏   我要投稿

有向图的无权图最短路径算法与带权图的Dijkstra算法:最短路径算法是图论中的常见问题,在实际中有着较为广泛的应用,比如查找从一个地方到另一个地方的最快方式。问题可以概括为,对于某个输入顶点s,给出s到所有其它顶点的最短路径。水平有限,暂时先对这个问题的求解做简单记录。

无权图是有权最短路径的特例,即边的权重均是1。算法类似于BFS(宽度优先搜索),在实现时需要一个宽度优先搜索的队列。全局变量Distance用来保存所有点到输入顶点的距离。以邻接表表示图,无权图最短路径算法:

//无权图的最短路径算法
	static void UnweightedShortestPath(Graph g, int start){
		Queue Q = new LinkedList();
		int v,w;
		Q.offer(start);
		g.getVertics().get(start).setVivited(true);  //输入顶点被标记为已访问
		for(int i=0;i Dijkstra算法是解决最短路径问题的常见算法,过程需要使用优先队列来代替无权图最短路径算法。源点到某个顶点的距离为从源点到该顶点的路径上的所有边权值之和,当新计算得到的距离小于原有的距离时,更新距离。

 

 

//Dijkstra算法
	static void Dijkstra(Graph g, int start){
		MinHeap PQ = new MinHeap(10, 0);     //最小堆实现优先队列
		int v,w;
		PQ.Insert(new NodeWithProority(0,0));//NodeWithprority是一个只包括顶点的序号和权值(到给定起始点的距离)的类
		g.getVertics().get(start).setVivited(true);
		for( int i=0;i d){                    //如果新的距离比原有的小,需要更新距离
					Distance[w] = d;
					for(int i=0;i

 

点击复制链接 与好友分享!回本站首页
上一篇:使用OpenSSL生成证书,并且配置到tomcat下载ipa
下一篇:LeetCode 72题目解答
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站