拓扑排序-关键路径-最短路径解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C1
C3
C7
C12 C8
C9 C10
C6
C11
C4
C5
C2
C1
C3
C7
C12 C8
C9
C10
C6
C11
拓扑序列:C1--C2--C3--C4--C5--C7--C9--C10--C11--C6--C12--C8
或
:C9--C10--C11--C6--C1--C12--C4--C2--C3--C5--C7--C8
有向无环图及其应用
要点: 1. 拓扑排序 2. 关键路径
❖ 有向无环图:
一个无环的有向图,简称DAG图。
DAG图: 描述含有公共子式的表达式及工程或系统的进行过程时的有 效工具。
❖ 活动:一个较大的工程被划分成许多子工程,这些子工程被 称作活动。活动之间,存在某种约束,如:某些子工程的开 始必须在另外一些子工程完成之后。
10
输出序列:6
2^
indegree first adjvex next
10
4
3
22 ^
31 42
5 5^
2^
52 ^
60
5
4^
p
4
3
2
top
1
10
输出序列:6
2^
indegree first adjvex next
10
4
3
22 ^
31 41
5 5^
2^
52 ^
60
5
4^
p
4
3
2
top
1
10
输出序列:6
②设置一个包含n个元素的一维数组indegree,保 存AOV网中每个顶点的入度值。
③把邻接表中所有入度为0的顶点进栈
④栈非空时,输出栈顶元素Vj并退栈;在邻接表中 查找Vj的直接后继Vk,把Vk的入度减1,即 indegree[k]-1;若Vk的入度为0则进栈
⑤重复上述操作直至栈空为止。若栈空时输出的顶 点个数不是n,则有向图有环;否则,拓扑排序 完毕
indegree first adjvex next
10
4
3
22 ^
p
31
5
2^
41
5^
52 ^
60
5
4^
2^
4
3
2
1
top
0
输出序列:6 1
indegree First adjvex next
10
4
拓扑序列:C1--C2--C3 (3)
C12 C9 C10
C7 C8 C6
C11
拓扑序列:C1--C2--C3--C4 (4)
C7 C12
C12
C8
C8 C9 C10
C6
C9 C10
C6
C11
C11 拓扑序列:C1--C2--C3--C4--C5
(5)
拓扑序列:C1--C2--C3--C4--C5--C7 (6)
61
10
输出序列:6
indegree first adjvex next
10
4
3
22 ^
31 42
53 ^ 60
5 5^
5
2^ 4^
p
4
3
2
top
1
10
输出序列:6
2^
indegree first adjvex next
10
4
3
22 ^
31 42
52 ^ 60
5 5^
5
2^ 4^
p
4
3
Βιβλιοθήκη Baidu
2
top
1
--C10--C11
--C10--C11--C6
C8
(11)
拓扑序列:C1--C2--C3--C4--C5--C7--C9 --C10--C11--C6--C12--C8
拓扑序列:C1--C2--C3--C4--C5--C7--C9 --C10--C11--C6--C12
(12)
算法实现
①以邻接表作存储结构
检测AOV网中是否存在环方法:对有向图构造 其顶点的拓扑有序序列,若网中所有顶点都在它 的拓扑有序序列中,则该AOV网必定不存在环
拓扑排序的方法 ❖在有向图中选一个没有前驱的顶点且输出之 ❖从图中删除该顶点和所有以它为尾的弧 ❖重复上述两步,直至全部顶点均已输出;或者当 图中不存在无前驱的顶点为止
课程代号
2^
indegree first adjvex next
10
4
3
22 ^
31
5
2^
41
5^
52 ^
60
5
4^
4
3
2
top
1
10
2^ p=NULL
输出序列:6
indegree first adjvex next
10
4
3
22 ^
31
5
2^
41
5^
52 ^
60
5
4^
2^
4
3
2
top
1
top
10
输出序列:6 1
C12 C8
C10
C6
C12 C8
C6
C11
C11
拓扑序列:C1--C2--C3--C4--C5--C7--C9
拓扑序列:C1--C2--C3--C4--C5--C7--C9
--C10 (8)
C12
C12
C8
C8
C6 (9)
(10)
拓扑序列:C1--C2--C3--C4--C5--C7--C9 拓扑序列:C1--C2--C3--C4--C5--C7--C9
一个AOV网的拓扑序列不是唯一的
C4
C5
C2
C1
C3
C7
C12 C8
C9
C10
C6
C11
C4
C5
C2
C3
C7
C12 C8
C9 C10
C6
C11 拓扑序列:C1
(1)
C4
C5
C3
C7
C12 C8
C9 C10
C6
C11 拓扑序列:C1--C2
(2)
C4
C5
C5
C12 C9 C10
C7 C8 C6
C11
❖ AOV网——用顶点表示活动,用弧表示活动间优先关系的有向图称 为顶点表示活动的网(Activity On Vertex network),简称AOV网 若<vi,vj>是图中有向边,则vi是vj的直接前驱;vj是vi的直接后 继 AOV网中不允许有回路,这意味着某项活动以自己为先决条件
❖拓扑排序——把AOV网络中各顶点按照它们相互 之间的优先关系排列成一个线性序列的过程叫~
❖ 关心问题:
1.工程能否顺利进行 2.估算 整个工程完成所必须的最短时间
❖ 有向无环图及其应用
❖ 拓扑排序
问题提出:学生选修课程问题
顶点——表示课程 有向弧——表示先决条件,若课程i是j的先决条件,则图中有弧<i,j> 学生应按怎样的顺序学习这些课程,才能无矛盾、顺利地完成学业—
—拓扑排序
定义
课程名称
先修棵
例
C1
程序设计基础 无
C2
离散数学 C1
C3
数据结构 C1,C2
C4
汇编语言 C1
C5
语言的设计和分析 C3,C4
C6
计算机原理 C11
C7
编译原理 C3.C5
C8
操作系统 C3,C6
C9
高等数学 无
C10
线性代数 C9
C4
C5
C11
C12
普通物理 数值分析
C9 C1,C9,C10
C2
算法描述
例
1
2
4
3
6
5
indegree firstarc adjvex nextarc
10
4
3
22 ^
31
5
2^
42
5^
53 ^
60
5
4^
4
3
top
2
top
61
top
10
2^
indegree first adjvex next
10
4
3
22 ^
31
5
2^
42
5^
53 ^
60
5
4^
2^
4
3
top
2
top