conceptos fundamentales del análisis de algoritmos iiertello/algorithms/sesion03.pdf · conceptos...

22
Conceptos Fundamentales del Análisis de Algoritmos II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 17 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 1 / 20

Upload: others

Post on 11-Oct-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos Fundamentales del Análisis deAlgoritmos II

Dr. Eduardo A. RODRÍGUEZ TELLO

CINVESTAV-Tamaulipas

17 de enero de 2018

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 1 / 20

Page 2: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

1 Conceptos fundamentales del análisis de algoritmos IIOrden de crecimiento asintóticoComparación de ordenes de crecimiento con límitesOrdenes de crecimiento de funciones importantesClases básicas de eficiencia asintóticaTarea 3

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 2 / 20

Page 3: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

1 Conceptos fundamentales del análisis de algoritmos IIOrden de crecimiento asintóticoComparación de ordenes de crecimiento con límitesOrdenes de crecimiento de funciones importantesClases básicas de eficiencia asintóticaTarea 3

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 3 / 20

Page 4: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

Orden de crecimiento asintótico

Una forma de comparar funciones que ignora factores constantesy tamaños de entradas pequeños

O(g(n)): clase de funciones f(n) que crecen no más rápido queg(n)n ∈ O(n2), 100n+ 5 ∈ O(n2), 1

2n(n− 1) ∈ O(n2).

Θ(g(n)): clase de funciones f(n) que crecen a la misma tasa queg(n)an2 + bn+ c ∈ Θ(n2), n2 + sinn ∈ Θ(n2), n2 log n ∈ Θ(n2).

Ω(g(n)): clase de funciones f(n) que crecen al menos tan rápidocomo g(n)n3 ∈ Ω(n2), 1

2n(n− 1) ∈ Ω(n2), 100n+ 5 /∈ Ω(n2).

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 4 / 20

Page 5: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

Orden de crecimiento asintótico, Gran-O

t(n) ≤ cg(n), para toda n ≥ n0Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 5 / 20

Page 6: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

Orden de crecimiento asintótico, Gran-Omega

t(n) ≥ cg(n), para toda n ≥ n0Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 6 / 20

Page 7: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

Orden de crecimiento asintótico, Gran-Theta

c2g(n) ≤ t(n) ≤ c1g(n), para toda n ≥ n0Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 7 / 20

Page 8: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

Orden de crecimiento asintótico, ejercicio 1

Utilice la notación más apropiada entre O,Θ y Ω para indicar laclase de eficiencia temporal del algoritmo de búsqueda secuencial

Respuestas:

Cworst(n) = n, Cworst(n) ∈ Θ(n)

Cbest(n) = 1, Cbest(n) ∈ Θ(1)

Cavg(n) =p(n+1)

2 + n(1− p) = (1− p2 )n + p

2 , Cavg(n) ∈ Θ(n)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 8 / 20

Page 9: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

Orden de crecimiento asintótico, ejercicio 1

Utilice la notación más apropiada entre O,Θ y Ω para indicar laclase de eficiencia temporal del algoritmo de búsqueda secuencial

Respuestas:

Cworst(n) = n, Cworst(n) ∈ Θ(n)

Cbest(n) = 1, Cbest(n) ∈ Θ(1)

Cavg(n) =p(n+1)

2 + n(1− p) = (1− p2 )n + p

2 , Cavg(n) ∈ Θ(n)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 8 / 20

Page 10: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

Orden de crecimiento asintótico, ejercicio 2

De las siguientes afirmaciones cuáles son verdaderas y cuáles sonfalsas:

1 n(n+ 1)/2 ∈ O(n3)

V

2 n(n+ 1)/2 ∈ O(n2)

V

3 n(n+ 1)/2 ∈ Θ(n3)

F

4 n(n+ 1)/2 ∈ Ω(n3)

F

5 n(n+ 1)/2 ∈ Ω(n)

V

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 9 / 20

Page 11: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

Orden de crecimiento asintótico, ejercicio 2

De las siguientes afirmaciones cuáles son verdaderas y cuáles sonfalsas:

1 n(n+ 1)/2 ∈ O(n3) V

2 n(n+ 1)/2 ∈ O(n2) V

3 n(n+ 1)/2 ∈ Θ(n3) F

4 n(n+ 1)/2 ∈ Ω(n3) F

5 n(n+ 1)/2 ∈ Ω(n) V

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 9 / 20

Page 12: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Orden de crecimiento asintótico

Orden de crecimiento asintótico, propiedades

f(n) ∈ O(f(n))

f(n) ∈ O(g(n)) si y sólo si g(n) ∈ Ω(f(n))

Si f(n) ∈ O(g(n)) y g(n) ∈ O(h(n)), entonces f(n) ∈ O(h(n))

Si f1(n) ∈ O(g1(n)) y f2(n) ∈ O(g2(n)), entoncesf1(n) + f2(n) ∈ O(maxg1(n), g2(n))

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 10 / 20

Page 13: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Comparación de ordenes de crecimiento con límites

1 Conceptos fundamentales del análisis de algoritmos IIOrden de crecimiento asintóticoComparación de ordenes de crecimiento con límitesOrdenes de crecimiento de funciones importantesClases básicas de eficiencia asintóticaTarea 3

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 11 / 20

Page 14: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Comparación de ordenes de crecimiento con límites

Comparación de ordenes de crecimiento con límites

lımn→∞

T (n)

g(n)=

0 orden de crecimiento de T (n)< orden de crecimiento de g(n)

c > 0 orden de crecimiento de T (n) = orden de crecimiento de g(n)

∞ orden de crecimiento de T (n)> orden de crecimiento de g(n)

Ejemplo:

Comparar 12n(n− 1) y n2

lımn→∞

12n(n− 1)

n2=

1

2lım

n→∞

n2 − nn2

=1

2lım

n→∞

(1− 1

n

)=

1

2

Como el límite es igual a una constante positiva, entonces las funciones tienenigual orden de crecimiento, i.e., 1

2n(n− 1) ∈ Θ(n2)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 12 / 20

Page 15: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Comparación de ordenes de crecimiento con límites

Comparación de ordenes de crecimiento con límites

Regla de l’Hôpital

Si lımn→∞

f(n) = lımn→∞

g(n) =∞ y las derivadas f ′, g′ existen, entonces:

lımn→∞

f(n)

g(n)= lım

n→∞

f ′(n)

g′(n)

Ejemplo:Comparar log2 n y

√n

lımn→∞

log2 n√n

= lımn→∞

(log2 n)′

(√n)′

= lımn→∞

(log2 e)1n

12√n

= 2 log2 e lımn→∞

1√n

= 0

Como el límite es igual a cero, entonces la función log2 n tienen unorden de crecimiento más pequeño que el de

√n, i.e., log2 n ∈ o(

√n)

o(g(n)): clase de funciones f(n) que crecen estrictamente menos rápido que g(n)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 13 / 20

Page 16: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Comparación de ordenes de crecimiento con límites

Comparación de ordenes de crecimiento con límites

Fórmula de StirlingPara valores grandes de n:

n! ≈√

2πn(ne

)nEjemplo:

Comparar n! y 2n

lımn→∞

n!

2n= lım

n→∞

√2πn

(ne

)n2n

= lımn→∞

√2πn

nn

2nen= lım

n→∞

√2πn

( n2e

)n=∞

Por lo tanto, aunque 2n crece muy rápido, n! crece incluso más rápido, i.e.,n! ∈ Ω(2n)

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 14 / 20

Page 17: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones importantes

1 Conceptos fundamentales del análisis de algoritmos IIOrden de crecimiento asintóticoComparación de ordenes de crecimiento con límitesOrdenes de crecimiento de funciones importantesClases básicas de eficiencia asintóticaTarea 3

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 15 / 20

Page 18: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones importantes

Ordenes de crecimiento de funciones importantes

Todas las funciones logarítmicas loga n pertenecen a la mismaclase Θ(log n) sin importar la base del logaritmo a > 1

Todos los polinomios del mismo grado k pertenecen a la mismaclase aknk + ak−1n

k−1 + · · ·+ a0 ∈ Θ(nk)

Las funciones exponenciales an tienen diferentes ordenes decrecimiento para diferentes valores de a

orden log n < orden nα(α > 0) < orden an < orden n! < orden nn

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 16 / 20

Page 19: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Clases básicas de eficiencia asintótica

1 Conceptos fundamentales del análisis de algoritmos IIOrden de crecimiento asintóticoComparación de ordenes de crecimiento con límitesOrdenes de crecimiento de funciones importantesClases básicas de eficiencia asintóticaTarea 3

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 17 / 20

Page 20: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Clases básicas de eficiencia asintótica

Clases básicas de eficiencia asintótica

Clase Nombre

1 constante

log n logarítmico

n lineal

n log n n-log-n o linearítmico

n2 cuadrático

n3 cúbico

2n exponencial

n! factorial

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 18 / 20

Page 21: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Tarea 3

1 Conceptos fundamentales del análisis de algoritmos IIOrden de crecimiento asintóticoComparación de ordenes de crecimiento con límitesOrdenes de crecimiento de funciones importantesClases básicas de eficiencia asintóticaTarea 3

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 19 / 20

Page 22: Conceptos Fundamentales del Análisis de Algoritmos IIertello/algorithms/sesion03.pdf · Conceptos fundamentales del análisis de algoritmos II Ordenes de crecimiento de funciones

Conceptos fundamentales del análisis de algoritmos II Tarea 3

Tarea 3

Pruebe, usando límites, que las siguientes funciones estánlistadas ascendentemente con respecto a sus ordenes decrecimiento correspondientes:

log n, n, n log n, n2, n3, 2n, n!

Fecha de entrega: 24 de enero antes de las 8 AM

Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Conceptos Fundamentales del Análisis II 17 de enero de 2018 20 / 20