Jestem dość sfrustrowany.Kiedy można zastosować twierdzenie magisterskie?
W CLR 3rd edition, strona 95 (rozdział 4.5), wspomina, że nawroty jak
T(n) = 2T(n/2) + n lg n
nie może być rozwiązany z Master twierdzenia, ponieważ różnica
f(n)/n^(log_b(a)) = (n lg n)/n^1 = lg n
jest nie wielomian.
Ale wtedy natknąłem się na strony takie jak this, gdzie na dole strony wspomniano o tym samym powtórzeniu i mówię, że MOŻNA go rozwiązać za pomocą Twierdzenia Mistrza, ponieważ wpada w "rozszerzony przypadek 2" nawet choć różnica nie jest wielomianowa. Staje się n lg^2 n
(zwiększając współczynnik logu o f(n)
o jeden).
Potem natknąć stron jak this gdzie w przykładzie (e) wydaje się jasny stosowania rozszerzonych przypadku 2 (nawrót jest T(n) = 4T(n/2) + n^2 lg n
), ale to rozwiązanie nie jest n^2 log^2 n
, ale raczej n^2 log n
! Czy jestem w błędzie, czy papier jest niewłaściwy?
Czy ktoś może wyjaśnić sprzeczności i wyjaśnić dokładnie, kiedy można wykorzystać Twierdzenie Mistrza, a kiedy nie? Kiedy sprawdzanie różnicy wielomianów ma znaczenie, a kiedy nie? Czy rozszerzony przypadek 2 jest użyteczny, czy faktycznie coś narusza?
EDIT:
Próbowałem rozwiązywania nawrotów (E) bezpośrednio od drugiego papieru i uzyskać:
T(n) = n^2 lg^2(n)/2 + n^2 lg(n)/2
Czy to nie wielki theta n^2 lg^2 n
?
Należy zauważyć, że przypadek 2 twierdzenia głównego w książce różni się od uogólnionego formularza, który można spotkać gdzie indziej (w tym przykłady). Skąd się wzięła uogólniona forma? Ćwiczenie 4.6-2 w książce, w rzeczywistości dość łatwo udowodnić to samemu. :-) –
@MichaelFoukarakis Czy powiedziałbyś, że reguła różnicy wielomianów dotyczy tylko przypadków 1 i 3? –
"Zasada" wielomianowej różnicy jest bardziej rygorystycznym stwierdzeniem niż przypadek polilogarytmiczny. Obowiązuje we wszystkich 3 przypadkach. W przypadku # 2 można po prostu odprężyć się. –