83-最短路径问题New(2).pdf

想预览更多内容,点击预览全文

申明敬告:

本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己完全接受本站规则且自行承担所有风险,本站不退款、不进行额外附加服务;如果您已付费下载过本站文档,您可以点击这里二次下载

文档介绍

离散数学及其应用 最短路径问题 最短路径问题

– 无向简单连通图的边或结点带有信息的图称为带权图。

– 在一个无向简单连通边带权图G= (V,E ,W)中,从u到v的一条 通路中包含的各条边的权值之和称为这条通路的长度。

– 从u到v的所有通路中长度最短的通路称为u到v的最短路径。

– 求给定两结点之间的长度最短的通路问题称为最短路径问题. a b 3 2 2 1 uadv是u到v的最短路径 u v 1 2 3 c d Dijkstra算法 Dijkstra (迪杰斯特拉)算法是求最短路径算法,用于计算权值非

负的图的一个结点到其他所有结点的最短路径。 算法思想:

• 把图G( V,E)中结点集合V分成两组,第一组为已求出最短路径的

结点集合S ,第二组为其余未确定最短路径的结点集合T ;

• 初始时S中只有一个源结点,按最短路径长度的递增次序依次把

集合T的结点加入集合S中。

• 每个结点对应一个距离,S中的结点的距离就是从u到此结点的最

短路径长度;T中的结点的距离,是从u到此结点只包括S中的结点

为中间结点的当前最短路径长度。 Dijkstra算法 设带权图G(V,E,W)和结点u ,其中每条边e的权W(e)为非负实数,求结

点u到其它结点的最短路径长度: 1. 初始化结点距离值L(v ), v V。除L(u)初始化为0 ,其它所有结点 i i

L(v )=+,S={u},T= V- {u}。 i 2. 修改和结点u相邻的结点v 的距离值:L(v )= W(u,v ) ,更新T中的结点 i i i

距离值L 。 3. 将T中具有最小L值的结点记为t ,从集合T中删除t ,添加t到集合S中,

即S = S{t},T=T- {t} 。 4. 修改T中和结点t相邻的结点v 的L值:L(v )=min {L(v ), L(t)+ W(t,v )}。 i i i i 5.

最近下载