我正处于圈复杂度(CC)的学习阶段。对于练习,我正在计算2个例子的圈复杂度,并想确认我的答案是否正确......
参考维基百科,CC由M = E − N + 2P
提供,其中:
请帮忙。
这里,E = 8,N = 9,P = 1.因此M = 8 - 9 +(2x1)= 1.
示例2:
这里E = 11,N = 10且P = 1.因此M = 10 - 11 +(2x1)= 1.
因此,对于两个例子,CC都是1.如果我的计算是正确的,请告诉我。
答案 0 :(得分:22)
您需要更加谨慎地将值正确地插入到公式中。
在示例1中,您说
这里,E = 8,N = 9且P = 1
但实际上,它是反过来的:9个边缘(= E),8个节点(= N),所以你的CC为3。
在示例2中,您具有正确的值:E = 11,N = 10,P = 1。但是你在公式中以错误的顺序插入它们;它实际应该是11 - 10 + (2x1) = 3
。
快捷方式:如果您有图表图片,则可以非常轻松地确定圈复杂度。只计算背景被边缘划分的区域数量。在第一个示例中,您有2个内部区域(边缘为边界)和一个周围区域,CC为3.与第二个示例相同。 (显然,这种方法要求边缘不会相互交叉。)
答案 1 :(得分:8)
如果这有帮助,那么条件(If,while,for)语句的数量为+1。所以在上面的例子中,有2个条件语句。所以2 + 1 = 3。在这种情况下,循环复杂性是3
答案 2 :(得分:1)
只需计算封闭区域的数量并添加1即可。
在上面的示例中,闭区域数= 2,因此CC = 2 + 1 = 3
答案 3 :(得分:1)