Tema 04
Tema 04
Análisis de algoritmos
Análisis de algoritmos
Algoritmo
Entrada k
Problema de
tamaño n
3
Ejemplo 1 (Búsqueda lineal)
Análisis de algoritmos
Análisis de algoritmos
0 6
1 12
10 66
100 606
500 3006
1000 6006
5
Operación básica
• Del ejemplo notamos que el número de veces que se
Análisis de algoritmos
Análisis de algoritmos
func BusquedaLineal(Valor,A,n)
49 12 56 90 2 5 11 32 22 7
{
i=1; n
while(i<=n&&A[i]!=Valor)
{
i=i+1;
}
7
return i;
}
Operación básica “Compración A[i]!=Valor”
Ejemplo 2 (Producto de 2 mayores)
• El algoritmo siguiente obtiene el producto de los dos valores
Análisis de algoritmos
func Producto2Mayores(A,n)
if(A[1] > A[2])
mayor1 = A[1];
mayor2 = A[2];
else
mayor1 = A[2];
mayor2 = A[1];
i = 3;
while(i<=n)
if(A[i] > mayor1)
mayor2 = mayor1;
mayor1 = A[i];
else if (A[i] > mayor2)
mayor2 = A[i];
i = i + 1;
8
return = mayor1 * mayor2;
• En este algoritmo se realizan las siguientes operaciones:
a) Comparación con los elementos del arreglo
Análisis de algoritmos
Análisis de algoritmos
Análisis de algoritmos
Análisis de algoritmos
Análisis de algoritmos
Análisis de algoritmos
• Tipos de análisis:
• Peor caso: indica el mayor tiempo obtenido, teniendo en
consideración todas las entradas posibles.
Análisis de algoritmos
Análisis de algoritmos
Análisis de algoritmos
while(i<=n&&A[i]!=Valor)
{ Caso a: 1 comparación (Valor = 49)
i=i+1;
Caso b: 2 comparaciones (Valor = 11)
}
Caso c: 3 comparaciones (Valor = 23) 17
return i;
…
}
Caso x: n+1 comparaciones. (Valor = 8)
Sea:
• I(n)={I1, I2, I3, …, Ik} el conjunto de instancias del problema de
Análisis de algoritmos
Análisis de algoritmos
19
Retomando el Ejemplo 1 (Búsqueda lineal)
• Algoritmo: Búsqueda lineal
Análisis de algoritmos
49 11 23 90 2 5 11 32 22 7 func BusquedaLineal(Valor,A,n)
{
i=1;
n while(i<=n&&A[i]!=Valor)
{
i=i+1; 20
}
return i;
}
• Análisis Temporal
• Mejor caso: ocurre cuando el valor es el primer elemento
Análisis de algoritmos
n
• Si se supone que todos los casos son igualmente probables:
Análisis de algoritmos
𝑓𝑡 𝑛
𝑛+1
1 1 (𝑛 + 1)(𝑛 + 2) (𝑛 + 1)(𝑛 + 2) 𝑛 + 2
= 𝑖= = =
𝑛+1 𝑛+1 2 2(𝑛 + 1) 2
𝑖=1
𝑛+2
Comparaciones si la probabilidad de todos los casos es la misma
2
22
Retomando el Ejemplo 2 (Productos Mayores)
• Algoritmo: Producto mayores.
Análisis de algoritmos
while(i<=n)
if(A[i] > mayor1)
mayor2 = mayor1;
mayor1 = A[i];
else if (A[i] > mayor2) 23
mayor2 = A[i];
i = i + 1;
Análisis de algoritmos
while(i<=n)
if(A[i] > mayor1) n-2 Comparaciones
mayor2 = mayor1; Asignacion
mayor1 = A[i]; Asignacion
else if (A[i] > mayor2) *Si A[i]≤mayor2
mayor2 = A[i]; Asignacion
i = i + 1;
Análisis de algoritmos
Comparaciones Asignaciones 99 71 23 20 18 15 11 5 3 1
1+(n-2)+(n-2) 2
n
ft(n)=1+(n-2)+(n-2)+2=3+2(n-2)=2n-1
func Producto2Mayores(A,n)
if(A[1] > A[2])
mayor1 = A[1]; ft(2)=2(2)-1=3
mayor2 = A[2];
else
mayor1 = A[2]; ft(3)=2(3)-1=5
mayor2 = A[1];
i = 3; ft(5)=2(5)-1=9
while(i<=n)
if(A[i] > mayor1) ft(10)=2(10)-1=19
mayor2 = mayor1;
mayor1 = A[i]; ft(20)=2(20)-1=39
else if (A[i] > mayor2)
mayor2 = A[i]; 25
i = i + 1;
Análisis de algoritmos
Comparaciones Asignaciones 9 11 23 30 38 45 61 70 80 90
1+(n-2) 2+2(n-2)
n
func Producto2Mayores(A,n)
if(A[1] > A[2])
mayor1 = A[1]; ft(2)=3(2)-3=3
mayor2 = A[2];
else
mayor1 = A[2]; ft(3)=3(3)-3=6
mayor2 = A[1];
i = 3; ft(5)=3(5)-3=12
while(i<=n)
if(A[i] > mayor1) ft(10)=3(10)-3=27
mayor2 = mayor1;
mayor1 = A[i]; ft(20)=3(20)-3=57
else if (A[i] > mayor2)
mayor2 = A[i];
i = i + 1; 26
return = mayor1 * mayor2;
𝑈
• Caso medio: en este problema se tienen 𝑛! casos, donde U es el
𝑛
conjunto del que se extraen los elementos del arreglo.
Análisis de algoritmos
Análisis de algoritmos
ft(2)=3
• Caso medio:
ft(3)=5.6
1 1
𝑓𝑡 𝑛 = 2 3𝑛 − 3 + (2n−1) = 8n − 7 ft(5)=11
3 3
𝟖𝒏 − 𝟕 ft(10)=24.3
𝒇𝒕 𝒏 = 𝒐𝒑𝒆𝒓𝒂𝒄𝒊𝒐𝒏𝒆𝒔 𝒃á𝒔𝒊𝒄𝒂𝒔 28
𝟑 ft(20)=51
• Es importante mencionar que no todos los algoritmos
presentan casos, y resulta interesante tener una
Análisis de algoritmos
29