- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通信网络理论基础-最短路算法-2013
通信网理论基础
虞红芳
教授 博导
Part 05: 最短路算法
213年春季
2 / 55
最短路算法
1
2
Label-Setting算法
Label-Correcting算法
毫无疑问,重点将是以Dijkstra算法为代表的Label-Setting算法。
求网络最短路
3 / 55
213年春季
4 / 55
Label-Setting算法
4
基本Dijkstra算法
1
2
3
5
分析(Analysis)
扩展(Extension)
加速(Speed up)
应用(Application)
213年春季
5 / 55
基本Dijkstra算法
Dijkstra算法是本课程的核心内容,务必要掌握其思想和具体的编程方法。
问题分析
代码设计
算法示例
求解思路
伪码描述
Dijkstra算法
213年春季
6 / 55
问题描述
213年春季
7 / 55
Dijkstra的求解思路
213年春季
8 / 55
伪码描述
213年春季
9 / 55
Dijkstra算法示例
0
c
s
2,s
4,s
Step
S
d(a), p(a)
d(b), p(b)
d(c), p(c)
d(d), p(d)
d(e), p(e)
0
1
2
3
4
5
s
sa
sae
saed
saedb
saedbc
2, s
2, s
6, a
6, a
6, a
6, a
6, d
6, d
6, d
4, a
4, a
4, a
4, s
3, a
3, a
a
6,a
4,a
3,a
e
d
6,d
b
213年春季
10 / 55
Dijkstra算法代码设计
DijkstraAlg
d(j)和p(j)
如何管理
FindMin
Update
213年春季
11 / 55
DijkstraAlg源码(一)
class CGraph{
private:
int numVertex, numEdge;
listCEdge* IncidentList; // 所有的边
mapint, CVertex* mapVID_Vertex; // 所有的顶点
listCVertex* listTempMark; // 暂时标记的顶点集合
mapint, listCEdge* mapVID_listEdge; // 记录与顶点关联的出度边
Update(int VID);
public:
CGraph(char* inputFile);
CGraph(listCEdge* listEdge);
CGraph(CGraph );
~CGraph();
int getNumVertex();
int getNumEdge();
DijkstraAlg(int VID);
};
class CVertex{
public:
int d;
int p;
int ID;
CVertex(){d = INFINITY; p = NULL;}
~CVertex();
};
bool pVertexComp ( CVertex* x, CVertex* y )
{ if ( x-d y-d ) return TRUE;
return FALSE;
};
213年春季
12 / 55
DijkstraAlg源码(二)
void CGraph::Dijkstra(int s)
{
mapint, CVertex*::iterator i,iend;
iend = mapVID_Vertex.end();
for( i=mapVID_Vertex.begin(); i != iend; i++)
{ if ( i-second-ID == s)
i-second-d = 0;
listTempMark.pushback(i-second);
}
Update(s);
while( ! listTempMark.empty() )
{ listTempMark.sort(pVertexComp);
int j = (*listTempMark.begin())-ID;
listTempMark.popfront();
Update(j);
}
}
void CGraph::Update(int v)
{
listCEdge* lEdge = mapVID_listEdge[v];
listCEdge*::iterator i,iend;
iend = lEdge.end();
for(
您可能关注的文档
- 运行成功的超牛粒子群学习.doc
- 运筹学资料1线性规划4.ppt
- 运算放大器最大电源电流规格的现实.pdf
- 运筹学课程08-存储论.ppt
- 运输问题一种新的表上作业法.pdf
- 运输问题表上作业法的改进研究.pdf
- 运输问题08.10.ppt
- 近严格凸与最佳逼近(英文).pdf
- 近五十年来关于量子力学解释的三次论战.pdf
- 近世代数反例的作用和构造方法.pdf
- 难点详解鲁教版(五四制)6年级数学下册期末测试卷带答案详解(考试直接用).docx
- 难点详解鲁教版(五四制)6年级数学下册期末试题【培优】附答案详解.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题及完整答案详解(全国通用).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解(名师系列).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解【全国通用】.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷(突破训练)附答案详解.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷(能力提升)附答案详解.docx
- 难点详解京改版数学9年级上册期中试卷附参考答案详解【突破训练】.docx
- 难点解析鲁教版(五四制)7年级数学下册期末试题含完整答案详解(有一套).docx
- 难点解析鲁教版(五四制)7年级数学下册期末试卷带答案详解(夺分金卷).docx
文档评论(0)