- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Ch9.3-4 Shortest-Path Algorithm, Network Flow Problem
§3 Shortest Path Algorithms
1. Single-Source Shortest-Path Problem
Given as input a weighted graph, G = ( V, E ), and a distinguished vertex, s, find the shortest weighted path from s to every other vertex in G.
Negative-cost cycle
Note: If there is no negative-cost cycle, the shortest path from s to s is defined to be zero.
1/17
§3 Shortest Path Algorithms
? Unweighted Shortest Paths
0
0: ? v3
1: ?
v1 and v6
1
1
2: ?
v2 and v4
2
2
3: ?
v5
and v7
3
3
? Sketch of the idea
Breadth-first search
? Implementation
Table[ i ].Dist ::= distance from s to vi /* initialized to be ? except for s */
Table[ i ].Known ::= 1 if vi is checked; or 0 if not
Table[ i ].Path ::= for tracking the path /* initialized to be 0 */
2/17
§3 Shortest Path Algorithms
void Unweighted( Table T )
{ int CurrDist;
Vertex V, W;
for ( CurrDist = 0; CurrDist NumVertex; CurrDist ++ ) {
for ( each vertex V )
if ( !T[ V ].Known T[ V ].Dist == CurrDist ) {
T[ V ].Known = true;
for ( each W adjacent to V )
if ( T[ W ].Dist == Infinity ) {
T[ W ].Dist = CurrDist + 1;
T[ W ].Path = V;
} /* end-if Dist == Infinity */
} /* end-if !Known Dist == CurrDist */
} /* end-for CurrDist */
}
The worst case:
? T = O( |V|2 )
If V is unknown yet has Dist Infinity, then Dist is either CurrDist or CurrDist+1.
3/17
§3 Shortest Path Algorithms
? Improvement
void Unweighted( Table T )
{ /* T is initialized with the source vertex S given */
Queue Q;
Vertex V, W;
Q = CreateQueue (NumVertex ); MakeEmpty( Q );
Enqueue( S, Q ); /* Enqueue the source vertex */
while ( !IsEmpty( Q ) ) {
V = Dequeue( Q );
T[ V ].Known = true; /* not really necessary */
for ( each W adjacent to V )
if ( T[ W ].Dist == Infinity ) {
T[ W ].Dist = T[ V ].Dist + 1;
T[ W ].Path = V;
Enqueue( W, Q );
} /* end-if Dist == Infinity */
} /* end-while */
DisposeQueue( Q ); /* free memory */
}
0
v3
v7
1
v3
v1
1
v3
v
您可能关注的文档
- Analysis of molecular variance (AMOVA).pdf
- Analysis_GAMM_2013.pdf
- Analytical modelling of wind speed deficit in large offshore wind farms.pdf
- ANALYTICAL TREATMENT OF RESISTIVE WAKE POTENTIALS IN ROUND PIPE.pdf
- Analytical_approach_in_QbD_SSPC.44161808.pdf
- anatomy or physiology.pdf
- AnchorChip Based MALDI Sample Preparation.pdf
- and F (x) its universal barrier function. Let D k.pdf
- Andorid 说明书.pdf
- android Bitmap用法总结.pdf
- 建筑外墙聚氨酯保温材料的火灾特性与安全设计_札记.docx
- 贵州省铜仁市乌江学校高中2025届高考冲刺押题(最后一卷)生物试卷含解析.doc
- 危险货物运输事故案例分析.docx
- 《综合实践 参加欢乐购物活动》试卷及答案_小学数学二年级上册_北师大版_2024-2025学年.docx
- 2024年组态软件项目规划申请报告模板.docx
- 高级中学美术教师资格考试学科知识与教学能力试卷及解答参考(2025年).docx
- 2024年灯杯项目规划申请报告范文.docx
- 学校防治结核病宣传.pptx
- 豆类基础知识概述.docx
- 2025届甘肃省白银市会宁县会宁县第一中学高考全国统考预测密卷生物试卷含解析.doc
文档评论(0)