- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
; 给定带权有向图G=(V,E),其中每条边的权值是非负数,u称为源点;图G的顶点编号为1~n(1≤n≤100)。
求从u到G中所有其余顶点的最短路径长度。;u;判断题。
Dijkstra算法按路径长度递增的次序依次产生源点到各点的最短路径。
A.错误
B.正确
;u;;;;;算法需要的数据结构:
1.对各点所处集合的状态进行标记,使用数组s;
2.需要存储S’中各点的距离,使用数组dist;
3.记录点的前驱,使用数组pre;;初始时,先将源点u放入S。对u之外的每个顶点v,令dist[v]为边u,v的权或+∞;
不断地做贪心选择来扩充S,直到所有顶点均进入S。
贪心策略:如果顶点v不属于S,且dist[v]值最小,则优先选择v。
当v加入S后,需调整尚未进入S的点的dist和pre。
算法结束时,dist[i]就是u到点i的最短距离。;迭代;/*graph表示图的邻接矩阵,u表示源点,n表示顶点总数*/
voidDijkstra(int**graph,intu,intn){
ints[MaxSize],i=0;
memset(s,0,sizeof(s));s[u]=1;
for(i=1;i=n;i++){dist[i]=graph[u][i];pre[i]=-1;}
i=1;
while(in){
v为满足s[v]==0dist[v]最小的点;
s[v]=1;i++;
for(对每个相邻于v的顶点k){
if((s[k]==0)(dist[v]+graph[v][k]dist[k])){
dist[k]=dist[v]+graph[v][k]);
pre[k]=v;
}
}/*endfor*/
}/*endwhile*/
};/*借助优先队列实现迪杰斯特拉算法*/
#includeiostream
#includecstring
#includequeue
usingnamespacestd;
#defineMaxSize101
typedefstruct{
intno;/*no表示顶点的编号,从1开始*/
intdist=0x3f3f3f3f;/*dist表示长度,初值为一个较大的值*/
intprev=0;/*prev表示源点到该点的最短路径中该点的前驱顶点的编号*/
intflag=0;/*flag=0表示源点到该点的最短路径还未求出*/
}vertex;
structcomp{/*定义优先队列的排序规则*/
booloperator()(vertexa,vertexb){
returna.distb.dist;
}
};;/*函数功能:dijkstra算法求解单源最短路径*/
/*参数说明:n表示图中顶点总数,graph表示图的邻接矩阵*/
/*a存储顶点信息,u表示源点编号*/
voiddijsktra(intn,intgraph[][MaxSize],vertexa[],intu){
priority_queuevertex,vectorvertex,compp;/*定义优先队列*/
inti=0;
a[u].dist=0;/*设置源点到它自身的最短路径长度为0*/
p.push(a[u]);/*源点加入优先队列*/
intt=0;
vertexv;
while(!p.empty()){
v=p.top();/*取dist最小的顶点*/
p.pop();/*dist最小的顶点出队*/
t=v.no;
a[t].flag=1;/*出队顶点的最短路径已得到*/
……
};单选题。
Dijkstra算法求解单源最短路径,适用于()。
A.权值为非负
B.权值为负
C.权值无要求
;Q:迪杰斯特拉算法为什么需要“边的权值为非负数”?;图中有负值环时,不存在最短路径;
图中无负值环但存在负值边时,不能使用Dijkstra。
您可能关注的文档
- 算法设计与分析 课件 0-算法导论.pptx
- 算法设计与分析 课件 1.0-算法评价-序.pptx
- 算法设计与分析 课件 1.1-算法基础.pptx
- 算法设计与分析 课件 1.2.0-算法分析准则.pptx
- 算法设计与分析 课件 1.2.1-算法分析准则 - 正确性.pptx
- 算法设计与分析 课件 1.2.2-算法分析准则 - 时间复杂度.pptx
- 算法设计与分析 课件 1.2.3-算法分析准则 - 时间复杂度 - 渐近分析及符号表示.pptx
- 算法设计与分析 课件 1.2.4-算法分析准则 - 时间复杂度 - 非递归.pptx
- 算法设计与分析 课件 1.2.5-算法分析准则 - 时间复杂度 - 递归 - 迭代.pptx
- 算法设计与分析 课件 1.2.6-算法分析准则 - 时间复杂度 - 递归 - 递归树.pptx
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
最近下载
- 空调主机吊装方案.docx
- 基层儿科医务人员服务能力提升学习班答案-2024华医网继续教育答案.docx VIP
- 部编 人教版小学二年级上册语文教学课件 5.课文 14.我要的是葫芦 .pptx VIP
- 让“工具包”理念和方法落地.pdf VIP
- 国家开放大学《可编程控制器应用实训》形考任务2(实训二)参考答案.docx
- 4.2 实现中华民族伟大复兴的中国梦 课件(18张PPT)-2023-2024学年高中政治统编版必修一中国特色社会主义.pptx VIP
- 费森尤斯CRRT操作流程.doc VIP
- 五年级上册英语期中试卷人教精通版.pdf VIP
- 第17课昆明的雨(课件)(共27张PPT).pptx VIP
- 小学信息技术(信息科技)第六册泰山版(2018)合集.docx
文档评论(0)