Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Lecturas Recomendadas
Crecimiento Lento
O(1)
O(log n)
O(n)
O(n log n)
O(n2)
O(cn) (c es una constante> 1)
Crecimiento Rápido
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 3
Recordando...
Crecimiento Lento
constante: O(1)
O(log n)
O(n)
O(n log n)
O(n2)
O(cn) (c es una constante> 1)
Crecimiento Rápido
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 4
Recordando...
Crecimiento Lento
constante: O(1)
logarítmica: O(log n)
O(n)
O(n log n)
O(n2)
O(cn) (c es una constante> 1)
Crecimiento Rápido
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 5
Recordando...
Crecimiento Lento
constante: O(1)
logarítmica: O(log n)
lineal: O(n)
O(n log n)
O(n2)
O(cn) (c es una constante> 1)
Crecimiento Rápido
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 6
Recordando...
Crecimiento Lento
constante: O(1)
logarítmica: O(log n)
lineal: O(n)
log-lineal: O(n log n)
O(n2)
O(cn) (c es una constante> 1)
Crecimiento Rápido
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 7
Recordando...
Crecimiento Lento
constante: O(1)
logarítmica: O(log n)
lineal: O(n)
log-lineal: O(n log n)
cuadrática: O(n2)
O(cn) (c es una constante> 1)
Crecimiento Rápido
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 8
Recordando...
Crecimiento Lento
constante: O(1)
logarítmica: O(log n)
lineal: O(n)
log-lineal: O(n log n)
cuadrática: O(n2)
exponencial: O(cn) (c es una constante> 1)
Crecimiento Rápido
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 9
Recordando...
Crecimiento Lento
constante: O(1)
logarítmica: O(log n)
lineal: O(n)
log-lineal: O(n log n)
cuadrática: O(n2)
exponencial: O(cn) (c es una constante> 1)
Crecimiento Rápido
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 10
Recordando...
Crecimiento Lento
constante: O(1)
logarítmica: O(log n)
lineal: O(n)
log-lineal: O(n log n)
cuadrática: O(n2)
exponencial: O(cn) (c es una constante> 1)
Crecimiento Rápido
polinomial: O(nc) (c es una constante > 0)
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 11
Recordando...
n0.1 log n
5n5 n!
n-152n/100 1000n15
82log n 3n7 + 7n
n0.1 log n
5n5 n!
n-152n/100 1000n15
82log n 3n7 + 7n
n0.1 log n
5n5 n!
n-152n/100 1000n15
82log n 3n7 + 7n
5n5 vs. n!
5n5 vs. n!
5n5 vs. n!
n0.1 log n
5n5 n!
n-152n/100 1000n15
82log n 3n7 + 7n
n0.1 log n
5n5 n!
n-152n/100 1000n15
82log n 3n7 + 7n
Read a
Read x, y, z
x = y + z
Print x
O(1) u O(c)
Read a
Read x, y, z
x = y + z
Print x
O(1) u O(c)
Read a
Read x, y, z O(3) u O(c)
x = y + z
Print x
O(1) u O(c)
Read a
Read x, y, z O(3) u O(c)
O(2) u O(c)
x = y + z
Print x
O(1) u O(c)
Read a
Read x, y, z O(3) u O(c)
O(2) u O(c)
x = y + z
Print x O(1) u O(c)
O(1) u O(c)
Read a
Read x, y, z O(3) u O(c)
O(2) u O(c)
x = y + z
Print x O(1) u O(c)
get n
set count to 0
while n is greater than 1
decrease n by 1
Increase count by 1
end
O(1)
get n
set count to 0
while n is greater than 1
decrease n by 1
Increase count by 1
end
O(1)
get n
set count to 0 O(1)
O(1)
get n
set count to 0 O(1)
O(1)
get n
set count to 0 O(1)
Increase count by 1
end
O(1)
get n
set count to 0 O(1)
O(1)
get n
set count to 0 O(1)
O(1)
get n
set count to 0 O(1)
SET X = 1
FOR I FROM 1 TO N:
PRINT X
SET X = X * 2
O(1)
SET X = 1
FOR I FROM 1 TO N: O(1)
PRINT X O(1)
SET X = X * 2 O(2)
O(1)
SET X = 1
FOR I FROM 1 TO N: O(1)
PRINT X O(1)
SET X = X * 2 O(2)
O(1)
SET X = 1
FOR I FROM 1 TO N: O(1)
PRINT X O(1) n
SET X = X * 2 O(2)
O(1)
SET X = 1
FOR I FROM 1 TO N: O(1)
PRINT X O(1) n
SET X = X * 2 O(2)
= O(1) + n*O(4)
= O(1) + O(4n)
= O(4n) = O(n)
if C then
S1
else
S2
if C then O(1)
S1 O(S1)
else O(S2)
S2
if C then O(1)
S1 O(S1)
else O(S2)
S2
if C then O(1)
S1 O(S1) O(max(S1, S2))
else O(S2)
S2
if C then O(1)
S1 O(S1) Ω(min(O(S1), O(S2))
else O(S2)
S2
if C then O(1)
S1 O(S1) O(max(S1, S2))
else O(S2)
S2
SET X = 1
O(1)
FOR I FROM 1 TO N: O(1)
PRINT X O(1) n
O(2)
SET X = X * 2
if C then O(1)
S1 O(S1) O(max(S1, S2))
else O(S2)
S2
SET X = 1
O(1)
FOR I FROM 1 TO N: O(1)
PRINT X O(1) n
O(2)
SET X = X * 2
O(max(s1,s2) + 1 + 4n)=
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 79
Bloque
if C then O(1)
S1 O(S1) O(max(S1, S2))
else O(S2)
S2
SET X = 1
O(1)
FOR I FROM 1 TO N: O(1)
PRINT X O(1) n
O(2)
SET X = X * 2
O(max(s1,s2) + 1 + 4n)=
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) O(max(max(s1,s2), 1, 4n)) 80
Empezamos el viaje...
for i = 1 to n do
for j = 1 to n do
sum = sum + 1
for i = 1 to n do
for j = 1 to n do
sum = sum + 1 O(2)
for i = 1 to n do
for j = 1 to n do O(1)
sum = sum + 1 O(2)
for i = 1 to n do
for j = 1 to n do O(1)
sum = sum + 1 O(2)
for i = 1 to n do
for j = 1 to n do O(1)
n
sum = sum + 1 O(2)
for i = 1 to n do O(1)
for j = 1 to n do O(1)
n
sum = sum + 1 O(2)
for i = 1 to n do O(1)
for j = 1 to n do O(1)
n
sum = sum + 1 O(2)
for i = 1 to n do O(1)
for j = 1 to n do O(1)
n
sum = sum + 1 O(2)
n
for i = 1 to n do O(1)
for j = 1 to n do O(1)
n
sum = sum + 1 O(2)
n
= ((O(3) * n) + O(1)) *n
for i = 1 to n do O(1)
for j = 1 to n do O(1)
n
sum = sum + 1 O(2)
n
= ((O(3) * n) + O(1)) *n
= (O(3n) +O(1))*n
for i = 1 to n do O(1)
for j = 1 to n do O(1)
n
sum = sum + 1 O(2)
n
= ((O(3) * n) + O(1)) *n
= (O(3n) +O(1))*n
= O(n) * n
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 93
Loops anidados
for i = 1 to n do O(1)
for j = 1 to n do O(1)
n
sum = sum + 1 O(2)
n
= ((O(3) * n) + O(1)) *n
= (O(3n) +O(1))*n
= O(n) * n
= O(n2)
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 94
Recordando series importantes:
• Suma de cuadrados:
• Suma de exponentes:
• Series geométricas:
for i = 1 to n do
for j = 1 to n do
sum = sum + 1
for i = 1 to n do
for j = 1 to n do
sum = sum + 1
for i = 1 to n do
for j = 1 to n do
sum = sum + 1
for i = 1 to n do
for j = i to n do
sum = sum + 1
for i = 1 to n do
for j = i to n do
sum = sum + 1
for i = 1 to n do
for j = i to n do
sum = sum + 1
• Suma de cuadrados:
• Suma de exponentes:
• Series geométricas:
• Series
aritméticas:
for i = 1 to n do
for j = i to n do
sum = sum + 1
for i = 1 to n do
for j = i to n do
sum = sum + 1
P = x
k = 1
While k < n
P = P * x
k = k + 1
Print P
P = x O(1)
k = 1
While k < n
P = P * x
k = k + 1
Print P
P = x O(1)
k = 1 O(1)
While k < n
P = P * x
k = k + 1
Print P
P = x O(1)
k = 1 O(1)
P = P * x
k = k + 1
Print P
P = x O(1)
k = 1 O(1)
P = P * x O(2)
k = k + 1
Print P
P = x O(1)
k = 1 O(1)
P = P * x O(2)
k = k + 1 O(2)
Print P
P = x O(1)
k = 1 O(1)
P = P * x O(2)
k = k + 1 O(2)
Print P
P = x O(1)
k = 1 O(1)
P = P * x O(2)
n-1
k = k + 1 O(2)
Print P
P = x O(1)
k = 1 O(1)
O(1) n
While k < n
P = P * x O(2)
n-1
k = k + 1 O(2)
Print P
P = x O(1)
k = 1 O(1)
O(1) n
While k < n
P = P * x O(2)
n-1
k = k + 1 O(2)
Print P O(1)
P = x O(1)
k = 1 O(1)
O(1) n
While k < n
P = P * x O(2)
n-1
k = k + 1 O(2)
Print P O(1)
Total = 2 + n + 4(n-1) +1 =
P = x O(1)
k = 1 O(1)
O(1) n
While k < n
P = P * x O(2)
n-1
k = k + 1 O(2)
Print P O(1)
P = x O(1)
k = 1 O(1)
O(1) n
While k < n
P = P * x O(2)
n-1
k = k + 1 O(2)
Print P O(1)
S = S + a k xk
k = k+ 1
Print S
S = S + a k xk
k = k+ 1
Print S
S = S + a k xk
k = k+ 1 O(2)
Print S
S = S + ak x k 2+1+...
k = k+ 1 O(2)
Print S
S = S + ak x k 2+1+5k-1
k = k+ 1 O(2)
Print S
S = S + ak x k 2+1+5k-1
k = k+ 1 O(2)
Print S
S = S + ak x k 2+1+5k-1
(n)
k = k+ 1 O(2)
Print S
S = S + ak x k 2+1+5k-1
(n)
k = k+ 1 O(2)
Print S O(1)
S = S + ak x k 2+1+5k-1
(n)
k = k+ 1 O(2)
Print S O(1)
=2 + (n+1) + n(2+5k+2) +1
S = S + ak x k 2+1+5k-1
(n)
k = k+ 1 O(2)
Print S O(1)
=2 + (n+1) + n(2+5k+2) +1
= 4 + n + 2n + 5kn + 2n
S = S + ak x k 2+1+5k-1
(n)
k = k+ 1 O(2)
Print S O(1)
=2 + (n+1) + n(2+5k+2) +1
= 4 + n + 2n + 5kn + 2n
= 5kn + 5n + 4
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 132
Evaluando un polinomio
S = S + ak x k 2+1+5k-1
(n)
k = k+ 1 O(2)
Print S O(1)
=2 + (n+1) + n(2+5k+2) +1
= 4 + n + 2n + 5kn + 2n k-> n
= 5kn + 5n + 4
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 133
Evaluando una función
= n* n *3 =
= n* n *3 = 3n2= O(n2)
=2 + (n-2) *(1+1) + 2
=2 + (n-2) *(1+1) + 2
= 4 + 2n -4
=2 + (n-2) *(1+1) + 1
= 4 + 2n -4 = 2n = O(n)
Algoritmo 1 Algoritmo 2
Algoritmo 1 Algoritmo 2
Algoritmo 1 Algoritmo 2
Algoritmo 1 Algoritmo 2
arr[2] = 0; (1)
...
arr[N-1] = 0; (1)
= N * 1= O(N)
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 159
Versus de dos funciones
Algoritmo 1 Algoritmo 2
arr[2] = 0; (1)
...
arr[N-1] = 0; (1)
= N * 1= O(N)
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 160
Versus de dos funciones
Algoritmo 1 Algoritmo 2
arr[2] = 0; (1)
...
arr[N-1] = 0; (1)
= N * 1= O(N)
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 161
Versus de dos funciones
Algoritmo 1 Algoritmo 2
arr[2] = 0; (1)
...
= N(2+1) = 3N = O(N)
arr[N-1] = 0; (1)
= N * 1= O(N)
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 162
Versus de dos funciones
Algoritmo 1 Algoritmo 2
arr[2] = 0; (1)
...
= N(2+1) = 3N = O(N)
arr[N-1] = 0; (1)
= N * 1= O(N)
Análisis y Diseño de Algoritmos, Aurea Soriano Vargas (2020) 163
Un algoritmo
● Datos de entrada
● Datos resultantes
● Datos de entrada
● Datos resultantes
Swap1(x,y):
aux := x
x := y
y := aux
Precondición:
x = a y y = b
Postcondición:
x = b y y = a
Precondición:
x = a y y = b
Postcondición:
x = b y y = a
Precondición:
x = a y y = b
Postcondición:
x = b y y = a
174