伪代码的圈复杂度计算
Calculation of Cyclomatic Complexity for Pseudocode
while(m<n)
if(x>y) AND (a<b) then
a=a+1
y=y-1
end if
m=m+1
end while
我正在计算上述伪代码的圈复杂度,我得出的结论是
M=(决策点)+ 1
其中 M 是圈复杂度
我得到了答案 3
是真的吗?
首先,让我们识别每个语句。我在这里使用的是字母,但也可以是数字。
A while(m<n)
B,C if(x>y) AND (a<b) then
D a=a+1
E y=y-1
end if
F m=m+1
G end while
- 请注意,第二个语句有两个 conditions/predicates/decision 点(或随便你怎么称呼它们),所以我将它们命名为 B 和 C。
- 我打算用
end while
(G)作为退出点。
现在我们可以绘制控制流图 (CFG):
最后,用三种不同的方式计算圈复杂度 (M):
M = E-V+2*K = 9-7+2*1 = 4
M=C+1=3+1=4
M = 地区(CFG) = 4
其中:
E=边数
V=顶点数
K=图分量数
C=conditions/decision 点数
与上述逻辑相比,@osEduSol 提到的是正确的,即
M=(决策点)+ 1
其中 M 是圈复杂度
有3个决策点
我得到了答案 4
while(m<n)
if(x>y) AND (a<b) then
a=a+1
y=y-1
end if
m=m+1
end while
我正在计算上述伪代码的圈复杂度,我得出的结论是
M=(决策点)+ 1
其中 M 是圈复杂度
我得到了答案 3
是真的吗?
首先,让我们识别每个语句。我在这里使用的是字母,但也可以是数字。
A while(m<n)
B,C if(x>y) AND (a<b) then
D a=a+1
E y=y-1
end if
F m=m+1
G end while
- 请注意,第二个语句有两个 conditions/predicates/decision 点(或随便你怎么称呼它们),所以我将它们命名为 B 和 C。
- 我打算用
end while
(G)作为退出点。
现在我们可以绘制控制流图 (CFG):
最后,用三种不同的方式计算圈复杂度 (M):
M = E-V+2*K = 9-7+2*1 = 4
M=C+1=3+1=4
M = 地区(CFG) = 4
其中:
E=边数
V=顶点数
K=图分量数
C=conditions/decision 点数
与上述逻辑相比,@osEduSol 提到的是正确的,即
M=(决策点)+ 1
其中 M 是圈复杂度
有3个决策点
我得到了答案 4