Está en la página 1de 11

ANÁLISIS DE ALGORÍTMOS

PRESIMIG15146
Grupo: PREPRO20020050005 --- 005
Docente: Silvana L. Vallejo Córdoba
silvana.vallejo81@tdea.edu.co
NOTACIÓN ASINTÓTICA
Eficiencia de un algoritmo
*Notación asintótica
*T(n): funciones de tiempo de
ejecución (tasa de crecimiento)
*BIG-O
• Generalidades del planteamiento
(Ejemplos)
Eficiencia
• Medida del uso de los recursos computacionales
requeridos por la ejecución de un algoritmo en
función del tamaño de las entradas.
• T(n) Tiempo empleado para ejecutar el algoritmo
con una entrada de tamaño n

Tipos de análisis
¿Cómo medimos el tiempo de ejecución de un algoritmo?
¿Qué es un función asintótica?
Función g(x) tal que converge asintóticamente (se aproxima
pero no llega a igualarse) a una función dada f(x) (T(n)_ en
análisis de algoritmos) para todo x>x0.
Orden de eficiencia
NOTACIÓN O (Big –O):
• Decimos que una función T(n) es O(g(n)) si existen constantes n0 y c
tales que T(n) <= cg(n) para todo n > n0.
• Delimita el peor de los casos: tiempo máximo que puede llegar a tomar
una ejecución.
NOTACIÓN Ω (Big –Ω ):
• Decimos que una función T(n) es Ω(g(n)) si existen constantes n0 y c
tales que T(n) >= cg(n) para todo n > n0.
• Delimita el mejor de los casos: tiempo mínimo que puede llegar a
tomar una ejecución.
NOTACIÓN Ꝋ (Big –Ꝋ):
• Decimos que una función T(n) es Ꝋ(g(n)) si existen constantes n0, c1 y
c2 tales que c1 <=cg(n)<=T(n) <= c2g(n) para todo n > n0.
• Delimita el caso promedio
ORDENES DE EFICIENCIA (TASAS DE CRECIMIENTO) HABITUALES:
Funciones g(n) que trabajan como funciones aproximadas de T(n)
n log n n*log n n^2 n^3 2^n
2 1 2 4 8 4
10 3,322 33,219 100 1000 1024
20 4,322 86,439 400 8000 1048576
30 4,907 147,207 900 27000 1073741824
40 5,322 212,877 1600 64000 1,09951E+12
Crecimiento de tiempo de 50 5,644 282,193 2500 125000 1,1259E+15
60 5,907 354,413 3600 216000 1,15292E+18
ejecución en funciones 70 6,129 429,050 4900 343000 1,18059E+21
g(n) 80 6,322 505,754 6400 512000 1,20893E+24
90 6,492 584,267 8100 729000 1,23794E+27
100 6,644 664,386 10000 1000000 1,26765E+30
GENERALIDADES:
Operaciones aritméticas primitivas (1)
Asignaciones (1)
Comparaciones simples (1)
Ciclo simple: Tiempo de las
instrucciones dentro del ciclo*
numero de ciclos (n)
Ciclo anidado: Tiempo de las
expresiones*producto de los ciclos
(n^2 / n^3) T(n) = 5n+4
g(n) = n
Condicional: costo de la evaluación +
costo de la mayor alternativa BIG_O=5n
NO USAR PARA MEDIR EFICIENCIA DE UN
ALGORITMO
• La cantidad de líneas de un algoritmo
• Mediciones directamente de máquina (nos da una idea pero
cada máquina opera en tiempos diferentes)
• Usar entradas con pocos datos (tamaños de entradas
escaladas -50/100/500/1000)
• No usar un solo conjunto de datos (usar múltiples muestras
con diferentes patrones de datos)
Problema: máxima subsuma
Tenemos una serie numérica de enteros, hay que encontrar la máxima subsuma
posible entre números contiguos en posición de almacenamiento.
[4, -3, 5, -2, -1, 2, 7, -2] ->max subsuma =12

Siendo a[] el arreglo, cantidad la longitud de datos, SumaActual y MaximaSuma variables


enteras inicializadas en 0, comparar los 3 algoritmos:
EJERCICIOS:
1. Algoritmos de búsqueda simple de máximos y mínimos en arreglos
unidimensionales.
2. Algoritmo de búsqueda simple de máximos y mínimos en arreglos
bidimensionales.
3. Algoritmos de ordenamiento: (probar con arreglos de enteros aleatorios, con
orden ascendente, con orden descendente, mismo valor)
• Ordenamiento de burbuja
• Ordenamiento por inserción
• Función Sort
4. Algoritmos para informar datos duplicados y su cantidad dentro de un
arreglo.
5. Algoritmo que calcule el resultado de aplicar una mascara (convolución) 3x3 a
una matriz nxn con n>3 de números enteros en el rango de 0 a255.

También podría gustarte