Вопрос

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 (размер проблемы)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top