...图的存储结构7.3 图的遍历7.4 图的连通性问题7.5 有向无环...演示课件.pptVIP

  • 2
  • 0
  • 约2.59万字
  • 约 10页
  • 2019-12-22 发布于湖北
  • 举报

...图的存储结构7.3 图的遍历7.4 图的连通性问题7.5 有向无环...演示课件.ppt

0 0 0 1 in link 5 5 4 3 ^ ^ ^ vex next 2 ^ 2 5 ^ 2 4 0 1 2 3 4 5 6 ^ 输出序列:6 1 3 2 1 0 4 p 4 top 3 2) 定义函数: low(v) = Min{visited[v], low[w], visited[k] } 其中: 顶点w 是生成树上顶点v 的孩子; 顶点k 是生成树上和顶点v有回边相联接的祖先; visited记录深度优先遍历时的访问次序 若对顶点v,在生成树上存在一个子树根w, 且 low[w] ≥ visited[v] 则顶点v为关节点。 对深度优先遍历算法作如下修改: visited[v]的值改为遍历过程中顶点的访问次序count 值; 2. 遍历过程中求得 low[v]=Min{visited[v],low[w],visited[k]} 3. 从子树遍历返回时, 判别low[w]≥visited[v]? for(p=G.vertices[v0].firstarc; p; p=p-nextarc) { } void DFSArticul(ALGraph G, int v0) { // 从第v0个顶点出发深度优先遍历图 G, // 查找并输出关节点 } // DFSArticul min =visited[v0] = ++count; // v0是第count个访问的顶点, 并设low[v0]的初值为min // 检查v0的每个邻接点 low[v0] = min; w = p-adjvex; // w为v0的邻接顶点 if (visited[w] == 0) { // w未曾被访问 DFSArticul(G, w); // 返回前求得low[w] } else // w是回边上的顶点 if (low[w] min) min = low[w]; if (low[w]=visited[v0]) printf(v0, G.vertices[v0].data); //输出关节点 if (visited[w] min) min = visited[w]; 算法 Biconnected 的时间代价是 O(n+e)。其中 n 是该连通图的顶点数,e 是该连通图的边数 此算法的前提条件是连通图中至少有两个顶点,因为正好有一个顶点的图连一条边也没有。 7.5.1 拓扑排序 7.5.2 关键路径 7.5 有向无环图及其应用 7.5.1 拓扑排序 一、概念 1、有向无环图 DAG (Directed Acyclic Graph) 无环的有向图 2、 AOV (Activity On Vertices)网络:用顶点表示活动,用有向弧Vi, Vj表示活动间的优先关系。Vi 必须先于活动Vj 进行。这种有向图称为用顶点表示活动的网络。 若vi,vj是图中有向边,则vi是vj的直接前驱;vj是vi的直接后继 AOV网中不允许有回路,这意味着某项活动不能以自己为先决条件 计划、施工过程、生产流程、程序流程等都是“工程”。除了很小的工程外,一般都把工程分为若干个叫做“活动”的子工程。完成了这些活动,这个工程就可以完成了。 例如,计算机专业学生的学习就是一个工程,每一门课程的学习就是整个工程的一些活动。其中有些课程要求先修课程,有些则不要求。这样在有的课程之间有领先关系,有的课程可以并行地学习。 7.5 有向无环图及其应用 例 课程代号 课程名称 先修棵 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 无 C1 C1,C2 C1 C3,C4 C11 C3.C5 C3,C6 无 C9 C9 C1,C9,C10 程序设计基础 离散数学 数据结构 汇编语言 语言的设计和分析 计算机原理 编译原理 操作系统 高等数学 线性代数 普通物理 数值分析 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 1、在AOV中 拓扑有序序列:将各个顶点 (代表各个活动)排列成一个线性有序的序列,使得AOV网络中所有应存在的前驱和后继关系都能得到满足。 拓扑排序——把AOV网络中各顶点按照它们相互之间的优先关系排列成一个线性序列的过程。 检测AOV网中是否存在环方法:

文档评论(0)

1亿VIP精品文档

相关文档