Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 1:
Análisis de Algoritmo
Estructura de Datos
INCORRECTO.
1
26/08/2018
2
26/08/2018
T = ƒ(N)
ƒ(N) = 4N2 + 5N +3
ƒ(N) = O(N2)
3
26/08/2018
ƒ (n) = 4n2 + 5n + 3
4
26/08/2018
MODELO
Para AA se define un modelo. Nuestro modelo radica en
una computadora normal en la cual se ejecutan
instrucciones en modo secuencial.
El modelo tiene un repertorio de instrucciones sencillas
(+,-,*,-,mod, comparaciones, asignación, lectura y
escritura) y tarda exactamente una unidad de tiempo en
hacer cualquiera de ellas.
También suponemos memoria infinita.
5
26/08/2018
¿Que analizar?
El recurso más importante a analizar es el tiempo vs.
factores que afectan al tiempo de ejecución:
• Compiladores
• La computadora
• El algoritmo
• La entrada
Ejemplo
Factorial(n): entero
1. f ←1
2. mientras n>=1 hacer
3. f←f*n
4. n ←n-1
5. factorial ← f
6
26/08/2018
T para factorial
REGLAS GENERALES
R1: Bucles
El tiempo de ejecución es a lo sumo el tiempo de ejecución de las
instrucciones que están en el interior del ciclo por el número de las
iteraciones.
7
26/08/2018
1. for i:= 1 to n do
2. for j:= 1 to n do
3. s:= s+ A[i,j] {2 unidades de tiempo}
ƒ (n) = O(n2)
f(n) = n + n2 = O(n2)
for (i=1; i<n; i++)
for (j=1; j<n; j++) n2
s= s+a[i] + i * j;
8
26/08/2018
R4: if/else
El tiempo de ejecución de un proposición if/else nunca es mas
grande que el tiempo de ejecución de la condición if, más el
mayor de los tiempos de ejecución de las ramas verdadero-falso.
ƒ (n) =O(n)
9
26/08/2018
función nombre
C Constante
N Lineal
N2 Cuadrática
N3 Cúbica
Log n Logarítmica
Log2n Logarítmica cuadrática
N log n
2n exponencial
10
26/08/2018
Función ejemplo
Un tiempo constante es referido como Operaciones simples
O(1), significa que el tiempo requerido (asignación, comparación,
por la operación no cambia. etc.)
N Log N N log N N2 N3 2N
1 0 1 1 1 2
2 1 2 4 8 4
4 2 8 16 64 16
8 3 24 64 512 256
16 4 64 256 4096 65536
32 5 160 1024 32768 2147483648
64 6 384 4096 262144 -
128 7 896 16384 2097152 -
256 8 2048 65536 16777216 -
11
26/08/2018
Ordenamiento Burbuja
I
1Comparaciones
J = {0, 1, 2, 3} n-1 4
2 J = {0, 1, 2} n-2 3
3 J = {0, 1} n-3 2
4 J = {0} n-4 1
10
12
26/08/2018
Búsqueda Secuencial
1. i= 1;
2. enc = false;
3. while ( i <= n || !enc)
4. if (a[i]= = valor)
enc = true;
else i++;
Cual es la operación mas fuerte?
AA:
Si el array es de 10 elementos, requiere a lo
sumo 10 comparaciones. La operación más
pesada es la comparación, esta dentro del
bucle. Se ejecuta a lo sumo n veces (aunque
el array este ordenado)
13
26/08/2018
Búsqueda Binaria
Enc = false
primero= 1
ultimo = n
while (primero <= ultimo && ! enc)
{
ptomedio = (primero+ultimo) / 2
if ( lista[ptomedio] == valor)
enc = true;
else
if (lista[ptomedio] > valor)
ultimo = ptomedio –1;
else primero = ptomedio + 1;
}
if (enc) return true;
else return false;
Análisis de Algoritmo Estructura de Datos 27
Valor = 38
AA N = 11
primero = 1
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] ultimo = 11
3 5 8 12 17 21 26 33 38 40 49 ptomedio = 5
enc=false
14
26/08/2018
[9] primero = 9
38 ultimo = 9
ptomedio = 9
N = 11
Secuencial: 9 comparaciones
Binaria: 4 comparaciones
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]
Valor = 57
3 5 8 12 17 21 26 33 38 40 49
[11]
49
15
26/08/2018
N = 11
Secuencial: 11 comparaciones (peor caso)
Binaria: 4 comparaciones (peor caso)
ƒ (n) = O(log n)
16
26/08/2018
AA
Si Y = 4 Y = 0 : falso (1)
llama Y = 3 Y = 0 : falso (2)
llama Y = 2 Y = 0 : falso (3)
llama Y = 1 Y = 0 : falso (4)
llama Y = 0 Y = 0 : falso (5)
17
26/08/2018
Consultas…
Próximas clases
• Clases prácticas:
– Miércoles 22/08/18
– Viernes 24/08/18
• Clase de teoría:
– Tema: Ordenamiento
– Miércoles 29/08/18
18