Рекуррентное отношение с переменной, выраженной через n

Я написал рекурсивный алгоритм, который работает в Θ(n).

Одним из рекуррентных уравнений для n > 0 является T(n) = T(v) + T(n - 1 - v) + c, где c — константа, а v — переменная, которая может принимать значения в фиксированном диапазоне n > v > 0.

Как мне дальше решить или правильно упростить это уравнение?


person George    schedule 24.07.2016    source источник
comment
Если значение v приближается к середине диапазона (0, n), сложность будет O(log(n)), а когда значение v находится в углу этого диапазона, сложность будет O(n).   -  person Shubham    schedule 24.07.2016
comment
Не зная больше о v, невозможно решить это повторение. Что вы знаете о В? Откуда взялось это повторение?   -  person templatetypedef    schedule 25.07.2016
comment
@templatetypedef Алгоритм используется для обработки бинарных деревьев. Необработанное, неупрощенное уравнение будет иметь вид T(n) = T(n-L-1)+T(n-R-1)+c, где L — это левое поддерево (с корнем в левом дочернем узле), а R — это правое поддерево (с корнем в правом дочернем узле) обрабатываемого корневого узла. Поскольку R = n-1-L и L = n-1-R (где n — общее количество узлов в поддереве, а 1 — корневой узел), уравнение можно упростить до T(n) = T(n-L-1) + T(n-(n-1-L)-1) + c = T(n-L-1) + T(L) + c, что эквивалентно T(n) = T(R) + T(n-1-R) + c.   -  person George    schedule 25.07.2016


Ответы (2)


Просто многократно расширяйте непостоянный термин:

введите здесь описание изображения

Серия заканчивается, когда:

введите здесь описание изображения

Это означает, что введите здесь описание изображения, так как член T(v) сократится со знаменателем в N.

person Community    schedule 24.07.2016
comment
Учитывает ли это решение тот факт, что v может меняться при каждом рекурсивном вызове этого типа (в зависимости от топологии поддерева, в котором выполняется вызов)? Или предполагается, что v будет константой во время одного выполнения алгоритма? - person George; 02.08.2016
comment
Да, так как знаменатель будет суммой всех Vi, а сумма T(Vi) все равно отменит знаменатель. - person ; 02.08.2016

В комментариях вы описали поведение вашего алгоритма следующим образом: он выполняет постоянный объем работы над пустым деревом и в противном случае выполняет постоянный объем работы, а затем рекурсивно обрабатывает левое и правое поддеревья. Вместо того, чтобы описывать время выполнения рекуррентным отношением, подобным тому, которое вы описали, вы можете учитывать время выполнения по-другому: проделанная работа прямо пропорциональна количеству узлов в дереве, поскольку вы можете взимать плату за каждую единицу выполненной работы. к определенному узлу. В результате общее время выполнения составляет O(n).

person templatetypedef    schedule 25.07.2016
comment
Без обид, но ты как бы констатируешь очевидное. Моя задача — написать полный теоретический анализ алгоритма, поэтому мне нужно рекуррентное соотношение для описания (и доказательства) временной сложности. - person George; 30.07.2016
comment
Обратите внимание, что рекуррентное соотношение — это только один из способов провести полный теоретический анализ результата. Изучив алгоритмы некоторое время и прочитав множество статей, я относительно уверен, что аргумент, подобный этому, был бы совершенно уместным. - person templatetypedef; 30.07.2016