Tengo que calcular la complejidad de un algoritmo y me encuentro con este bucle ,la cuestion es que se quee l bucle se ejecuta (n/4)+1,(el (n/4) es parte entera por defecto),la cuestion es como queda acotado el numero de iteraciones?(log4 n)+1??No se si hay que tomar logaritmos o que ..
void funcion(int n){ i=0; while(i<=n){ i=i+4; } }
amchacon
Revolinuxnario
18.521 mensajes desde nov 2008 en /kernel/fork.c:330
demnim escribió:El lazo se repite n/4 veces, luego es 1/4*n,
Al ser 1/4 constante la cota es O(n), es decir, el tiempo de ejecución aumenta linealmente con el tamaño del array.
a o(n) no lo va a superar, eso es evidente, pero hay cotas mas cercanas.me explico: para n=4, el bucle se recorre dos veces, no cuatro (n), para n = 8, 3 veces (menor o igual es la condición), de manera que efectivamente O((log4 n) +1) cumple como cota de forma mucho mas real que O(n).
demnim escribió:El lazo se repite n/4 veces, luego es 1/4*n,
Al ser 1/4 constante la cota es O(n), es decir, el tiempo de ejecución aumenta linealmente con el tamaño del array.
a o(n) no lo va a superar, eso es evidente, pero hay cotas mas cercanas.me explico: para n=4, el bucle se recorre dos veces, no cuatro (n), para n = 8, 3 veces (menor o igual es la condición), de manera que efectivamente O((log4 n) +1) cumple como cota de forma mucho mas real que O(n).
Además, ¿donde está el array?
Tienes razón es lo que tiene leerlo en diagonal, pensé en el típico problema con un array y por eso lo dije.
No obstante creo que la cota es O(n) con la notación Big-O dado que es la cota superior asintótica, en caso de que pidan la cota ajustada creo que sería (1/4 * n +1), el +1 es debido al <= que tiene el lazo while, aunque puedo estar equivocado
denin: creo que tienes los conceptos algo bajos, al principio a mi también me parecía todo O(n), pero tampoco aprovaba , hasta que comprendí que lo que pasaba es que no tenía los conceptos claros.En genbetaDev han puesto un reportaje bastante clarito respecto a la complejidad computacional. Zaius, para pasar de una cosa a la otra, ya no tiene nada que ver con algoritmia, sino con mates, mirate las propiedades de los logaritmos.