Я очень расстроен по этому поводу.
В 3-м издании CLRS, стр. 95 (глава 4.5), упоминается, что такие повторения, как
T(n) = 2T(n/2) + n lg n
не может быть решена с помощью основной теоремы, потому что разница
f(n)/n^(log_b(a)) = (n lg n)/n^1 = lg n
не является полиномиальным.
Но затем я наткнулся на такие страницы, как это, где, в В нижней части страницы упоминается точно такое же повторение и говорится, что его МОЖЕТ решить с помощью Главной теоремы, потому что он попадает в «расширенный случай 2», даже если разница неполиномиальна. Он становится n lg^2 n
(увеличивая коэффициент журнала на f(n)
на единицу).
Затем я наткнулся на такие страницы, как эта, где в примере (e) кажется как явное применение расширенного случая 2 (повторяемость T(n) = 4T(n/2) + n^2 lg n
), но тогда решение не n^2 log^2 n
, а скорее n^2 log n
! Я ошибаюсь или бумага не та?
Может ли кто-нибудь прояснить противоречия и прояснить, когда именно можно использовать Основную теорему, а когда нельзя? Когда проверка полиномиальной разности имеет значение, а когда нет? Можно ли использовать расширенный случай 2 или он действительно что-то нарушает?
РЕДАКТИРОВАТЬ:
Я попытался решить повторение (e) непосредственно из второй статьи и получил:
T(n) = n^2 lg^2(n)/2 + n^2 lg(n)/2
Разве это не большая тета n^2 lg^2 n
?