AOE-网(拓扑排序的集成应用)
创作时间:
作者:
@小白创作中心
AOE-网(拓扑排序的集成应用)
引用
CSDN
1.
https://m.blog.csdn.net/creative_mind/article/details/143869551
在生活中,我们会精细规划路线或者安排日程;在工程项目中,我们会细心安排施工流程;在工作中,我们会有先后作业以提高效率......这些场景展示了AOE网在不同领域的应用,它的核心价值在于通过图形化的方式帮助理解和优化复杂系统中的活动顺序和时间管理。
核心解读:
- AOE-网是一个带权的有向无环图,其中顶点表示事件,弧表示活动,权表示活动持续的时间
- “路径长度”最长的路径叫关键路径
为了方便求解,我们进行一些假设:
- 活动记为a1,a2,a3......
- 事件记为v1,v2,v3,v4......
- 活动最早开始时间记为e(i)--a(i)
- 活动最迟开始时间记为L(i)--a(i)
- 满足L(i)=e(i)的活动称为关键活动,想清楚关键路径上的活动全是关键活动!否则会有时间余量
- 事件最早发生时间为Se(j)--v(j)
- 事件最迟发生时间为SL(j)--v(j)
基本思路:求关键路径
- 输入e条弧{j, k), 建立AOE-网的存储结构;建立AOE网的存储结构,通常使用邻接表来表示
- 从源点v0出发,令Se[0]=0, 按拓扑有序求其余各顶点的最早发生时间Sei
。如果得到的拓扑有序序列中顶点个数小于网中顶点数n, 则说明网中存在环,不能求关键路径,算法终止;否则执行步骤 - 从汇点vn出发,令SL[n-1]=Se[n-1], 按逆拓扑有序求其余各顶点的最迟发生时间SLi
- 根据各顶点的Se和SL值,求每条弧s的最早开始时间e(s)和最迟开始时间L(s)若某条弧满足条件e(s)=L(s), 则为关键活动。
- 将所有关键活动连接起来,形成关键路径,输出关键路径,这代表了项目的最短完成时间。
代码实现:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTICES 100
#define INF 999999
int n; // 顶点数
int e; // 边数
int Se[MAX_VERTICES]; // 最早发生时间
int SL[MAX_VERTICES]; // 最迟发生时间
int graph[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵表示图
// 拓扑排序,计算最早发生时间
int topologicalSort() {
int indegree[MAX_VERTICES] = { 0 };
int stack[MAX_VERTICES], top = -1;
int i, j, k;
// 计算入度
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (graph[i][j] != 0) {
indegree[j]++;
}
}
}
// 将所有入度为0的顶点入栈
for (i = 0; i < n; i++) {
if (indegree[i] == 0) {
stack[++top] = i;
}
}
int count = 0;
while (top != -1) {
int u = stack[top--];
Se[u] = (u == 0) ? 0 : Se[u - 1] + graph[u - 1][u]; // 源点的最早发生时间为0
for (i = 0; i < n; i++) {
if (graph[u][i] != 0) {
Se[i] = (Se[i] > Se[u] + graph[u][i]) ? Se[i] : Se[u] + graph[u][i];
indegree[i]--;
if (indegree[i] == 0) {
stack[++top] = i;
}
}
}
count++;
}
if (count != n) {
printf("有环\n");
return 0;
}
return 1;
}
// 逆拓扑排序,计算最迟发生时间
void inverseTopologicalSort() {
int i, j, k;
for (i = n - 1; i >= 0; i--) {
for (j = n - 1; j >= 0; j--) {
if (graph[j][i] != 0) {
SL[i] = (SL[i] < SL[j] - graph[j][i]) ? SL[i] : SL[j] - graph[j][i];
}
}
SL[i] = (i == n - 1) ? Se[n - 1] : SL[i];
}
}
配图理解:
热门推荐
凤凰古城+张家界:5天4晚闺蜜游,从文化到自然的双重体验
从西湖到张家界:江南水乡到湘西山水的自驾之旅
沪渝杭瑞自驾行:杭州到张家界凤凰12小时自驾全攻略
以宣纸为媒 展墨韵万变
七天减脂餐单大揭秘:跟着排行榜瘦下来!
世界肥胖日后,营养师教你科学减肥饮食
减肥新姿势:20%运动+80%饮食的秘密
地中海饮食:科学实证的健康减肥之道
后脑勺撞击的急救指南
儿童哮喘频发,医生详解症状表现与治疗要点
《捕盗行纪》新手入门攻略
长寿花养护全攻略:做好四点,花开一茬接一茬
专家详解:如何治疗后脑勺骨头的伤害
奥运冠军郑钦文,这6点饮食建议值得普通人学习
3分10秒完成疏散,西安曲江十四小地震演练见成效
温州启动“童声唱诵防震减灾”活动,创新普及应急知识
养松鼠对城市生态系统的影响揭秘
松鼠养殖:下一个致富风口?
松鼠成宠物界新宠,市场潜力巨大?
2024年人民币汇率指数上涨近4%,经济向好支撑汇率稳定
人民币汇率波动真相:金融账户承压,实际已大幅贬值
研究发现调节水稻耐盐性分子新机制
《捕盗行纪》属性分配攻略
中国电建北京院薪资揭秘:国企高薪诱惑
中国研究团队揭示鼻咽癌治愈新希望:2年后存活患者82%可实现统计学治愈
文学人物塑造指南:从理论到实践,解密经典角色创作秘诀
保费高出63%!新能源车成本飙升,更大的麻烦还在后面
新能源汽车空气质量改善效果
新能源汽车:改善空气质量的绿色选择
新能源车产业对区域经济的拉动效应研究