23

私は循環的複雑度(CC)の学習段階にあります。練習のために、私は2つの例の循環的複雑度を計算しており、私の答えが正しいかどうかを確認したい...

ウィキペディアを参照すると、CC は次のように指定されM = E − N + 2Pます。

  • E = グラフのエッジの数
  • N = グラフのノード数
  • P = 連結成分の数

助けてください。

例 1

ここで、E = 8、N = 9、P = 1 です。したがって、M = 8 - 9 + (2x1) = 1 です。

例 2:

例 2

ここで、E = 11、N = 10、P = 1 です。したがって、M = 10 - 11 + (2x1) = 1 です。

したがって、両方の例で CC は 1 です。私の計算が正しいかどうか教えてください。

4

4 に答える 4

23

数式に値を正しく挿入するには、さらに注意する必要があります。

例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つの内部領域(エッジで囲まれている)と1つの周囲領域があり、CCは3になります。2番目の例でも同じことが言えます。(この方法では、明らかにエッジが互いに交差していない必要があります。)

于 2012-02-01T15:14:05.403 に答える
8

また、これが役立つ場合は、条件付き(If、while、for)ステートメントの数+1です。したがって、上記の例では、2つの条件ステートメントがあります。したがって、2 + 1=3です。この場合の循環的複雑度は3です

于 2012-08-04T10:19:36.223 に答える
1

閉じた領域の数を数えて、それに 1 を足すだけです。

上記の例では、閉じた領域の数 = 2 なので、CC = 2+1 = 3

于 2016-12-19T11:45:59.407 に答える
0

P = 連結成分の数

言い換えると

P = 出口点を持つノードの数

ソース

于 2017-01-11T10:00:07.650 に答える