数据结构之关键路径
1、AOE网AOE网是⼀个带权的有向无环图其中顶点表示事件Event弧表示活动权表示活动持续的时间。2、源点和汇点AOE网中入度为零的点称为源点将出度为零的点称为汇点。3、关键路径完成工程的最短时间是从源点到汇点的最长路径的长度。路径长度最长的路径就叫做关键路径。ETVEarliest Time Of Vertex)事件最早发生时间就是顶点的最早发生时间。LTVLatest Time Of Vertex)事件最晚发生时间就是每个顶点对应的事件最晚需要开始的时间如果超出此时间将会延误整个工期。ETE(Earliest Time Of Edge)活动的最早开工时间就是弧的最早发⽣时间。LTE(Lastest Time of Edge)活动的最晚开工时间就是不推迟工期的最晚开工时间。4、关键路径算法关键路径Critical Path针对有向无环加权图AOE网工程活动网络是从源点入度为0到汇点出度为0的最长路径。路径上的活动称为关键活动关键路径长度决定整个工程的最短完成时间关键活动延时会直接导致整体工程延时。步骤1拓扑排序对AOE网进行拓扑排序得到有序节点序列若图存在环则无关键路径工程无法正常进行。步骤2计算最早发生时间 ve[]ve[i]节点i事件的最早发生时间从源点正向推导。公式源点 ve[start] 0遍历拓扑序列对当前节点u的所有出边 u→v权重w执行 ve[v] max(ve[v], ve[u] w)。步骤3计算最晚发生时间 vl[]vl[i]节点i事件的最晚发生时间不推迟整体工程工期从汇点逆向推导。公式汇点 vl[end] ve[end]逆序遍历拓扑序列对当前节点v的所有入边 u→v权重w执行 vl[u] min(vl[u], vl[v] - w)。步骤4筛选关键节点与关键路径若节点满足 ve[i] vl[i]该节点为关键节点由相邻关键节点组成的路径即为关键路径。#includeiostream#includevector#includequeue#includecstring#includealgorithmusingnamespacestd;constintMAXN105;constintINF0x3f3f3f3f;// 邻接表存储: to目标节点, weight边权, next下一条边structEdge{intto,w;Edge(intt,intww):to(t),w(ww){}};vectorEdgeadj[MAXN];// 正向邻接表(拓扑、求ve)vectorEdgereverseAdj[MAXN];// 逆向邻接表(求vl)intinDegree[MAXN];// 入度数组vectorinttopoSeq;// 存储拓扑排序序列intve[MAXN],vl[MAXN];// 最早、最晚发生时间// 拓扑排序booltopoSort(intn){queueintq;// 初始化入度为0的节点入队for(inti1;in;i){if(inDegree[i]0)q.push(i);}while(!q.empty()){intuq.front();q.pop();topoSeq.push_back(u);// 遍历出边更新后继节点入度for(Edge e:adj[u]){intve.to;inDegree[v]--;if(inDegree[v]0)q.push(v);}}// 拓扑序列长度不等于节点数说明有环无关键路径returntopoSeq.size()n;}// 计算关键路径voidcriticalPath(intn){// 1. 初始化ve数组正向求最早发生时间memset(ve,0,sizeof(ve));for(intu:topoSeq){for(Edge e:adj[u]){intve.to,we.w;if(ve[v]ve[u]w){ve[v]ve[u]w;}}}// 2. 初始化vl数组逆向求最晚发生时间intendNodetopoSeq.back();fill(vl,vln1,INF);vl[endNode]ve[endNode];// 逆序遍历拓扑序列for(intitopoSeq.size()-1;i0;i--){intvtopoSeq[i];for(Edge e:reverseAdj[v]){intue.to,we.w;if(vl[u]vl[v]-w){vl[u]vl[v]-w;}}}// 3. 输出关键节点和关键路径cout 关键路径计算结果 endl;cout工程最短总工期ve[endNode]endl;cout关键节点;for(inti1;in;i){if(ve[i]vl[i]){couti ;}}coutendl;cout关键活动(边)endl;for(intu1;un;u){// 筛选关键节点之间的边if(ve[u]!vl[u])continue;for(Edge e:adj[u]){intve.to,we.w;if(ve[v]vl[v]ve[v]ve[u]w){cout节点u - 节点v (工期:w)endl;}}}}intmain(){// 初始化memset(inDegree,0,sizeof(inDegree));intn,m;cout请输入节点数、边数;cinnm;// 构建正向、逆向邻接表for(inti0;im;i){intu,v,w;cout请输入第i1条边(起点 终点 权重);cinuvw;adj[u].emplace_back(v,w);reverseAdj[v].emplace_back(u,w);inDegree[v];}// 拓扑排序判环if(!topoSort(n)){cout图中存在环路无关键路径endl;return0;}// 计算并输出关键路径criticalPath(n);return0;}

相关新闻

Peter Corke机器人工具箱:重塑机器人算法开发的智能引擎

Peter Corke机器人工具箱:重塑机器人算法开发的智能引擎

Peter Corke机器人工具箱:重塑机器人算法开发的智能引擎 【免费下载链接】robotics-toolbox-matlab Robotics Toolbox for MATLAB 项目地址: https://gitcode.com/gh_mirrors/ro/robotics-toolbox-matlab 在机器人技术快速发展的今天,算法开发效率…

2026/7/20 17:46:14 阅读更多 →
终极解决方案:如何彻底修复Reloaded II游戏模组加载失败问题

终极解决方案:如何彻底修复Reloaded II游戏模组加载失败问题

终极解决方案:如何彻底修复Reloaded II游戏模组加载失败问题 【免费下载链接】Reloaded-II Universal .NET Core Powered Modding Framework for any Native Game X86, X64. 项目地址: https://gitcode.com/gh_mirrors/re/Reloaded-II 你是否在使用Reloaded …

2026/7/20 17:46:14 阅读更多 →
MySQL事务全解析

MySQL事务全解析

一、事务核心概念 事务是一组数据库操作的集合,是数据库最小逻辑执行单元。 核心特性:一组操作要么全部成功,要么全部失败回滚,不会出现 “一半成功、一半失败” 的脏数据状态。 经典业务场景:银行转账,…

2026/7/20 17:45:13 阅读更多 →

最新新闻

国内OpenClaw官网品牌有哪些?四款主流平台选型对比

国内OpenClaw官网品牌有哪些?四款主流平台选型对比

据公开数据显示,2025年国内AI智能体市场规模已突破百亿,超过六成的企业技术团队正在评估或已引入AI Agent工具。基于OpenClaw开源框架的智能体管理平台因其灵活性和可扩展性,成为这一赛道中关注度较高的方向。然而,面对市面上多个…

2026/7/21 17:11:42 阅读更多 →
计算机毕业设计之山西文化旅游智慧导览系统

计算机毕业设计之山西文化旅游智慧导览系统

随着信息技术的快速发展,智慧旅游已成为旅游业的重要发展趋势。山西,作为中国历史文化名省,拥有丰富的旅游资源。然而,传统的旅游导览方式已难以满足现代游客对便捷、高效、个性化服务的需求。因此,开发一套山西文化旅…

2026/7/21 17:11:42 阅读更多 →
计算机毕业设计之jsp基于Java的商店会员系统

计算机毕业设计之jsp基于Java的商店会员系统

近年来,科技飞速发展,在经济全球化的背景之下,互联网技术将进一步提高社会综合发展的效率和速度,互联网技术也会涉及到各个领域,而商店会员系统在网络背景下有着无法忽视的作用。信息管理系统的开发是一个不断优化的过…

2026/7/21 17:11:42 阅读更多 →
龙虾AI企业智能体软件品牌哪家好?2026八款产品测评含AionClaw解析

龙虾AI企业智能体软件品牌哪家好?2026八款产品测评含AionClaw解析

一、前言 随着企业数字化转型持续推进,能够自主操控电脑、完成多环节办公自动化的龙虾 AI 企业智能体,逐步成为企业优化内部工作效率的辅助工具。市面上多款产品均基于OpenClaw架构开发,不同产品在底层模型、部署形式、协同生态、行业适配方向…

2026/7/21 17:11:42 阅读更多 →
2026年郑州餐饮企业如何借助AI问答占位提升数字化品牌影响力

2026年郑州餐饮企业如何借助AI问答占位提升数字化品牌影响力

2026年郑州餐饮行业数字化趋势与品牌曝光新路径近年来,随着生成式搜索引擎优化(GEO)与AI问答占位技术的兴起,餐饮行业的品牌建设与获客方式正经历显著变化。对于郑州的餐饮企业而言,如何在搜索端有效提升品牌曝光&…

2026/7/21 17:11:42 阅读更多 →
内存泄漏系列专题分析之三十四:【Camera内存泄漏导致】照片模式后置个性画框拍照内存占用比对比机高600M ok

内存泄漏系列专题分析之三十四:【Camera内存泄漏导致】照片模式后置个性画框拍照内存占用比对比机高600M ok

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 内存泄漏系列专题分析之三十四:【内存泄漏导致】照片模式后置个性画框拍照内存占用比对比机高600M 目录 一、我们先来看看一个当前内存占用的实例 二、内存占用超标分析 2.1:分析测试机…

2026/7/21 17:10:41 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻