Итак, я готовлюсь к экзамену по алгоритмам и не знаю, как решить это повторение T(n) = T(6n/5) + 1
, так как b = 5/6 < 1
и Основная теорема не могут быть применены. Я надеюсь, что кто-то может дать мне подсказку о том, как решить эту проблему. :)
Решить повторение T (n) = T (6n/5) + 1
Ответы (1)
Учитывая только это рекуррентное соотношение (и отсутствие дополнительной информации, такой как T(x) = 1
при x > 100
), алгоритм с временной сложностью, описанной отношением, никогда не завершится, поскольку объем работы увеличивается при каждом вызове.
T(n) = T(6n/5) + 1
= T(36n/25) + 2
= T(216n/125) + 3
= ...
Вы можете видеть, что объем работы увеличивается с каждым вызовом, и что он не будет иметь предела, на который он будет увеличиваться. В результате временная сложность функции не ограничена.
Мы можем даже (неофициально) утверждать, что такой алгоритм не может существовать — увеличение размера входных данных в 1.2
раза для каждого вызова требует как минимум 0.2n
работы, что явно равно O(n)
, но фактическая стоимость каждого шага заявлена как 1
, O(1)
. , поэтому алгоритм, описываемый этим точным повторением, не может существовать (но подходит для алгоритмов с повторением, например, T(n) = T(6n/5) + n
).