私は循環的複雑性(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です。計算が正しいかどうかを教えてください。
数式に値を正しく挿入するには、さらに注意する必要があります。
例1では、あなたは言う
ここで、E = 8、N = 9、P = 1
しかし実際には、逆の方向です:9つのエッジ(= E)、8つのノード(= N)なので、CCは3になります。
例2では、E = 111、N = 10、P = 1の値があります。ただし、式で間違った順序で挿入します。実際には11 - 10 + (2x1) = 3
である必要があります。
ショートカット:グラフの図がある場合、循環的複雑度を非常に簡単に判断できます。背景がエッジで分割される領域の数を数えるだけです。最初の例では、2つの内部領域(エッジで囲まれた領域)と1つの周囲領域があり、CCは3になります。2番目の例でも同じことが言えます。 (この方法では、明らかに、エッジが互いに交差していないことが必要です。)
また、これが役立つ場合、条件付き(If、while、for)ステートメントの数+1。したがって、上記の例には2つの条件ステートメントがあります。 2 + 1 = 3です。この場合の循環的複雑度は3です
閉じた領域の数をカウントし、それに1を追加するだけです。
上記の例では、閉領域の数= 2なので、CC = 2 + 1 = 3