83-最短路径问题New(2).pdf
- 奉献教育1688个人认证 |
- 2021-10-16 发布|
- 1.15 MB|
- 25页
离散数学及其应用 最短路径问题 最短路径问题
– 无向简单连通图的边或结点带有信息的图称为带权图。
– 在一个无向简单连通边带权图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.