logo

Tijdcomplexiteit van een lus wanneer de lusvariabele exponentieel “uitbreidt of krimpt”.

Voor dergelijke gevallen is de tijdscomplexiteit van de lus O(log(log(n))). In de volgende gevallen worden verschillende aspecten van het probleem geanalyseerd. Geval 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... 2kloggenk(log(n)). De laatste term moet kleiner dan of gelijk zijn aan n en we hebben 2kloggenk(log(n))= 2log(n)= n wat volledig overeenkomt met de waarde van onze laatste term. Er zijn dus in totaal logk(log(n)) vele iteraties en elke iteratie neemt een constante hoeveelheid tijd in beslag, daarom is de totale tijdscomplexiteit O(log(log(n))). Geval 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/kloggenk(log(n))dus er zijn in totaal logk(log(n)) iteraties en elke iteratie kost tijd O(1), dus de totale tijdscomplexiteit is O(log(log(n))). Zie onderstaand artikel voor analyse van verschillende soorten lussen. https://www.geeksforgeeks.org/dsa/how-to-analyse-loops-for-complexity-analysis-of-algorithms/ Quiz maken