2012-02-01 145 views
20

我處於圈複雜度(CC)的學習階段。圈旋複雜度的計算

  • E =數量:對於實踐中,我計算圈的2例複雜性,並要確認是否我的答案是正確的或不...

    參考維基百科,CC被M = E − N + 2P給地方該圖的邊的

  • N =圖表
  • P的節點的數量=連接的組件

的數量請幫助。

Example 1

在此,E = 8,N = 9,P = 1。因此M = 8 - 9 +(2×1)= 1

實施例2:

Example 2

這裏E = 11,N = 10和P = 1。因此M = 10-11 +(2x1)= 1.

因此,對於這兩個例子CC是1.請讓我知道,如果我的計算是可靠的是否或不。

+5

我投票,因爲它是基於工作流程的數學關閉這一問題作爲題外話節點的數量。這屬於軟件工程,而不是堆棧溢出。 – TylerH 2017-01-25 17:32:37

回答

21

您需要更加小心地將值正確插入到公式中。

在例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個內部區域(邊緣)和一個周圍區域,給出了3的CC。與第二個例子相同。 (這種方法要求邊緣顯然不相互交叉。)

+1

+1,不知道背景劃分的方法:) – Kos 2012-02-01 15:19:00

+0

哦,是的...我錯誤地注意到了錯誤的值......感謝您指出並幫助我解答。還有+1,用於快捷方式...我不知道。 :) – 2012-02-01 15:23:15

+0

另一個**爲**快捷鍵** - 作品像一個魅力。 – joshuamabina 2016-07-26 10:44:09

7

此外,如果這有幫助,它有條件的(如果,同時)for語句數量+1。所以在上面的例子中,有兩個條件語句。所以2 + 1 = 3。在這種情況下,環的複雜性是3

+1

你有這個啓發式的參考嗎? – Apalala 2016-09-13 00:20:23

+1

@Apalala這適用於任何只有*一個條目*和僅*一個退出*點的控制流程圖。 Thomas J. MacCabe表明了這一點。請參閱[這裏](https://dx.doi.org/10.1109%2Ftse.1976.233837) – Quirk 2017-05-03 19:13:33

1

只計算封閉區域的數量併爲其添加1。

在你上面的例子,閉區域= 2的數,因此,CC = 2 + 1 = 3

1

P =連接的組件

換句話說數量

P =所述有出口點

Source