Estoy analizando un algoritmo y solo quiero saber si estoy en el camino correcto.Analizando algoritmos para la complejidad del tiempo
Para este algoritmo, solo estoy contando las multiplicaciones en la línea que tienen *** en ellas.
Aquí está el algoritmo:
- Así que estoy empezando desde la línea interior más, puedo ver que hay 2 operaciones allí (las dos multiplicaciones).
- Ahora estoy mirando los 2 bucles más internos, por lo que puedo decir que el
p=p*20*z
se ejecuta exactamente(j) + (j-1)+(j-2)+(j-3)...1
veces. Esto pasa a ser igual aj(j+1)/2
. - Entonces en total, ya que hay dos multiplicaciones, sucede
2 * (j(j+1)/2)
. - Entonces, finalmente, el bucle "i" ocurre exactamente n veces, por lo que, en total, es
n(2 * (n(n+1)/2))
.
Ese es mi proceso de pensamiento detrás de esto. ¿Estoy en lo correcto? Gracias.
No, no lo es. El resultado final solo debe contener 'n'. Tienes 'j' allí. –
gracias por la respuesta rápida. ¿Sería n (2 * (n (n + 1)/2))? – 0xSina
En realidad, creo que es solo un error tipográfico ya que reemplazar j por n es correcto para la derivación que realizó allí, porque n es la j más grande. @PragmaOnce sí, aunque obviamente eso se puede simplificar bastante. –