关键路径的求解方法

382 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

定义

根据百度百科上的说法,关键路径是指设计中从输入到输出经过的延时最长的逻辑路径。

实际上关键路径就是找源点到终点上的权值最大的一个。说实话,我对关键路径的真正含义也不是很清楚,但是我会算!

关键路径求解方法

20191130161403691.png

我们从A点出发,A点记为0。

A到B的路径只有一条,长度为5,B点记为5。

A到C的路径只有一条,长度为7,C点记为7。

我们从B点出发

B到D的距离为9,且是唯一到D距离,D点记为5+9=14。

B的E的距离为3,非唯一到E的路径,暂且记E点为5+3=8。

我们从c点开始找

C只有一条到E的路径,E点的值为7+11=18,取更大的E值,所以E更新为18。

我们从D点开始找

D只有一条到F的路径,F的值暂且取为14+6=20。

我们从E点开始找

E只有一条到F的路径,F的值为18+4=22。我们取较大的F值,F最终值为22。

关键路径长度

所以终点F的值为22,关键路径的长度为22。

而各个点的取值分别为:

A:0

B:5

C:7

D:14

E:18

F:22

关键路径

我们再从终点F开始往回找,F到D长度为22-6=16,所以D=16

F到E,E=22-4=18

B分别有两条路径,E->B或者D->B,我们这里需要的B值是最小B值,所以B=16-9=7

E到C,C=18-11=7

C->A与B->A,其中最小值A=0

所以各个点的值分别为:

A:0

B:7

C:7

D:16

E:18

F:22

我们从中选择两次取值相同的点,分别为A、C、E、F。

所以关键路径就是A->C->E->F。

但有些时候,关键路径并非一条。