数据结构第7章图3有向无环图及其应用ppt课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
while (!StackEmpty(S)) { Pop(S,i); printf(i,G.vertices[i].data); ++count; //输出i号顶点并计数
for(p=G.vertices[i].firstarc; p; p=p->nextarc){ k=p—>adivex;//对i号顶点的每个邻接点入度减1 if(!(--indegree[k])) Push(S,k); //若入度减为0,则入栈
§7.5 有向无环图及其应用
❖有向无环图
在工程实践中,一个工程项目往往由若干个子项 目组成,这些子项目间往往有多种关系:
①先后关系,即必须在一子项目完成后,才能开 始实施另一个子项目;
②子项目之间无次序要求,即两个子项目可以同 时进行,互不影响。
§7.5 有向无环图及其应用
❖两种常用的活动网络(Activity Network)
3
4 4^
4
2 1^ 3^
1^
s
0 V1 3 V4
5 V6
4
V2 1 V3 2 V5 4
indegree[0..5] 0 0 0 0 0 0 012345
最后输出的拓扑序列为:v6v1v3v2v4v5
§7.5 有向无环图及其应用
G.vertices[0] v1
3
2
G.vertices[1] v打2 印^G.vertices[4].data
1. 输入AOV网络。令 n 为顶点个数。 2. 在AOV网络中选一个没有直接前驱的顶点, 并输出之; 3. 从图中删去该顶点, 同时删去所有它发出的有向边; 4. 重复以上 2、3 步, 直到:
全部顶点均已输出,拓扑有序序列形成,拓扑排序完成 或者,图中还有未输出的顶点,但已跳出处理循环。这说 明图中还剩下一些顶点,它们都有直接前驱,再也找不到 没有前驱的顶点了。这时AOV网络中必定存在有向环。
V2 1 V3 2 V5 4
indegree[0..5] 0 2 1 1 2 0 012345
§7.5 有向无环图及其应用
G.vertices[0] v1
3
2
1^
G.vertices[1] v2 ^
s
G.vertices[2] v3 打印4G.vertices1[0]^.data
G.vertices[3] v4
武汉科技大学
Wuhan University of Science and Technology
数据结构第7章图3有向无环图及其应用ppt课件
§7.5 有向无环图及其应用
❖有向无环图
对整个工程和系统,人们关心的是两个方面 的问题:一是工程能否顺利进行;二是估算整个 工程完成所必须的最短时间。
有向无环图的应用: 拓扑排序 关键路径
Status Topological Sort(ALGraph G){ //采用邻接表存储结构。若G无回路,则输出拓扑序列并返回OK,否则ERROR
FindInDegree(G,indegree); //对各顶点求入度indegree[0..vernum-1] InitStack(S); //建零入度顶点栈 for(i=0;i<G.vexnum; ++i) if(!indegree[i]) Push(S,i) //入度为0者进栈 count=0; //对输出顶点计数
§7.5 有向无环图及其应用
❖AOV网络
用途:我们经常用有向图来描述一个工程或系统的进 行过程。一般来说,一个工程可以分为若干个子工程, 只要完成了这些子工程,就可以导致整个工程的完成。 例:AOV网络若用于教学计划的制定,可以解决: 哪些课程是必须先修的,哪些课程是可以并行学习的。
§7.5 有向无环图及其应用
G.vertices[2] v3
4
1^
1^
s
G.vertices[3] v4
4^
G.vertices[4] v5 ^
4
G.vertices[5] v6
4
3^
0 V1 3 V4 5 V6Biblioteka V2 1 V3 2 V5 4
indegree[0..5] 0 0 0 0 0 0 012345
§7.5 有向无环图及其应用
G.vertices[2] v3
4
4号和3号顶点的
G.vertice入s[3度] 分v4 别减1 4 ^
G.vertices[4] v5 ^
1^
5
G.vertices[5] v6
4
3^
1^
s
0 V1 3 V4
5 V6
0
V2 1 V3 2 V5 4
indegree[0..5] 0 2 1 2 3 0 012345
G.vertices[2] v3
4
1^
G.vertices[3] v4
4^
G.vertices[4] v5 ^
1
G.vertices[5] v6
4
3^
1^
s
0 V1 3 V4
5 V6
3
V2 1 V3 2 V5 4
indegree[0..5] 0 0 0 0 1 0 012345
§7.5 有向无环图及其应用
先导课程编号 无 C1
C1,C2 C1
C3,C4 C11
C5,C3 C3,C6
无 C9 C9 C9,C10,C1
C5 C4
C2
C7
C1
C3
C12 C8
C9
C10
C6
C11
C1 C2 C3 C4 C5 C7 C9 C10 C11 C6 C12 C8
§7.5 有向无环图及其应用
C4
C5
C2
C1
C7
C3
3
4 4^
4
2 1^ 3^
1^
s
0 V1 3 V4
2 5 V6 3
V2 1 V3 2 V5 4
indegree[0..5] 0 1 0 0 2 0 012345
§7.5 有向无环图及其应用
G.vertices[0] v1 G.vertices[1] v2 ^ G.vertices[2] v3 G.vertices[3] v4 G.vertices[4] v5 ^ G.vertices[5] v6
§7.5 有向无环图及其应用
❖拓扑排序
例:
V1
V2
V4
V3
V6
V5
§7.5 有向无环图及其应用
G.vertices[0] v1
3
G.vertices[1] v2 ^
G.vertices[2] v3
4
2
1^
0 V1
V2 1
1^
3 V4
V3 2
G.vertices[3] v4 G.vertices[4] v5 ^
① AOV网(Activity On Vertices)—用顶点表示活动的网络 AOV网定义:若用有向图表示一个工程,在图中用顶点表示 活动,用弧表示活动间的优先关系。vi 必须先于活动 vj 进行。 则这样的有向图叫做用顶点表示活动的网络,简称 AOV。
② AOE网(Activity On Edges)—用边表示活动的网络 AOE网定义:如果在无环的带权有向图中, 用有向边表示一 个工程中的活动,用边上权值表示活动持续时间,用顶点表 示事件,则这样的有向图叫做用边表示活动的网络,简称 AOE。
4^
G.vertice3s[号4]、v25号^、1号顶 G.vertice点s[5的] 入v6度分别减41
3^ 0
0 V1 3 V4 5 V6
V2 1 V3 2 V5 4
indegree[0..5] 0 2 1 1 2 0 012345
§7.5 有向无环图及其应用
G.vertices[0] v1 G.vertices[1] v2 ^ G.vertices[2] v3 G.vertices[3] v4 G.vertices[4] v5 ^ G.vertices[5] v6
3
4 4^
4
2 1^ 3^
1^
s
0 V1 3 V4
5 5 V6 0
V2 1 V3 2 V5 4
indegree[0..5] 0 2 1 2 3 0 012345
§7.5 有向无环图及其应用
G.vertices[0] v1 打印G.v3ertices[5].2data
G.vertices[1] v2 ^
❖AOV网络
课程编号 C1 C2 C3 C4 C5 C6 C7 C8 C9 C 10 C11 C12
课程名称 程序设计基础
离散数学 数据结构 汇编语言 算法分析与设计 计算机组成原理 编译原理 操作系统 高等数学 线性代数 普通物理 数值分析
先导课程编号 无 C1
C1,C2 C1
C3,C4 C11
C5,C3 C3,C6
C12
C9
C10
C8
C6 C11
拓扑序列: C1 C2 C3 C4 C5 C7 C9 C10 C11 C6 C12 C8
§7.5 有向无环图及其应用 ❖拓扑排序
对一个有向无环图中的顶点排成一个具有前后 次序的线性序列。
拓扑排序算法:重复选择没有直接前驱的顶点。
§7.5 有向无环图及其应用
❖拓扑排序
3
4 4^
4
2 1^ 3^
1^
s
0 V1 3 V4
2 5 V6 3
V2 1 V3 2 V5 4
indegree[0..5] 0 1 0 0 2 0 012345
§7.5 有向无环图及其应用
G.vertices[0] v1
3
2
1^
G.vertices[1] v2 ^
s
G.vertices[2] v3 打印4G.vertices1[2]^.data
4^
5 V6
V5 4
G.vertices[5] v6
4
3^
另外增设一个存放各顶点的入度值的一维数组 Indegree
indegree[0..5] 0 2 1 2 3 0 012345
§7.5 有向无环图及其应用
G.vertices[0] v1 G.vertices[1] v2 ^ G.vertices[2] v3 G.vertices[3] v4 G.vertices[4] v5 ^ G.vertices[5] v6
4
3^
0 V1 3 V4 5 V6
V2 1 V3 2 V5 4
indegree[0..5] 0 0 0 0 1 0 012345
§7.5 有向无环图及其应用
G.vertices[0] v1 G.vertices[1] v2 ^ G.vertices[2] v3 G.vertices[3] v4 G.vertices[4] v5 ^ G.vertices[5] v6
G.vertices[0] v1 G.vertices[1] v2 ^ G.vertices[2] v3 G.vertices[3] v4 G.vertices[4] v5 ^ G.vertices[5] v6
3
4 4^
4
2 1^ 3^
1^
s
0 V1 3 V4
5 V6
3
V2 1 V3 2 V5 4
indegree[0..5] 0 0 0 0 1 0 012345
无 C9 C9 C9,C10,C1
§7.5 有向无环图及其应用
❖AOV网络
C4 C2
C1
C12
C9
C10
C11
C3 C6
C5 C7
C8
§7.5 有向无环图及其应用
❖AOV网络
课程编号 C1 C2 C3 C4 C5 C6 C7 C8 C9 C 10 C11 C12
课程名称 程序设计基础
离散数学 数据结构 汇编语言 算法分析与设计 计算机组成原理 编译原理 操作系统 高等数学 线性代数 普通物理 数值分析
3
4 4^
4
2 1^ 3^
1^
s
0 V1 3 V4
1 5 V6 3
V2 1 V3 2 V5 4
indegree[0..5] 0 0 0 0 1 0 012345
§7.5 有向无环图及其应用
G.vertices[0] v1
3
2
G.vertices[1] v2 打^ 印G.vertices[1].data
0 V1 3 V4
G.vertices[3] v4
4^
G.vertices[4] 4v号5 、^ 1号顶点的 G.vertices[5] 入v6度分别减41
2
3^
5 V6
3
V2 1 V3 2 V5 4
indegree[0..5] 0 1 0 0 2 0 012345
§7.5 有向无环图及其应用
G.vertices[0] v1 G.vertices[1] v2 ^ G.vertices[2] v3 G.vertices[3] v4 G.vertices[4] v5 ^ G.vertices[5] v6
§7.5 有向无环图及其应用
G.vertices[0] v1 G.vertices[1] v2 ^ G.vertices[2] v3 G.vertices[3] v4 G.vertices[4] v5 ^ G.vertices[5] v6
3
4 4^
4
2 1^ 3^
1^
s
0 V1 3 V4
5 V6
0
§7.5 有向无环图及其应用
G.ver4ti号ces顶[0]点v的1 入度减13
2
1^
G.vertices[1] v2 ^
s
打印G.vertices[3].data
G.vertices[2] v3
4
1^
G.vertices[3] v4
4^
G.vertices[4] v5 ^
3
G.vertices[5] v6
相关文档
最新文档