Определение рецидива Bigo
-
27-09-2019 - |
Вопрос
T (1) = c
T (n) = T (n/2) + dn
Как бы я определил бы Bigo это быстро?
Решение
Используйте повторяющуюся списку и найдите шаблон. Пример здесь.
Другие советы
Я не совсем уверен, что dn
это, но предполагая, что вы имеете в виду постоянную умножению на n
:
По словам Wolfram Alpha, Решение рецидивочного уравнения решения для:
f(n) = f(n / 2) + cn
является:
f(n) = 2c(n - 1) + c1
что сделало бы это O(n)
.
Что ж, часть рецидивов соотношения является частью T (N / 2), которая в зависимости от уменьшения значения N каждый раз.
Таким образом, вам понадобится ок. (log2 n) Шаги для дохода до условия завершения, следовательно, общая стоимость алгоритма o (log2 n). Вы можете игнорировать часть DN, так как это постоянная операция для каждого шага.
Обратите внимание, что, как указано, проблема не обязательно прекращается, поскольку добавление вдыхания произвольное значение N несколько раз вряд ли вряд ли достигнут точности 1. Я подозреваю, что часть T (N / 2) должна фактически читать T (пол (N / 2))) или что-то в этом роде, чтобы убедиться, что это прекращает.
Используйте теорему Магистра http://en.wikipedia.org/wiki/master_theorem.
Кстати, асимптотическое поведение вашего рецидива - это o (n), предполагая, что d положительный и достаточно меньше, чем n (размер проблемы)