2012-02-01 32 views
20

Estoy en etapa de aprendizaje de complejidad ciclomática (CC). Para la práctica, estoy calculando la complejidad ciclomática de 2 ejemplos y quiero confirmar si mis respuestas son correctas o no ...Cálculo de Complejidad ciclomática

Refiriéndose a Wikipedia, CC está dada por M = E − N + 2P donde:

  • E = el número de los bordes de la gráfica
  • N = el número de nodos del grafo
  • P = el número de componentes conectados

favor, ayuda.

Example 1

Aquí, E = 8, N = 9 y P = 1. Por lo tanto M = 8 - 9 + (2x1) = 1.

Ejemplo 2:

Example 2

Aquí e = 11, N = 10 y P = 1. por lo tanto M = 10 - 11 + (2x1) = 1.

por lo tanto, tanto para el CC ejemplos: 1. por favor, hágamelo saber si mi cálculo es cor rect o no.

+5

voy a votar para cerrar esta cuestión como fuera de tema, ya que es matemática basada en el flujo de trabajo. Esto pertenece a la Ingeniería de Software, no al Desbordamiento de Pila. – TylerH

Respuesta

21

Debe tener más cuidado para insertar correctamente los valores en la fórmula.

En el ejemplo 1, que dicen

Aquí, E = 8, N = 9 y P = 1

Pero en realidad, es a la inversa: 9 bordes (= E) , 8 nodos (= N), por lo que se obtiene una CC de 3.

En el ejemplo 2, que tiene los valores de la derecha: E = 11, n = 10, P = 1. Pero los inserta en el orden incorrecto en la fórmula; en realidad debería ser 11 - 10 + (2x1) = 3.

Atajo: Si tiene una imagen de su gráfico, puede determinar muy fácilmente la complejidad ciclomática. Simplemente cuente el número de regiones en las que se divide el fondo por los bordes. En su primer ejemplo, tiene 2 regiones internas (bordeadas por los bordes) y una región circundante, dando un CC de 3. Lo mismo ocurre con el segundo ejemplo. (Este método requiere que los bordes no se cruzan entre sí, obviamente.)

+1

+1, no sabía ese método de división de fondo :) – Kos

+0

Ohh sí ... He notado valores erróneos por error ... Gracias por apuntar y ayudarme con las respuestas. También +1, para el método abreviado ... No lo sabía. :) –

+0

Otro +1 para ** acceso directo ** - funciona como un encanto. – joshuamabina

7

Además, si esto ayuda, que el número de condicional (Si, mientras que, por) los estados +1. Entonces en el ejemplo anterior, hay 2 declaraciones condicionales. entonces 2 + 1 = 3. La complejidad ciclomática en este caso es 3

+1

¿Tiene una referencia para esta heurística? – Apalala

+1

@Apalala Esto es válido para cualquier gráfico de flujo de control con solo * una entrada * y solo * un punto de salida *. Fue mostrado por Thomas J. MacCabe. Consulte [aquí] (https://dx.doi.org/10.1109%2Ftse.1976.233837) – Quirk

1

Solo cuente el número de regiones cerradas y agréguele 1.

En su ejemplo anterior, el número de región cerrada = 2, por lo que el CC = 2 + 1 = 3

1

P = el número de componentes conectados

EN OTRAS PALABRAS

P = la número de nodos que tienen puntos de salida

Source

Cuestiones relacionadas