Contenido
PalancaComplejidad del tiempo
La complejidad temporal representa de forma asintótica el tiempo que algoritmo para encontrar una solución.
Operación elemental
La complejidad consiste en evaluar la efectividad del método M y comparar este último con otro método M '. Esta comparación es independiente del entorno (máquina, sistema, compilador, lenguaje, etc.). La eficiencia depende del número de operaciones elementales. Éstos dependen del tamaño de los datos y la naturaleza de los datos.
En el caso de una estructura de tipo secuencial, la evaluación es igual a la suma de los costos. Por ejemplo, si el algoritmo tiene procesamiento T1 (n) seguido de T2 (n), entonces T (n) = T1 (n) + T2 (n).
En el caso de una sucursal, la evaluación es igual al máximo de sucursales. Por ejemplo, el algoritmo ejecuta T1 (n) de lo contrario T2 (n), luego T (n) = max (T1 (n), T2 (n)).
En el caso de un bucle, la evaluación es igual a la suma de los costos de los pasajes sucesivos. Por ejemplo, si el algoritmo es a "mientras se hace Ti (n) con la complejidad de Ti (n) dependiendo del número i de la iteración. Entonces la complejidad es T (n) = suma (i = 1 an) Ti (n).
Notación Landau
La notación de Landau caracteriza el comportamiento asintótico de una función, es decir, el comportamiento de f (n) cuando n tiende a infinito.
Ejemplos de
Peor, mejor y promedio
Considere un algoritmo para encontrar un elemento en una matriz en forma iterativa. El algoritmo se detiene cuando se encuentra el valor. El algoritmo se descompone de la siguiente manera: asignación de 0 a i, siempre que i no haya atravesado la matriz, incrementamos i, si tab [i] = valor, devolvemos verdadero, de lo contrario, al final de la matriz devolvemos falso. Sea C la complejidad del cuerpo del bucle.
En el peor de los casos, el algoritmo recorre toda la tabla, es decir, T (n) = 1 + n * C = O (n). En el mejor de los casos, el elemento está al comienzo de la matriz, por lo que T (n) = 1 + C = O (1). Consideramos que, en promedio, hay una probabilidad de 50% de que el elemento no esté en la matriz y 50% de que esté en el medio de la matriz (esto, por supuesto, es absurdo, pero no haremos todas las posibilidades). En este caso, la complejidad en promedio es T (n) = 0.5 * (1 + n * C) + 0.5 * (1 + n * C / 2) = a * n + b con a y b constantes = O (no ). Observamos que el comportamiento asintótico en promedio es el mismo que en el peor de los casos.
Ejemplos de
Suponga que cada una de las siguientes expresiones da el tiempo de procesamiento T (n) empleado por un algoritmo para resolver un problema de tamaño n. Seleccione los términos dominantes con el mayor aumento en n y especifique la complejidad de Big-Oh más baja de cada algoritmo.
Expresión | Dominante | O (.) |
5 + 0,001n3+ 0.025n | 0.001n3 | Nosotros3) |
500n + 100n1.5 + 50n registro10 no | 100n1.5 | Nosotros1.5) |
0.3n + 5n1.5 + 2,5 n1.75 | 2,5 n1.75 | Nosotros1.75) |
no2 Iniciar sesión2 n + n (registro2 no)2 | no2 Iniciar sesión2 no | Nosotros2 log n) |
n registro3 n + n log2 no | n registro3 n, n log2 no | O (n log n) |
3 registro8 n + log2 Iniciar sesión2 Iniciar sesión2 no | 3 registro8 no | O (log n) |
0. 100n + 0.01n2 | 0.01n2 | Nosotros2) |
0.01n + 100n2 | 100n2 | Nosotros2) |
2n + n0.5 + 0.5n1.25 | 0.5n1.25 | Nosotros1.25) |
0.01n log2 n + n (registro2 no)2 | n (registro2 no)2 | O (n (log n)2) |
Registro de 100n3 n + n3 + 100n | no3 | Nosotros3) |
Las instrucciones siguientes muestran algunas características de la notación “Big-Oh” para las funciones f ≡ f (n) y g ≡ g (n). Determine si cada afirmación es VERDADERA o FALSA y corrija la fórmula en el último caso.
Función | ¿Verdadero o falso? | Después de corregir |
O (f + g) = O (f) + O (g) | FALSO | O (f + g) = max {O (f), O (g)} |
O (f g) = O (f) O (g) | CIERTO | |
si g = O (f) y h = O (f) entonces g = O (h) | FALSO | si g = O (f) yf = O (h) entonces g = O (h) |
5n + 8n 2 + 100n 3 = O (n 4) | CIERTO | |
5n + 8n 2 + 100n 3 = O (n 2 log n) | FALSO | Nosotros3 ) |