前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >加权有向图----关键路径算法

加权有向图----关键路径算法

作者头像
SuperHeroes
发布2018-05-30 17:53:19
2.4K0
发布2018-05-30 17:53:19
举报
文章被收录于专栏:云霄雨霁云霄雨霁

优先级限制下的并行任务调度:给定一组需要完成的任务和每个任务所需要的时间,以及一组关于任务完成的先后次序的优先级限制。在满足条件的前提下应该如何在若干相同的处理器上安排任务并在最短的时间内完成任务?

“关键路径”算法可以在线性时间内解决此问题。这个问题与无环加权有向图的最长路径问题是等价的。

为了设计求关键路径的动态规划算法,现在定义三个术语

事件i可能最早发生的时间earliest(i): 是指从开始结点s到结点i的最长路径的长度。

事件i允许的最迟发生时间latest(i): 是值不影响效益的条件下,事件i允许发生的最晚时间。

关键活动: 处于关键路径上的活动是关键活动,它必须准时启动,否则就会使任务延期。

earliest()计算方法:

  • earlist(0) = 0
  • earlist(j) = max{earlist(i) + w(i,j)}    0<j<V, i∈P(j)   注:P(j)是拓扑图中与顶点j直接相邻的前一顶点集

latest()计算方法:

  • latest(V-1) = earliest(V-1)
  • latest(i) = min{latest(j) - w(i,j)}   0<=i<V-1,j∈S(i)    注:S(i)是拓扑图中与i直接相邻的后一结点集

关键活动计算方法:

若latest(j) - earliest(i) = e.weight (e为顶点i和j之间的有权边),则边e是关键活动。对于关键路径上的每一个关键结点i,都有latest(i) = ealiest(i).

关键路径算法基本步骤:

  1. 确认有向图G是无环图,并进行拓扑排序;
  2. 按拓扑次序计算earliest(i), 0<=i< V-1;
  3. 按逆拓扑排序计算latest(i), 0<=i< V-1;
  4. 计算latest(j) - earliest(i),判断是否为关键活动。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档