Complejidad de tiempo de un bucle cuando la variable de bucle «se expande o se contrae» exponencialmente

Para tales casos, la complejidad temporal del ciclo es O(log(log(n))). Los siguientes casos analizan diferentes aspectos del problema.

Caso 1 :

for (int i = 2; i <=n; i = pow(i, k)) 
{ 
    // some O(1) expressions or statements
}

En este caso, i toma los valores 2, 2 k , (2 k ) k = 2 k 2 , (2 k 2 ) k = 2 k 3 , …, 2 k log k (log(n)) . El último término debe ser menor o igual que n, y tenemos 2 k log k (log(n)) = 2 log(n) = n, lo que concuerda completamente con el valor de nuestro último término. Así que hay en total log k (log(n)) muchas iteraciones, y cada iteración requiere una cantidad de tiempo constante para ejecutarse, por lo tanto, la complejidad total del tiempo es O(log(log(n))).

Caso 2:

// func() is any constant root function
for (int i = n; i > 1; i = func(i)) 
{ 
   // some O(1) expressions or statements
}

En este caso, i toma los valores n, n 1/k , (n 1/k ) 1/k = n 1/k 2 , n 1/k 3 , …, n 1/k log k (log(n)) , por lo que hay en total log k (log(n)) iteraciones y cada iteración lleva un tiempo O(1), por lo que la complejidad del tiempo total es O(log(log(n))).

Consulte el artículo a continuación para el análisis de diferentes tipos de bucles.
https://www.geeksforgeeks.org/analysis-of-algorithms-set-4-analysis-of-loops/

Este artículo es una contribución de Rishav Raj . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

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 *