当前位置:首页 » 半夜时分 » 最长路径为什么是最短时间

最长路径为什么是最短时间

发布时间: 2022-07-08 08:10:53

1. 数据结构中关键路径有说完成整个工程的最短时间为原点到汇点的最长带权路径,为什么如题 谢谢了

int* ve=(int*)malloc(projectnumber*sizeof(int));//用来表示Vj最早发生时间 int* l=(int*)malloc(activenumber*sizeof(int));//用来表示活动Ai最迟完成开始时间 int* e=(int*)malloc(activenumber*sizeof(int));//表示活动最早开始时间 edgenode *p; totaltime=0; for(i=0;i<projectnumber;i++) ve[i]=0; for(i=0;i<projectnumber;i++) } while(front!=rear) } if(m<projectnumber) totaltime=ve[projectnumber-1]; for(i=0;i<projectnumber;i++) vl[i]=totaltime; for(i=projectnumber-2;i>=0;i--) } i=0; printf("| 起点 | 终点 | 最早开始时间 | 最迟完成时间 | 差值 | 备注 |\n"); for(j=0;j<projectnumber;j++) } return 1; } void seekkeyroot() int main() while(ch!='S'&&ch!='E'); switch(ch) } } 4: 总结: 至此,全部的设计过程完毕,上面所有代码已经在VC6.0+Win2000平台下调试成功。从上面的分析可以看出 ,设计结果与预测的相符合. 关键路径在具体的工程中有着重要的作用,当一个AOE网络中的关键路径只有一条时,加速关键路径上的任一关键活动,能够加速整个工程的完成。但当一个AOE网络中的关键路径不止一条时,加速任一关键活动不一定能够加速整个工程的完成。 如方案1与方案2在改变关键路径时整个工程的进度没有改变。

2. 图中的最长路径问题怎么算

把距离取负值就是个最短路径问题,有负权值的最短路径不适用dijkstra算法,但基于松弛技术的bellmanford和floyd算法都是适用的,计算多点之间最短路径使用floyd算法
具体来说是进行n-2轮松弛,即对任意两点穷举第三点,并尝试将距离替换成经由第三点的距离。完成后额外进行一轮松弛,如果距离继续变小,说明存在负权有向环,最短路径不存在(可以不断沿着环绕),否则当前路径就是最短路径。

3. 数据结构中,关键路径是最长的路径,那为什么求的时候还要找最早路径和最晚路径相等的路径呢

完成不同路径上的活动所需时间虽然不同,但是只有所有路径上的活动都完成了,整个工程才能算是结束了。因此,从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径。把关键路径上的活动称为关键活动。完成整个工程的最短时间就是关键路径的长度,也就是关键路径上各种花费开销的总和。这是因为关键活动影响了整个工程的时间,即如果关键活动不能按时完成的话,整个工程的完成时间就会延长。因此,只要找到了关键活动,就找到了关键路径,也就可以得出最短完成时间。

4. AOE网中工程求最短时间为什么选最长路径作关键路径,而不是最短路径

最短路径只是某一点到另一点走的最快最短的路径,而关键路径以点为事件,需要将所有工程完成时的路径,所以选最长路径为关键路径才能确保所有工程都完成.

5. 关键路径及最短时间

做一次饭需要1小时,烧一次水需要半小时;如果同时开始做饭和烧水,两项工作全部做完,所需时间就是1小时;因为做饭需要的时间长。
做饭相当于关键路径,做饭时间相当于关键路径的长度,也就是两项工作全部做完的最短时间

6. 《数据结构》关键路径问题【高手进】

AOE网(Activity On Edge)即边表示活动的网,是一个带权的有向无环图,其中顶点表示事件(Event),每个事件表示在它之前的活动已经完成,在它之后的活动可以开始,弧表示活动,权表示活动持续的时间。AOE网可用来估算工程的完成时间。由于整个工程只有一个开始点和一个完成点,故在正常的情况(无环)下,网中只有一个入度为零的点(源点)和一个出度为零的点(汇点)。

由于在AOE网中有些活动可以并行地进行,所以完成工程的最短时间是从开始点到完成点的最长路径的长度(路径上各活动持续时间之和)。路径长度最长的路径叫做关键路径。假设开始点是v1,从v1到vi的最长路径长度叫做事件vi的最早发生时间,这个时间决定了所有以vi为尾的弧所表示的活动的最早开始时间。用e(i)表示活动ai的最早开始时间,l(i)为一个活动的最迟开始时间,这是在不推迟整个工程完成的前提下,活动ai最迟必须开始进行的时间。两者之差l(i)-e(i)意味着完成活动ai的时间余量。l(i)=e(i)的活动叫做关键活动。关键路径上的所有活动都是关键活动,提前完成非关键活动(不在关键路径的活动)并不能加快工程的进度。为了求得AOE网中活动的e(i)和l(i),首先应求得事件的最早发生时间ve(j)和最迟发生时间vl(j)。如果活动ai由弧<j, k>表示,其持续时间记为t(<j, k>),则有:e(i) = ve(j), l(i) = vl(k) - t(<j, k>)。求ve(j)和vl(j)需分两步进行:

从ve(0)=0开始向前递推,其中T是所有以第j个顶点为头的弧的集合。

从vl(n-1)=ve(n-1)起向后递推,其中S是所有以第i个顶点为尾的弧的集合。

活动ai的最早开始时间e[i]

若活动ai是由弧<vi,vj>表示,根据AOE网的性质,只有事件vi发生了,活动ai才能开始。也就是说,活动ai的最早开始时间应等于事件vi的最早发生时间。因此,有:e[i]=ve[i]
活动ai的最晚开始时间l[i]

活动ai的最晚开始时间指,在不推迟整个工程完成日期的前提下,必须开始的最晚时间。若 由弧< vi,vj>>表示,则ai的最晚开始时间要保证事件vj的最迟发生时间不拖后。因此,应该有:l[i]=vl[j]-t(<vi,vj>)
由此得到求关键路径的算法:

输入e条弧<j, k>,建立AOE网的存储结构;
从源点出发,令ve[0]=0,按拓扑顺序求其余各顶点的最早发生时间ve[i](1<=i<=n-1)。如果得到的拓扑有序序列中顶点个数小于网中顶点数n,则说明网中存在环,不能求关键路径,算法终止,否则转到步骤(3);
从汇点vn出发,令vl[n-1]=ve[n-1],按逆拓扑顺序求其余各顶点的最迟发生时间vl[i](n-2>=i>=0);
根据各顶点的ve和vl值,求每条弧s的最早开始时间e(s)和最迟开始时间l(s)。若某弧满足条件e(s)=l(s),则为关键活动。

7. 可以用求最短路径的方法思想求最长路径么为什么

floyed算法可以有回路,但是不能有负权回路。
最长路问题分成两种:
1. 可以走重复边。
2. 不能走重复边。
如果是1的话,那么如果图中有一条权为正的环,那么你沿着环反复走就得到无限长的路了,而如果没有这样的环的话,Bellman–Ford(单源)或者Floyed(任意点对)算法都可以计算出正确的解。

8. 光走更长的路反而时间更短,这究竟是为什么呢

生活中我们为了更快地到达目的地,最好的办法是沿着自己与目的地之间的直线连接行走,这样的路程是最短的,因此花的时间也是最少的,这个道理我们都懂,但是我们从光的传播中却得到一个这样的结果:路程最短,时间却不一定最短。这不是与我们的现实生活相矛盾吗?在揭示这种现象时,我们先了解下面的一些知识。

热点内容
为什么淘宝买东西套餐比单买还贵 发布:2025-05-15 04:37:25 浏览:398
腾讯的审美为什么辣眼睛 发布:2025-05-15 04:35:18 浏览:692
手机为什么不能读文件 发布:2025-05-15 04:31:36 浏览:130
为什么水晶头和插座接线不一样 发布:2025-05-15 03:57:10 浏览:323
人为什么睡时间长就难受 发布:2025-05-15 03:55:02 浏览:304
为什么孩子还要找人花钱 发布:2025-05-15 03:41:29 浏览:63
电视上为什么找不到86版西游记 发布:2025-05-15 03:40:03 浏览:368
手机有飞行模式为什么要关机 发布:2025-05-15 03:39:59 浏览:911
为什么排骨上面会有肠管的东西 发布:2025-05-15 02:55:41 浏览:597
为什么百度网盘里的文件打开不了 发布:2025-05-15 02:49:43 浏览:935