Facultad de Ciencias Exactas, Ingenierı́a y Agrimensura Escuela de Ciencias Exactas y Naturales Matemática Discreta Práctica de Laboratorio 1 Introducción al Análisis de Algoritmos 1. Demostrar el siguiente teorema, Teorema 1 f ∈ Θ(g) si y solo si existen constantes c1 , c2 ∈ ℜ+ , n0 ∈ N tales que ∀n ≥ n0 , 0 ≤ c1 g(n) ≤ f (n) ≤ c2 g(n) 2. Determine si las siguientes proposiciones son verdaderas o falsas. Justifique. a) n2 + 106 n ∈ O(n2 ) b) n lg n ∈ O(n) c) n lg n ∈ Ω(n) d) 10−5 n2 ∈ O(n lg n) e) 2n2 + 3n lg n + 10 ∈ Θ(n2 ) f ) Si a > 1 y f (n) = O(lga n), entonces f (n) = O(lg n) n n X X O(n) = O(n2 ) kn = g) k=1 k=1 h) Θ(1) = Θ(2) 3. Sean las funciones f y g definidas como: f (n) = n y g(n) = n2 1 si n es par si n es impar ¿f ∈ O(g)? ¿g ∈ O(f )? 4. Considere las siguientes clases de funciones Θ(1), Θ(lg n), Θ(n), Θ(n lg n), Θ(n2 ), Θ(n3 ), Θ(2n ), Θ(n!) ¿A qué clase pertenece cada una de las siguientes funciones? a) 6n3 + 12n2 + 1 b) 2 lg n + 4n + 3n lg n c) 2 + 4 + 6 + · · · + 2n 2 n)(n+1) d) (n +lg n+n2 e) 2 + 4 + 8 + · · · + 2n 5. Sea f (n) la cantidad de veces que se ejecuta la operación x++. Teniendo en cuenta las clases de funciones del ejercicio anterior, determine una notación Θ para f en cada uno de los siguientes algoritmos. Justifique su respuesta. a) for(i = 1; i ≤ n; i++) for(j = 1; j ≤ ⌊i/2⌋; j++) x++; Práctica de Laboratorio 1 Introducción al Análisis de Algoritmos Página 1 Matemtica Discreta b) for(i = 1; i ≤ n; i++) for(j = 1; j ≤ i; j++) for(k = 1; k ≤ j; k++) x++; c) i = n; while(i ≥ 1) { for(j = 1; j ≤ n; j++) x++; i = ⌊i/2⌋; } d) i = 2; while(i < i = i ∗ i; x++; n) { } 6. Sean f, g, h : N → R+ . Demostrar las siguientes propiedades de las notaciones asintóticas: a) f (n) = O(g(n)) ∧ g(n) = O(h(n)) ⇒ f (n) = O(h(n)) b) f (n) = Ω(g(n)) ∧ g(n) = Ω(h(n)) ⇒ f (n) = Ω(h(n)) c) f (n) = Θ(f (n)) d) f (n) = O(g(n)) ⇔ g(n) = Ω(f (n)) e) Si g(n) = O(f (n)), entonces f (n) + g(n) = O(f (n)) 7. Sea d X ai n i i=0 un polinomio de grado d asintóticamente positivo (ad positivo). Demostrar que p(n) = Θ(nd ). 8. Probar que lg(n!) = Θ(n lg n) n X k 2 = Θ(n3 ) k=1 n X 1 = O(1) k2 k=1 1+ 1 2 + ···+ 1 n = Θ(lg n) Práctica de Laboratorio 1 Introducción al Análisis de Algoritmos Página 2