logo

Complexitat temporal d'un bucle quan la variable de bucle "s'expandeix o es redueix" exponencialment

En aquests casos, la complexitat temporal del bucle és O(log(log(n))). Els casos següents analitzen diferents aspectes del problema. Cas 1: CPP
for (int i = 2; i <=n; i = pow(i k))  {   // some O(1) expressions or statements } 
In this case i takes values 2 2k(2k)k= 2k2(2k2)k= 2k3... 2kregistrek(log(n)). L'últim terme ha de ser menor o igual que n i tenim 2kregistrek(log(n))= 2registre (n)= n que coincideix completament amb el valor del nostre darrer terme. Així que n'hi ha en el registre totalk(log(n)) moltes iteracions i cada iteració triga una quantitat de temps constant a executar-se, per tant, la complexitat total del temps és O(log(log(n))). Cas 2: CPP
// func() is any constant root function for (int i = n; i > 1; i = func(i))  {   // some O(1) expressions or statements } 
In this case i takes values n n1/k(n1/k)1/k= n1/k2n1/k3... n1/kregistrek(log(n))així que n'hi ha en el registre totalk(log(n)) iteracions i cada iteració triga temps O(1) de manera que la complexitat total del temps és O(log(log(n))). Consulteu l'article següent per a l'anàlisi de diferents tipus de bucles. https://www.geeksforgeeks.org/dsa/how-to-analyse-loops-for-complexity-analysis-of-algorithms/ Crea un qüestionari