Я понимаю, что он похож на последовательность Фибоначчи, которая имеет экспоненциальное время работы. Однако это рецидивное отношение имеет больше ветвей. Каковы асимптотические границы T(n) = 2T(n-1) + 3T(n-2)+ 1
?Каково время запуска: T (n) = 2T (n-1) + 3T (n-2) + 1
ответ
Обычно вам нужно сделать некоторые предположения относительно T (0) и T (1), так как их экспоненциально будет много, а их значения могут определять функциональную форму T (n). Однако в этом случае это не имеет значения.
Тогда рекуррентные соотношения этой формы могут быть решены путем нахождения их характеристических многочленов. Я нашел эту статью: http://www.wikihow.com/Solve-Recurrence-Relations
Я получил характеристический многочлен с корнями 3 и 1, так что угадывает форму T(n) = c_1*3^n + c_2
. В частности, T(n) = 1/2*3^n - 1/4
удовлетворяет рекуррентному соотношению, и мы можем это проверить.
1/2*3^n - 1/4 = 2*T(n-1) + 3*T(n-2) + 1
= 2*(1/2*3^(n-1) - 1/4) + 3*(1/2*3^(n-2) - 1/4) + 1
= 3^(n-1) - 1/2 + 1/2*3^(n-1) - 3/4 + 1
= 3/2*3^(n-1) - 1/4
= 1/2*3^n - 1/4
Следовательно, это даст T(n) = Theta(3^n)
. Однако это может быть не единственная функция, которая удовлетворяет повторению, а другие возможности также будут зависеть от того, что вы определили значения T(0)
и T(1)
, но все они должны быть O(3^n)
.
Это фактически не отвечает на вопрос. – 2013-02-20 23:49:31
Почему он не решает вопрос? Я даю вам функцию, которая удовлетворяет рекуррентному отношению и доказана как таковая. –
Потому что вопрос НЕОБХОДИМО сделать с аналитическим решением. – 2013-02-21 03:24:58
Этот тип рецидивов называется: non-homogeneous recurrence relations, и вам необходимо решить вначале однородное повторение (одно без константы в конце). Если вам интересно, прочитайте математику за ней.
Я покажу вам простой способ. Просто введите уравнение в wolfram-alpha и вы получите:
, который явно экспоненциальная сложность: O(3^n)
'T (n) = ... который явно является экспоненциальной сложностью: O (3^n)' 'O (3^n)' в ваших ответах и @ AndrewMao является асимптотическим 'T (n)' * поведение * значений.Это * не * алгоритмическая сложность вычисления «T (n)» (обратите внимание, что исходный вопрос помечен как «алгоритм» и «сложность времени»). Сложность времени выполнения итерации, как написано, действительно экспоненциальна, но вычисление «T (n)» из явной формулы имеет практическую сложность по времени «O (log n)» ([Сложность времени power()] (http: //stackoverflow.com/questions/5231096/time-complexity-of-power)). – dxiv
- 1. Сжатие {| n1, n2 | n1^n2} в Ruby
- 2. Решение рекурсии T (n) = 2T (n/2) + sqrt (n)
- 3. Решите рекуррентность: T (n) = 3T (2n/3) +1
- 4. Как рассчитать T (n) = 3T (n/3) + O (lg n)
- 5. Каково время выполнения T (n) алгоритмов?
- 6. Каково время работы T (n) этого алгоритма?
- 7. Выберите записи из n1 в n2
- 8. Решение для t (n) = 2t (n-2) -15, мое правда?
- 9. Какова временная сложность повторения 2T (n-1) + O (n)?
- 10. Рекуррентное соотношение: T (n) = 2T (n/4) + T (n/2) + n^2
- 11. Решая рекуррентность T (n) = T (n/2) + 2T (n/4) + n?
- 12. Алгоритмическое T (n) = T (n-1) +2
- 13. Сложность рекурсии: T (n) = T (n-1) + T (n-2) + C
- 14. Рекуррентное соотношение: T (n) = T (n - 1) + n - 1
- 15. Решение рекуррентности T (n) = 2T (n/2) + Θ (1) путем замены
- 16. Как решить это рекуррентное соотношение: T (n) = 2T (n/2) + 1
- 17. Учитывая «T, общее число» и «N, количество дней», как разделить T на N так, чтобы n1 + n2 ... равнялось T в экспоненциальной кривой?
- 18. Решите рекуррент 2T (n^1/2) + c, предполагая, что T (1) и c являются константами.
- 19. Как я могу решить следующую рекурсию, T (n) = 1, если n = 1, иначе T (n) = 2T (n/2) + logn, точно для n - степень 2?
- 20. Учитывая два числа n1 и n2 в качестве входных данных, возвращаем массив, содержащий все простые числа между n1 и n2
- 21. T (n-1) + 1/lg (n) повторяемость
- 22. Какова временная сложность T (n) = (T (n-1) + n!)?
- 23. Найти theta of: T (n) = T (n^(1/2)) + 1
- 24. Почему мы можем предположить, что для T (n) = 2T (n/2) + theta (1) n является степенью 2?
- 25. Как решить рекуррентность T (n) = T (n-1) + ... T (1) +1?
- 26. Решение рекуррентного отношения T (n) = T (n-1) * T (n-2) + c, где T (0) = 1 и T (1) = 2
- 27. can t (n) = 2t (n/2) + n^0,5/logn может быть решена с использованием магистерской теоремы?
- 28. Решите T (n) = T (n-1) + n^4 методом замещения
- 29. Как решить T (n) = T (n-1) + n^2?
- 30. Создайте массив n1 "нулей" и n2 "единиц" в scala
Если вы знаете, начальные условия, вы можете написать его от руки. T (0) =? T (1) =?. Из этого вы можете получить остальные термины – Jason
Число ветвей в t (n) = F (t (n-1), t (n-2)) одинаково для любого F, поэтому, если у вас есть решение для последовательности Фибоначчи, ... – Joni