IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构(十)——拓扑排序和关键路径 -> 正文阅读

[数据结构与算法]数据结构(十)——拓扑排序和关键路径

1. 拓扑排序

(1)定义

  • AOV网:顶点表示活动,有向边 < V i , V j > <V_i,V_j> <Vi?,Vj?>表示活动 V i V_i Vi?先于活动 V j V_j Vj?进行的一种关系。
    ①AOV网一定是有向无环图。
    ②任何顶点不能以自己作为其前驱或后继。
    在这里插入图片描述
  • 拓扑排序:对有向无环图顶点的一种排序。使得若存在一条从顶点A到顶点B的路径,则在排序中顶点B出现在顶点A的后面。
    ①理解为工程事件执行的先后次序。
    ②一个AOV网可能有多种拓扑排序。

(2)思路
初始化时将AOV网中所有入度为0的顶点加入栈中。

  1. 从栈中选择一个入度为0的顶点并输出
  2. 删除该顶点和以它为起点的有向边
  3. 循环步骤1、2,直到AOV网为空或当前网中不存在无前缀的顶点。
    在这里插入图片描述
/*
indegree[vexnum]:顶点的入度向量
s:栈
*/
bool ToplogicalSort(Gragh G) {
	// 1. 初始化栈
	for(int i=0; i<G.vexnum; i++)
		if(indegree[i] == 0)
			S.push(i);
	int count = 0;	
	// 2. 循环取出入度为0的顶点并删除其输出边
	while(!S.empty()) {
		i = S.top();	S.pop();
		count++;
		for(p=G.vertices[i].firstarc;p;p=p->nextarc)	// 邻接顶点
		{
			v = p->adjvex;	// 序号
			if((--indegree[v]) == 0)
				S.push(v); 
		}
	}
	// 3. 判断排序是否成功
	if(count < G.vexnum)
		return false;
	else return true;
}

(3)时间复杂度

  • 采用邻接表存储图时,时间复杂度为 O ( ∣ V ∣ + ∣ E ∣ ) O(|V|+|E|) O(V+E)
  • 采用邻接矩阵存储图时,时间复杂度为 O ( ∣ V ∣ 2 ) O(|V|^2) O(V2)

2. 逆拓扑排序

(1)思路
初始化时将AOV网中所有出度为0的顶点加入栈中。

  1. 从栈中选择一个出度为0的顶点并输出
  2. 删除该顶点和以它为终点的有向边
  3. 循环步骤1、2,直到AOV网为空或当前网中不存在无前缀的顶点。

3. 关键路径

(1)定义

  • AOE网:在带权有向图中,以顶点表示事件,以有向边表示活动,以边上的权值表示完成该活动的开销。
    ①AOE网中边有权值,AOV网中边无权值。
    ②只有在某个顶点代表的事件发生后,从该顶点出发的各有向边所代表的活动才能开始。
    ③只有在进入某顶点的所有边代表的活动都结束时,该顶点所代表的事件才能发生。

  • 开始顶点:仅有的一个入度为0的顶点,称为源点。

  • 结束顶点:仅有一个出度为0的顶点,称为汇点。

  • 关键路径从源点到汇点的所有路径中,具有最大路径长度的路径
    ①关键路径表示完成整个工程需要的最短时间
    在这里插入图片描述

  • 关键活动:关键路径上的活动。

  • 事件 v k v_k vk?的最早发生时间ve:指从源点到顶点的最长路径长度。
    在这里插入图片描述

  • 活动的最早发生时间e:弧的起点表示的事件的最早发生时间ve。

  • 事件的最迟发生时间vl
    在这里插入图片描述

  • 活动的最迟发生时间l:弧的起点表示的事件的最迟发生时间vl。

  • 活动的时间余量:等于活动最迟开始时间-活动最早开始时间。

(2)时间余量求解思路

  • 拓扑排序–>事件的最早发生时间
  • 逆拓扑排序–>事件的最迟发生时间
  • 事件的最早发生时间–>活动的最早发生时间
  • 事件的最迟发生时间–>活动的最晚发生时间
    在这里插入图片描述

(3)性质

  • 若关键活动耗时增加,整个工程的工期将增长。
  • 当关键活动缩短到一定程度时,关键活动可能会变成非关键活动。
  • 只提高一条关键路径上关键活动速度不能缩短整个工程工期,只有加快所有关键路径的关键活动才能缩短工期。
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:37:25  更:2022-05-12 16:39:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:44:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码