logo

Часова складність циклу, коли змінна циклу «розширюється або звужується» експоненціально

Для таких випадків часова складність циклу становить O(log(log(n))). Наступні випадки аналізують різні аспекти проблеми. Випадок 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... 2kжурналk(журнал (n)). Останній член має бути меншим або дорівнювати n, і ми маємо 2kжурналk(журнал (n))= 2log(n)= n, що повністю узгоджується зі значенням нашого останнього члена. Отже, є загальний журналk(log(n)) багато ітерацій, і кожна ітерація займає постійний проміжок часу, тому загальна складність за часом становить O(log(log(n))). Випадок 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/к(п1/к)1/к= n1/к2п1/к3... п1/кжурналk(журнал (n))тому є загальний журналk(log(n)) ітерацій, і кожна ітерація займає час O(1), тому загальна часова складність становить O(log(log(n))). Зверніться до статті нижче для аналізу різних типів петель. https://www.geeksforgeeks.org/dsa/how-to-analyse-loops-for-complexity-analysis-of-algorithms/ Створіть вікторину