Pregunta

T (1) = c    
T (n) = T (n/2) + dn

¿Cómo puedo determinar BigO de esto rápidamente?

¿Fue útil?

Solución

El uso repetido backsubstitution y encontrar el patrón. Un ejemplo aquí .

Otros consejos

No estoy del todo seguro de lo que es dn, pero suponiendo que se refiere a una constante multiplicada por n:

Según Wolfram Alpha , la solución de la ecuación de recurrencia para:

f(n) = f(n / 2) + cn

es:

f(n) = 2c(n - 1) + c1

lo que haría que este O(n).

Bueno, la parte recurrencia de la relación es de (n / 2) parte de la T, que es, en efecto, reducir a la mitad el valor de n cada vez.

Por lo tanto, necesitará aprox. (Log2 n) pasos para llegar a la condición de terminación, por lo tanto el coste global del algoritmo es O (log2 n). Puede ignorar la parte dn como se trata de una operación de tiempo constante para cada paso.

Tenga en cuenta que como se ha dicho, el problema no necesariamente terminará desde reducir a la mitad un valor arbitrario de n en repetidas ocasiones es poco probable que golpeó exactamente 1. sospecho que el T (n / 2) parte en realidad debería leer T (piso (n / 2)) o algo por el estilo con el fin de asegurar que este termina.

teorema uso de maestría ver http://en.wikipedia.org/wiki/Master_theorem

Por cierto, el comportamiento asintótico de su recurrencia es O (n), suponiendo d es positiva y suficientemente menor que n (tamaño de problema)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top