2012-02-01 9 views
20

Jestem na etapie uczenia się złożoności cyklicznej (CC). Dla praktyki, jestem obliczania cyclomatic złożoność 2 Przykłady i chcą potwierdzić, czy moje odpowiedzi są poprawne, czy nie ...Obliczanie złożoności cyklicznej

Odnosząc się do Wikipedia, CC jest podana przez M = E − N + 2P gdzie:

  • E = liczba krawędzi grafu
  • N = liczba wierzchołków grafu
  • P = liczba połączonych elementów

Należy pomóc.

Example 1

Tutaj, E = 8, n = 9 i P = 1. Zatem M = 8 - 9 + (2x1) = 1.

Przykład 2:

Example 2

Tutaj E = 11, N = 10 i P = 1. Stąd M = 10 - 11 + (2x1) = 1.

Stąd dla obu przykładów CC jest 1. Proszę dać mi znać, jeśli moje obliczenia są cor rect lub nie.

+5

mam głosu, aby zamknąć to pytanie jako off-topic, ponieważ jest matematyka workflow oparte. To należy do Software Engineering, a nie do Stack Overflow. – TylerH

Odpowiedz

21

Należy zachować ostrożność, aby poprawnie wstawić wartości do formuły.

W przykładzie 1, można powiedzieć

Tutaj, E = 8, n = 9 i P = 1

Ale faktycznie, to jest na odwrót: 9 krawędzie (= E) , 8 węzłów (= N), więc otrzymasz CC o wartości 3.

W przykładzie 2 masz prawidłowe wartości: E = 11, N = 10, P = 1. Ale wstawiasz je w niewłaściwej kolejności w formule; to faktycznie powinno być 11 - 10 + (2x1) = 3.

Skrót: Jeśli masz zdjęcie swojego wykresu, możesz z łatwością określić złożoność cykliczności. Po prostu policz liczbę regionów, w których tło jest podzielone przez krawędzie. W twoim pierwszym przykładzie masz 2 obszary wewnętrzne (graniczące z krawędziami) i jeden otaczający region, dając CC równy 3. To samo dotyczy drugiego przykładu. (Ta metoda wymaga oczywiście, aby krawędzie nie przecinały się nawzajem, oczywiście.)

+1

+1, nie wiedziałem, że metoda podziału tła :) – Kos

+0

Ohh tak ... Zauważyłem błędne wartości przez pomyłkę ... Dzięki za wskazanie i pomoc w udzieleniu odpowiedzi. Również +1 dla metody skrótu ... Nie wiedziałem o tym. :) –

+0

Kolejne +1 dla ** skrótu ** - działa jak czar. – joshuamabina

7

Również, jeśli to pomaga, liczba instrukcji warunkowych (jeśli, podczas, dla) +1. Tak więc w powyższym przykładzie są 2 instrukcje warunkowe. więc 2 + 1 = 3. Złożoność cykliczna w tym przypadku to 3

+1

Czy masz referencję dla tej heurystyki? – Apalala

+1

@Apalala Obowiązuje dla dowolnego wykresu przepływu sterowania z tylko * jednym wpisem * i tylko * jednym punktem wyjścia *. Pokazał ją Thomas J. MacCabe. Zobacz [tutaj] (https://dx.doi.org/10.1109%2Ftse.1976.233837) – Quirk

1

Po prostu policz numer zamkniętego regionu i dodaj 1 do niego.

W przykładzie powyżej, ilość zamkniętego obszaru = 2, co CC = 2 + 1 = 3

1

P = liczba połączonych elementów

, CZYLI

P = liczba węzłów, które mają punkty wyjścia

Source