Algoritmos | Análisis de Algoritmos (Recurrencias) | Pregunta 8

¿Cuál es la complejidad temporal de la siguiente función recursiva:

int DoSomething (int n) 
{
  if (n <= 2)
    return 1;
  else  
    return (DoSomething (floor(sqrt(n))) + n);
}

(A) \ theta(n)
(B) \ theta(nlogn)
(C) \ theta(logn)
(D) \ theta(loglogn)
(A) A
(B) B
(C) C
(D) D

Respuesta: (D)
Explicación: Relación recursiva para el HacerAlgo() es

  T(n) =  T( \sqrt{n}) + C1 if n > 2  

Hemos ignorado la parte del piso() ya que aquí no importa si es un piso o un techo.

  Let n = 2^m,  T(n) = T(2^m)
  Let T(2^m) =  S(m)

  From the above two, T(n) = S(m)

  S(m) = S(m/2) + C1  /* This is simply binary search recursion*/
  S(m)  = O(logm)      
          = O(loglogn)  /* Since n = 2^m */
  
  Now, let us go back to the original recursive function T(n) 
  T(n)  = S(m) 
          = O(LogLogn)

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *