Tarea 2 de Análisis y Diseño de Algoritmos

Trimestre 2018 Primavera

Entrega: 25 de mayo de 2018 en clase.

  1. Demuestra que f(n) = 9999n+635 está en O(2n).
  2. Demuestra que f(n) = 2n está en O(n!).
  3. Resuelve exactamente la recurrencia T(1) = 4 y, para toda n ≥ 2 que sea una potencia de 2, T(n) = 2T(n/2) + 3n + 2.
  4. Resuelve exactamente la recurrencia T(1) = 2 y, para toda n ≥ 3 que sea una potencia de 3, T(n) = 4T(n/3) + 3n - 5.
  5. Demuestra que el siguiente algoritmo iterativo de exponenciación es correcto, es decir, debe regresar yz:
    power(y,z)
      x := 1
      while (z > 0) do
        if (z es impar) then x := x*y
        z := z/2
        y := y2
      return (x)
  6. Demuestra que el siguiente algoritmo recursivo de exponenciación es correcto, es decir, debe regresar yz:
    power(y,z)
      if (z = 0) return (1)
      if (z es impar) then return (power(y2,z/2)*y)
      else return (power(y2,z/2))
  7. Analiza el algoritmo iterativo de exponenciación de la pregunta 5. ¿Cuántas veces se hace la multiplicación x := x*y en el peor de los casos?
  8. Analiza el algoritmo recursivo de exponenciación de la pregunta 6. ¿Cuántas veces se hace la multiplicación power(y2,z/2)*y en el peor de los casos?
Nota 1: En las preguntas 5 y 6, la división z/2 es la división entera.