贪心算法——单源最短路径(Dijkstra算法)

本文介绍了Dijkstra算法用于解决单源最短路径问题,通过贪心策略每次选取距离源点最近的未访问顶点,逐步构造最短路径。详细阐述了算法步骤,并提供了C++实现,算法时间复杂度为O(n^2)。
摘要由CSDN通过智能技术生成

关于贪心算法介绍:
http://blog.csdn.net/mind_v/article/details/72956707

单源最短路径——Dijkstra算法

问题描述

对于给定的加权有向图G(加权邻接数组表示),它的每一条边(i,j)都有一个固定成本(权值)a[i][j],一条路径的长度就是该路径上所有边的的成本之和。如下图所示,路径124的长度是8,路径125的长度是9。
寻找一条从给定的一个源顶点出发到任意顶点的(目的顶点)的最短路径。如1到5的最短路径为1345。

这里写图片描述

贪心法求解

根据贪婪法,每一步生成一条当前顶点的最短路径。每一条最短路径的目的顶点的选择方法依据贪婪准则:从一条最短路径还没有到达的顶点中,选择一个可以产生最短路径的目的顶点。

我们定义distanceFromSource[i]是在已生成的最短路径上再拓展一条最短边而到达顶点i时的最短路径长度。最开始,只有一条从sourceVertex到sourceVertex的路径,长度为0。这是对于每一个顶点,distanceFro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值