Предполагает ли основная теорема, что T(1) постоянна? Скажем, если у меня есть алгоритм с временной сложностью: T(n) = 2T(n/2) + O(1) и T(1) = O(logn), какова временная сложность этого алгоритма?
Базовый случай основной теоремы постоянен?
Ответы (3)
Для рекуррентного соотношения: T(n) = 2T(n/2) + O(1)
имеем
- a = 2
- b = 2
- работа за O(1) времени вне рекурсии
поэтому применим случай основной теоремы 1, и мы имеем:
T(n) ∈ Θ(n ^ log2(2)) ⇒
T(n) ∈ Θ(n)
Рекуррентное отношение определяет последовательность на основе начального термина. Если задача размера 1 решается рекуррентным соотношением T(1) = f(n)
, где f ∈ O(logn), значение T(1) не может быть определено, т. е. не имеет смысла как рекуррентное соотношение.
Ваше утверждение T(1) = O(logn)
не имеет никакого смысла. Вы в основном утверждаете, что некоторая функция, которая по какой-то причине не зависит от n
, имеет логарифмическую сложность (таким образом, зависит от n
логарифмическим способом).
T(1), T(2), T(532143243)
являются граничными условиями и не могут зависеть ни от одного параметра. Они должны быть числом (5
, pi/e
, sqrt(5) - i
)
Иногда лучше просто попробовать, чем полагаться на теорему.
T(m) = 2T(m/2) + O(1)
T(1) = O(logn)
T(2) = 2T(1) = 2log(n)
T(4) = 2T(2) = 4log(n)
T(8) = 2T(4) = 8log(n)
T(16) = 2T(8) = 16log(n)
T(32) = 2T(16) = 32log(n)
T(m) = 2T(m/2) = mlog(n)
В заключение, ваш первоначальный вопрос действительно бессмыслен, как указывали другие, потому что вы пытаетесь вычислить T(n)
, когда один и тот же n
используется в T(1) = O(logn)
. Но мы можем ответить на ваш второй вопрос, который вы добавили в качестве комментария.
T(1) = O(logn)
бессмысленно: размер задачи не может быть параметризованным и постоянным. Это опечатка? - person Michael Foukarakis   schedule 31.01.2016