- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DJ算法
最短路的算法
一、最短路的算法
在图G中,给定和两个顶点。从到可以有多条路径,从这多条路径中找出长度最小的路,这样的路称为从到的最短路。设每条弧的长度均为非负值。
下面的算法是由狄克斯特拉(Dijkstra,1959)提出的,其想法是:设已知图中最接近于顶点s好m个顶点以及从顶点s到这些顶点中每一个顶点的最短路(从s到其本身的最短路是零路,即没有弧的路,其长度为0)。对顶点s和这m个顶点着色。然后最接近于s的第m+1个顶点如下求之:
对于每一个着色的顶点y,考虑所有已着色顶点x,把弧(x,y)接在从s到x的最短路后面,这样就得到从s到y的m条不同的路。从这m条不同的路中选出最短路,它就是s到y的最短路。相应的y点就是最接近于s的第m+1个顶点。因为所有弧的长度都是非负的,所以从s到最接近于s的第m+1个顶点的最短路必然只使用自己着色的顶点作为中间顶点。
从m=0开始,将这个过程重复进行下去,直至求得从s到t的最短路为止。
狄克斯特拉最短路算法
第一步,开始,所有弧和顶点都为着色。对每一个顶点x指定一个数d(x),d(x)表示从s到x的最短的长度(中间顶点均已着色)。开始时,令,(对所有)。y表示已着色的最后一个顶点。对始点s着色,令。
第二步,对每一个未着色的顶点x,重新定义如下:
对于所有未着色顶点x,如,则算法终止。因为此时从s到任一未着色的点都没有路。否则,对具有的最小值的为着色顶点x进行着色。同时把弧着色(指向顶点x的弧只有一条被着色)。令。
第三步,若干顶点t已着色,则算法终止。这时已找到一条从s到t的最短路。如果t未着色,则转第二步。
主意:已着色的弧不能构成一个圈,而是构成一个根在s的树形图,此树形图称为最短路树形图。若x是最短路树形图的中的任一顶点,则从s到x的唯一的一条路是从s到x的最短路。
这个算法可以看成是根在顶点s的树形图的生长过程。一旦达到顶点t,生长过程就停止。如果要确定从顶点s到图中所有其它顶点的最短路,则生长过程要继续下去,直至所有顶点都包含在最短路树形图内为止。此时要如何修改算法?
例 给定有向图如图1所示,用DJ算法找出从s到t的最短路。
第一步,开始只有s着色,,而且对于所有,。
第二步,
由于是最小值,所以对c点着色,并对确定的弧着色。当前的最短路树形图由弧组成,如图2。
第三步,顶点t为着色,返回第二步。
第二步
由于是最小值,所以对顶点a着色,并确定的弧着色。现有的最短路由和组成,见图3。
第三步,t为着色,返回第二步。
第二步,
最小,对d着色,确定的弧有两条,即和,可任选其中一条,对其着色,这里选。这样,现有的最短路树形图由弧、、组成,如图4。
第三步,t未着色,返回第二步。
第二步,
是最小值,对点b着色,对确定的弧进行着色。现有最短路树形图由弧、、和组成,见图5。
第三步,t为着色,返回第二步。
第二步,
对t及着色。最终的最短路树形图由弧、、、和组成,见图6。
从s到t的最短路由弧、、组成,其长度为3+3+2=8。这条最短路不是唯一的。
例3.5(最短路问题) 在纵横交错的公路网中,货车司机希望找到一条从一个城市到另一个城市的最短路,假设图7所示为公路网。节点表示货车可以停靠的城市,弧上的权值表示城市之间的距离(百公里)。那么货车从城市S出发到城市T,如何选择行使路线,使所经过的路程最短?
可以把S到T的行使过程分为4个阶段:
记为城市到城市的距离,若两城市没有路相连,则;表示城市到城市的最优行使路线长,则有
计算程序如下:
model:
sets:
cities/S,A1,A2,A3,B1,B2,C1,C2,T/:L;
roads(cities,cities)/
S,A1 S,A2 S,A3
A1,B1 A1,B2 A2,B1 A2,B2 A3,B1 A3,B2
B1,C1 B1,C2 B2,C1 B2,C2
C1,T C2,T/:D;
endsets
data:
D= 6 3 3
6 5 8 6 7 4
6 7 8 9
5 6;
L=0,,,,,,,,; !只有L(S)=0,其余为空;
enddata
@for(cities(i)|i #gt# @index(S): !对S指标进行索引;
L(i)=@min(roads(j,i):L(j)+D(j,i)););
end
s
aas
bs
t
ds
cs
4
7
3
2
2
3
3
2
图1 有向图
图2
3
cs
s
图3
3
4
cs
aas
s
ds
3
图4
3
4
cs
aas
s
7
bs
ds
3
图5
3
4
cs
aas
s
2
t
7
bs
ds
3
图6
3
4
cs
aas
s
3
4
6
8
5
9
8
7
6
您可能关注的文档
- (留)回民小学集体备课安排表.doc
- 009(木浆棉).doc
- 00_测控电路及装置.ppt
- 012废旧工具(设备)处理申请单.doc
- 022液压缸A.ppt
- 05汽封大修文件包.doc
- 08 批复函练习.ppt
- 08物理实考题改.doc
- 08前汽封.doc
- 09-10统考卷和答案语文.doc
- 2025年中国乙氧苯柳胺软膏市场调查研究报告.docx
- 2025年及未来5年电信设备项目市场数据调查、监测研究报告.docx
- 2025年中国产宝口服液市场调查研究报告.docx
- 2025年及未来5年远红外线热敷按摩仪之瑞颈灵项目市场数据分析可行性研究报告.docx
- 2025年中国2—氨基—4,6—二氯嘧啶市场调查研究报告.docx
- 2025年及未来5年双层风琴帘项目市场数据调查、监测研究报告.docx
- 2025年及未来5年多功能短路定位分析仪项目市场数据调查、监测研究报告.docx
- 2025年中国换芯型烟嘴市场调查研究报告.docx
- 2025年及未来5年印章防伪项目市场数据调查、监测研究报告.docx
- 2025年中国超小型冷冻修边机市场调查研究报告.docx
原创力文档


文档评论(0)