Escolar Documentos
Profissional Documentos
Cultura Documentos
La Notación O Grande o Big O: Es un estándar para expresar los límites superiores. Es decir:
Propiedades
S1;
S2; La suma de los tiempos de cada una de las n
⋮ sentencias, es decir por propiedad la mayor de
Sn; ellas.
Para Condicionales:
Si (condicion)
Entonces La suma del tiempo del análisis de la
Sentencias_SI condición más el tiempo de las
Sino Sentencias_SI más el tiempo de las
Sentencias_SINO Sentencias_SINO si es que las hubiera.
Sentencias
Fin_Si
Para Bucles:
El numero de veces que se ejecuta las El número de veces que se ejecuta las
líneas (3-4) es , por el momento no lo líneas (3-4) es .
llevaremos a la notación O, pues aun falta Para determinar el numero de veces que se
introducir al análisis el comportamiento de ejecuta la línea (1-4) debemos darnos
i. cuenta que en una k-esima iteración
El numero de veces que se ejecuta la línea Podemos afirmar que
(1-4) esta dado , lo cual como y el bucle se ejecuta veces,
se observa es igual a la sumatoria de los = O(log n). Finalmente
naturales, por tanto la complejidad del bloque (1-4) es
Recursividad
Las funciones recursivas se definen en términos de si mismas.
Example:
¿Por qué elegir recursividad? De hecho si poseemos la solución iterativa, no deberíamos utilizar la
recursividad. La recursividad se utiliza sólo si:
Un ejemplo de cuando es mejor la solución iterativa que la solución recursiva es serie Fibonacci. A
continuación esta el análisis de la versión recursiva. Luego, como TAREA tú debes escribir una
versión iterativa del método y calcular su complejidad. ¿Consideras que la variación es significativa?
¿En este caso vale la pena preferir la elegancia de la recursión?
Funcion fib(n)
Si n = 0 o n = 1 Entonces
retornar 1
Sino
retornar fib(n-1) + fib(n-2)
T(0) = c
T(1) = c
T(2) = T(1)+ T(0) = c + c = 2c
T(3) = T(2)+T(1) = 2c+ c = 3c
T(4) = T(3)+T(2) = 3c+ 2c = 5c
T(5) = T(4)+T(3) = 5c+ 3c = 8c
Como se observa es bastante difícil encontrar una ley de formación, los valores no se encuentran en
sucesión aritmética, es más si se observa con cuidado o se genera una grafica de los valores
obtenidos se observa que la curva es de comportamiento exponencial, por lo tanto debe tener la
forma . Nosotros debemos hallar los valores más aproximados para k y c.
0 1 2 3 4 5 6 7 8
1 1 2 3 5 8 13 21 34
1 2 1.5 1.67 1.6 1.63 1.62 1.62
Torres de Hanoi.
Mover n discos del poste 1 al poste 3 (utilizando el poste 2 como auxiliar): Hanoi (n, 1, 2, 3);
A continuación el pseudocódigo:
Es decir
Calculamos la complejidad:
Entonces: .