今天刷了软考真题发现McCabe环路复杂度的计算几乎每次都会考,然而却忘记咋计算了,所以我决定去把它捡回来。
McCabe环路复杂度的计算,共有三种方法。
(1)流图中的区域数等于环形复杂度。
(2)流图G的环形复杂度V(G)=M-N+2,其中,M是流图中边的条数,N是结点数。
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
让我们一起通过一个简单的例题来理解McCabe环路复杂度计算的三种方法。
例题如下图所示(图画的有点丑,勿怪)
第一种方法:流图中的区域数等于环形复杂度
这种方法对于有些人来说可能有点迷糊,就比如我,我刚开始学时以为就是数圈圈,但还是有点不清不楚的感觉,就是用数圈得出来的答案觉得不可靠。所以现在我更加懂了,我是这样子做的,首先画个正方形,有多少个判断节点就在正方形上画几条线,每条线之间相互平行,然后看把正方形分成了几部分区域,如下图所示(相当于切蛋糕,每刀切的方向相同),区域数就是流图的环形复杂度,为3
第二种方法:流图G的环形复杂度V(G)=M-N+2,其中,M是流图中边的条数,N是结点数
看流图可以得出 M=8 ,N=7,所以 V(G)=8-7+2=3
第三种方法:流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目
看流图可以得出 P=2,所以 V(G)=2+1=3