logo

Zeitkomplexität einer Schleife, wenn sich die Schleifenvariable exponentiell „erweitert oder verkleinert“.

In solchen Fällen beträgt die Zeitkomplexität der Schleife O(log(log(n))). In den folgenden Fällen werden verschiedene Aspekte des Problems analysiert. Fall 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... 2kProtokollk(log(n)). Der letzte Term muss kleiner oder gleich n sein und wir haben 2kProtokollk(log(n))= 2log(n)= n, was völlig mit dem Wert unseres letzten Termes übereinstimmt. Es gibt also insgesamt Protokollk(log(n)) viele Iterationen und jede Iteration benötigt eine konstante Zeit für die Ausführung, daher beträgt die Gesamtzeitkomplexität O(log(log(n))). Fall 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/kProtokollk(log(n))es gibt also insgesamt logk(log(n)) Iterationen und jede Iteration benötigt Zeit O(1), sodass die Gesamtzeitkomplexität O(log(log(n))) beträgt. Im folgenden Artikel finden Sie eine Analyse verschiedener Arten von Schleifen. https://www.geeksforgeeks.org/dsa/how-to-analyse-loops-for-complexity-analysis-of-algorithms/ Quiz erstellen