Найти временную сложность, в худшем случае, в функции n = 2N, N> = 0.Рекурсивный алгоритм решает рекуррентное соотношение и дает временную сложность в худшем случае, это правильно?
Найдите рекуррентное отношение и решите его.
public static void xpto(v, n){
if (n <= 1)
return;
n=n/2;
for(i=0;i<n;i=i+1)
v[i] = v[2i] + v[2i +1];
xpto(v, n);
}
T(1) = 1
уравнение рецидива по substituiton:
T(n) = 1 + 1 + (n + 1) + n + T(n/2)
T(n) = 3 + 2n + T(n/2)
T(n/2) = 3(2) + 2n(2) + T(n/4)
T(n/4) = 3(3) + 2n(3) + T(n/8)
T(n/8) = 3(4) + 2n(4) + T(n/16)
узор найдено
T(n/8) = 3(4) + 2n(4) + T(n/2^4)
общий рецидив в терминах K:
T(n) = 3(k) + 2n(k) + T(n/2^k)
if T(1) = 1 and T(n/2^k) we need to change 2^k by n, this means:
2^k = n
T(n) = 3(log n) + 2n(log n) + 1
Рекуррентное соотношение решена.
Временная сложность, в худшем случае O (журнал (п))
Вопросы:
- я делаю это право?
- Какая функция n = 2N, N> = 0 означает?
'for (i = 0; i
amit
Мне нужен формальный ответ на этот вопрос, с теоремами и причинами, почему так. – MauroAlmeida