数据结构第28讲--关键路径--2018
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
v7 a10, 4
3. 活动的最早开工时间
• 设活动ak=<vi, vj>,可能的最早开工时间e(k)? <=> 该边上,起点vi(事件vi )的最早发生时间 即:e(k) = ee(i)
a0, 6 v1 a3, 1 a6, 9 v6 a9, 2
v4
v0 a1, 4 v2 a4, 1
a7, 7
v8
-- 其余:le(i) = min{ le(j) - weight<vi, vj>}
j
a0, 6 v1 a3, 1 a6, 9 v6 a9, 2
v0
v4 a1, 4 v2 a4, 1
a7, 7
v8
v7 a10, 4
-- 计算1个a顶8点, 4的le值?
a2, 5 v3 a5需, 2已知v5其所有出边上终点的le值
-- le(8)= 18
-- le(7)= le(8)-4 = 14
-- le(6)= le(8)-2 = 16
-- le(5)= le(7)-4 = 10
-- le(4)= min{ le(6)-9, le(7)-7 } = min{7, 7} = 7
-- le(3)= le(5)-2 = 8
-- le(2)= le(4)-1 = 6
--e(3)=ee(1)=6 --e(4)= ee(2)=4 --e(5)=ee(3)=5 --e(6)=ee(4)=7 --e(7)= ee(4)=7 --e(8)=ee(5)=7
--e(9)=ee(6)=16 --e(10)=ee(7)=14
v0
a0, 6 a1, 4
v1 v2
a3, 1 a6, 9 v6 a9, 2
a6, 3
v6
le(v1) = min{ le(v2)-3, le(v3)- 2} = 0
le(v2) = min{ le(v4)-2, le(v5)- 3} = 4
le(v3) = min{ le(v4)-4, le(v6)- 3} = 2
le(v4) = le(v6)-2 = 6 le(v5) = le(v6)-1 = 7 le(v6) = ee(v6) = 8
v4
v0 a1, 4 v2 a4, 1
a7, 7
v8
a8, 4 v7 a10, 4 a2, 5 v3 a5, 2 v5
--le(8)=18 --le(7)=14 --le(6)=16 --le(5)=10 --le(4)=7 -- le(3)=8 --le(2)=6 --le(1)=6 --le(0)=0
i
a0, 6 v1 a3, 1 a6, 9 v6 a9, 2
v4
v0 a1, 4 v2 a4, 1
a7, 7
v8
-- 计算1个a顶8点, 4的eev值7 ?a10, 4 a2, 5 v3 a5,需2已知v5其所有入边上起点的ee值
-- ee(0)= 0
-- ee(1)=ee(0)+6 = 6
-- ee(2)= ee(0)+4 = 4
--l(9)=le(8)-2=16 --l(10)= le(8)-4=14
v0
a0, 6 a1, 4
v1 v2
a3, 1 a6, 9 v6
a4, 1
v4 a7, 7
v8
a8, 4 v7 a10, 4
a2, 5 v3 a5, 2 v5
关键活动
• 关键活动,不允许有任何时间延误 最早开工时间 == 最迟开工时间 l(k)==e(k)
ee(v4)= max{ ee(v2)+2, ee(v3)+4 } =6
ee(v5)= ee(v2)+3 =6
ee(v6)= max{ ee(v3)+3, ee(v4)+2, ee(v5)+1 } =8
a1, 3
v2
a3, 2
例: v1 a2, 2 a5, 4 v3
a4, 3
v5
a8, 1
v4 a7, 2
源点 5
25 A
E2
汇点
G
ok
20 10
B 10 20
D
40
5 F
C
9.7 关键路径
• 完成工程的最短时间?
-- 从“源点”到“汇点”的‘最长路径’长度;
关键路径 critical path
a0, 6 v1 a3, 1 a6, 9 v6 a9, 2
v4
v0 a1, 4 v2 a4, 1
a7, 7
v8
a0, 6
v1 a3, 1 a6, 9 v6 v4
v0 a1, 4 v2 a4, 1
a7, 7
a9, 2 v8
a2, 5
v3
a5, 2
a8, 4 v5
v7
a10, 4
ee(v1)=0 ee(v2)= ee(v1)+3 =3 ee(v3)= ee(v1)+2 =2
1. 事件的最早发生时间ee: 按拓扑序, 利用所有入边起点的ee值
按”拓扑序” 向后递推
a0, 6
v1
a3, 1 a6, 9 v4
v6
a9, 2
v0 a1, 4 a2, 5
v2 v3
a4, 1
a7, 7
v8
a5, 2
a8, 4 v5
v7 a10, 4
2. 事件的最迟发生时间
• 事件vi允许的最迟发生时间 le(i)? 不能耽误工期 -- 汇点:允许的最迟 == 最早发生time -- 其余:不能影响 ”其后继事件vj” 的最迟发生时间;
……
有向图
活动3 (activity)
1. 工程能否顺利完成? -- 拓扑排序
2. 完工所需的最短时间?哪些活动影响工程进度?
-- 关键路径
9.7 关键路径
• AOE(activity on Edge)网: 有向边(弧) ---- 活动;
顶点 ---- 事件:入边活动完成,出边可开始;
-- A: 大米 得到 B: 菜 得到 C: 肉 得到 D: 菜、肉 洗好 E: 米饭 蒸好 F: 菜、肉 炒熟 G: 饭桌准备就绪
-- le(1)= le(4)-1 = 6
-- le(0)= min{ le(1)-6, le(2)-4, le(3)-5 } = min{0, 2, 3}=0
a0, 6
v1
a3, 1 a6, 9 v4
v6
a9, 2
v0 a1, 4 a2, 5
v2 v3
a4, 1
a7, 7
v8
a5, 2
a8, 4 v5
a7, 7
v8
a8, 4 v7 a10, 4 a2, 5 v3 a5, 2 v5
1. 事件的最早发生时间
• 事件vj可能的最早发生时间 ee(j)? -- 从‘源点’到vj的‘最长路径长度’ ; 且,事件发生后,其出边活动才能开始;
a0, 6 v1 a3, 1 a6, 9 v6 a9, 2
v4
v0 a1, 4 v2 a4, 1
2. 事件的最迟发生时间le: 逆拓扑序, 利用所有出边终点的le值
a1, 3
v2
a3, 2
例: v1 a2, 2 a5, 4 v3
a4, 3
v5
a8, 1
v4 a7, 2
a6, 3
v6
e(a1) = ee(v1) = 0 e(a2) = ee(v1) = 0 e(a3) = ee(v2) = 3 e(a4) = ee(v2) = 3 e(a5) = ee(v3) = 2 e(a6) = ee(v3) = 2
源点 5
25 A
E2
汇点
G
ok
20 10
B 10 20
D
40
5 F
C
9.7 关键路径
• 完成工程的最短时间?
-- 从“源点”到“汇点”的‘最长路径’长度;
-- A: 大米 得到 B: 菜 得到 C: 肉 得到 D: 菜、肉 洗好 E: 米饭 蒸好 F: 菜、肉 炒熟 G: 饭桌准备就绪
关键路径 critical path
3. 活动的最早开工时间e: = 起点事件的ee
e(a7) = ee(v4) = 6 e(a8) = ee(v5) = 6
a1, 3
v2
a3, 2
例: v1 a2, 2 a5, 4 v3
a4, 3
v5
a8, 1
v4 a7, 2
a6, 3
v6
l(a1) = le(v2)-3 = 1 l(a2) = le(v3)-2 = 0 l(a3) = le(v4)-2 = 4 l(a4) = le(v5)-3 = 4 l(a5) = le(v4)-4 = 2 l(a6) = le(v6)-3 = 5
a7, 7
v8
a8, 4 v7 a10, 4 a2, 5 v3 a5, 2 v5
1. 事件的最早发生时间
• 事件vj可能的最早发生时间 ee(j)? 从”源点”开始,
-- 源点:ee(0)= 0;
按”拓扑序”向后递推
-- 其余:ee(j)= max{ee(i) + weight<vi, vj> }
• 拓扑序列: 保证所有活动可顺利完成的1种方案
所有顶点的一个线性序列{vi1, vi2, …, vin},且 若图中有1条vj到vk的路径,则vj排在vk之前。
-- A: 学习高数
B: 学C/C++ C: 学离散数学 D: 学数据结构
A
EF
CD
B
E: 学计算机组成原理
F: 学操作系统
回顾 -- 拓扑排序思想
能开始, 就必须开始 的活动 -- 不容有误
a0, 6 v1 a3, 1 a6, 9 v6 a9, 2
v4
v0 a1, 4 v2 a4, 1
a7, 7
v8
a8, 4 v7 a10, 4 a2, 5 v3 a5, 2 v5
--e(0)=0 --e(1)=0 --e(2)=0 --e(3)=6
--l(0)=0
河海大学计算机与信息学院
第9章 图
第28讲:关键路径
回顾
• AOV(activity on vertex)网: 顶点 -- 活动; 有向边(弧) -- 活动的优先关系;
-- A: 学习高数
B: 学C/C++ C: 学离散数学 D: 学数据结构
A
EF
CD
B
E: 学计算机组成原理
F: 学操作系统
回顾
a4, 1
v4 a7, 7
v8
a8, 4 v7 a10, 4
a2, 5 v3 a5, 2 v5
4. 活动的最晚开工时间
• 设活动ak=<vi, vj>,允许的最晚开工时间l(k)? -- l(k)不能影响:其终点vj的最迟发生时间;
-- l(k) = le(j) - weight<vi, vj>
a0, 6 v1 a3, 1 a6, 9 v6 a9, 2
-- ee(3)= ee(0)+5 = 5
-- ee(4)= max{ ee(1)+1, ee(2)+1 } = 7
-- ee(5)= ee(3)+2=7
-- ee(6)= ee(4)+9 =16
-- ee(7)=max{ ee(4)+7, ee(5)+4 } = 14 -- ee(8)=max{ ee(6)+2, ee(7)+4 } = 18
a8, 4 v7 a10, 4 a2, 5 v3 a5, 2 v5
--ee(0)=0 --ee(1)=6 --ee(2)=4 --ee(3)=5 --ee(4)=7 --ee(5)=7 --ee(6)=16 --ee(7)=14 --ee(8)=18
--e(0)=ee(0)=0 --e(1)= ee(0)=0 --e(2)=ee(0)=0
a0, 6 v1 a3, 1 a6, 9 v6 a9, 2
v4
v0 a1, 4 v2 a4, 1
a7, 7
v8
a8, 4 v7 a10, 4 a2, 5 v3 a5, 2 v5
2. 事件的最迟发生时间
• 事件vi允许的最迟发生时间 le(i)? 从汇点开始,
-- 汇点:le(n-1) == ee(n-1) ”逆拓扑序”向前倒推
--l(1)=2
--l(2)=3
--l(3)=6
--e(4)=4 --e(5)=5 --e(6)=7 --e(7)=7
--l(4)=6
--l(5)=8
--l(6)=7
--l(7)=7
--e(8)=7 --e(9)=16 --e(10)=14
--l(8)=10 --l(9)=16 --l(10)=14
a8, 4 v7 a10, 4 a2, 5 v3 a5, 2 v5
9.7 关键路径
• 关键路径上的活动 关键活动
能开始,
-- 若提前完成,则整个工程可能提前; 就必须开始
的活动
-- 若推迟完成,则…………一定推迟; -- 不容有误
a0, 6 v1 a3, 1 a6, 9 v6 a9, 2
v4
v0 a1, 4 v2 a4, 1
1. 选择入度为0的顶点v,输出v;
2. 从图中删除v、及v的所有出边;
3. 重复1和2,直到没有入度为0的顶点;
-- 若所有顶点已输出,则输出为拓扑排序;
ຫໍສະໝຸດ Baidu
-- 否则,剩余的部分包含回路。
A, B, E,
A
E F
C
B
DG
引例
• 工程 (project)
活动1 (activity) 活动2 (activity)
--l(0)= le(1)-6=0 --l(1)= le(2)-4=2 --l(2)= le(3)-5=3
--l(3)= le(4)-1=6 --l(4)=le(4)-1=6 --l(5)= le(5)-2=8
--l(6)=le(6)-9=7 --l(7)=le(7)-7=7 --l(8)= le(7)-4=10