




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
7.6关键路径问题提出把工程计划表示为有向图,用顶点表示事件,弧表示活动;每个事件表示在它之前的活动已完成,在它之后的活动可以开始例设一个工程有11项活动,9个事件事件V1——表示整个工程开始事件V9——表示整个工程结束问题:(1)完成整项工程至少需要多少时间?(2)哪些活动是影响工程进度的关键?987645321a1=6a2=4a3=5a4=1a5=1a6=2a7=9a8=7a9=4a10=2a11=4定义AOE网(ActivityOnEdge)——也叫边表示活动的网。AOE网是一个带权的有向无环图,其中顶点表示事件,弧表示活动,权表示活动持续时间路径长度——路径上各活动持续时间之和关键路径——路径长度最长的路径叫~Ve(j)——表示事件Vj的最早发生时间Vl(j)——表示事件Vj的最迟发生时间e(i)——表示活动ai的最早开始时间l(i)——表示活动ai的最迟开始时间l(i)-e(i)——表示完成活动ai的时间余量关键活动——关键路径上的活动叫~,即l(i)=e(i)的活动问题分析如何找e(i)=l(i)的关键活动?设活动ai用弧<j,k>表示,其持续时间记为:dut(<j,k>)则有:(1)e(i)=Ve(j)(2)l(i)=Vl(k)-dut(<j,k>)jkai如何求Ve(j)和Vl(j)?(1)从Ve(1)=0开始向前递推(2)从Vl(n)=Ve(n)开始向后递推求关键路径步骤求Ve(i)求Vl(j)求e(i)求l(i)计算l(i)-e(i)987645321a2=4a3=5a5=1a6=2a9=4a1=6a4=1a7=9a8=7a10=2a11=4V1V2V3V4V5V6V7V8V9顶点VeVl0645771614180668710161418a1a2a3a4a5a6a7a8a9a10a11活动ell-e000022660462583770770710316160141400337.7最短路径问题提出用带权的有向图表示一个交通运输网,图中:顶点——表示城市边——表示城市间的交通联系权——表示此线路的长度或沿此线路运输所花的时间或费用等问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径——最短路径从某个源点到其余各顶点的最短路径51643208562301371732913长度最短路径<V0,V1><V0,V2><V0,V2,V3><V0,V2,V3,V4><V0,V2,V3,V4,V5><V0,V1,V6>813192120迪杰斯特拉(Dijkstra)算法思想按路径长度递增次序产生最短路径算法:把V分成两组:(1)S:已求出最短路径的顶点的集合(2)V-S=T:尚未确定最短路径的顶点集合将T中顶点按最短路径递增的次序加入到S中,保证:(1)从源点V0到S中各顶点的最短路径长度都不大于从V0到T中任何顶点的最短路径长度(2)每个顶点对应一个距离值
S中顶点:从V0到此顶点的最短路径长度
T中顶点:从V0到此顶点的只包括S中顶点作中间顶点的最短路径长度依据:可以证明V0到T中顶点Vk的最短路径,或是从V0到Vk的直接路径的权值;或是从V0经S中顶点到Vk的路径权值之和(反证法可证)Dijkstra算法可描述如下:
初始化:S←{v0};
dist[j]←Edge[0][j],j=1,2,…,n-1;
//n为图中顶点个数1、求出最短路径的长度:
dist[k]←min{dist[i]},i
V-S;S←S
U{k
};2、
修改:
dist[i]←min{dist[i],dist[k]+Edge[k][i]},
对于每一个i
V-S;3、
判断:若S=V,则算法结束,否则转1。计算从单个顶点到其它各个顶点的最短路径ShortestPath(
constint
n,
constint
v){
for(
inti=0;
i<n;
i++)
{
dist[i]=Edge[v][i];
//dist数组初始化
S[i]=0;
if(i!=v
&&
dist[i]<MAXINT)path[i]=v;
else
path[i]=-1; //path数组初始化
}
S[v]=1;
dist[v]=0; //顶点v加入顶点集合
//选择当前不在集合S中具有最短路径的顶点u
for(i=0;
i<n-1;
i++){
int
min=MAXINT;
int
u=v;
for(
int
j=0;
j<n;
j++)
if(!S[j]&&
dist[j]<min)
{
u=j;
min=
dist[j];
}
S[u]=1;
//将顶点u加入集合S
for(
int
w=0;
w<n;
w++)//修改
if(!S[w]&&
Edge[u][w]<MAXINT&&
dist[u]+Edge[u][w]<
dist[w]){
dist[w]=
dist[u]+Edge[u][w];
path[w]=u;
}
}}
13<V0,V1>8<V0,V2>30<V0,V4>32<V0,V6>V2:8<V0,V2>13<V0,V1>-------13<V0,V2,V3>30<V0,V4>32<V0,V6>V1:13<V0,V1>--------------13<V0,V2,V3>30<V0,V4>22<V0,V1,V5>20<V0,V1,V6>V3:13<V0,V2,V3>---------------------19<V0,V2,V3,V4>22<V0,V1,V5>20<V0,V1,V6>V4:19<V0,V2,V3,V4>终点从V0到各终点的最短路径及其长度V1V2V3V4V5V6Vj--------------------------------21<V0,V2,V3,V4,V5>20<V0,V1,V6>V6:20<V0,V1,V6>516432085623013717329每一对顶点之间的最短路径方法一:每次以一个顶点为源点,重复执行Dijkstra算法n次——T(n)=O(n³)方法二:弗洛伊德(Floyd)算法算法思想:逐个顶点试探法求最短路径步骤初始时设置一个n阶方阵,令其对角线元素为0,若存在弧<Vi,Vj>,则对应元素为权值;否则为逐步试着在原直接路径中增加中间顶点,若加入中间点后路径变短,则修改之;否则,维持原值所有顶点试探完毕,算法结束对于每一对顶点u和v,看看是否存在一个顶点w使得从u到w再到v比己知的路径更短。如果是更新它。不可思议的是,只要按排适当,就能得到结果。//dist(i,j)为从节点i到节点j的最短距离Fori←1tondoForj←1tondodist(i,j)=weight(i,j)Fork←1tondo//k为“中间节点”
if(dist(i,k)+dist(k,j)<dist(i,j))then//是否是更短的路径?
dist(i,j)=dist(i,k)+dist(k,j)例ACB264311041160230初始:路径:ABACBABCCA046602370加入V2:路径:ABA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专项11 古诗文阅读(解析版)
- 2025届四川省成都市高三第二次诊断考试政治试题(原卷版+解析版)
- 《物联网技术案例教程》课件-第8章46
- 劝学教学设计
- 四海省广元市苍溪县2024-2025学年九年级上学期期末质量监测数学试题 (原卷版+解析版)
- 《跨境电商》课件-9.跨境店铺优化
- 《Linux操作系统》课件-1.认识Linux(全)
- 景区开发石子运输合同样本
- 项目协作与会议记录会议纪要
- 广告行业广告投放手册
- 日本2 课件-2024-2025学年人教版地理七年级下册
- TZRIA 002-2024 工业巡检四足机器人技术条件
- 小学科学二年级下册教案(全册)
- 2025广东深圳证券交易所人员招聘笔试参考题库附带答案详解
- 2025安徽振含控股集团有限公司招聘8人笔试参考题库附带答案详解
- 河道洪水应急响应预案
- 《欣赏与设计》(教案)2024-2025学年数学六年级下册 北师大版
- 银行信贷部门廉政风险点及防控措施
- 高一上学期统编版(2019)必修中外历史纲要上翻书大赛课件
- 某县电子政务信息化服务平台项目可行性研究报告管理资料
- 加油站的充电桩建设与运营
评论
0/150
提交评论