Sono abbastanza frustrato per questo.Quando si può applicare effettivamente il Teorema Master?
In CLRS 3a edizione, pagina 95 (capitolo 4.5), si informa che le recidive come
T(n) = 2T(n/2) + n lg n
non può essere risolto con il Maestro Teorema perché la differenza
f(n)/n^(log_b(a)) = (n lg n)/n^1 = lg n
è non polinomiale.
Ma poi mi imbatto in pagine come this dove, nella parte inferiore della pagina, menziona esattamente la stessa ricorrenza e dice che PUO 'essere risolto con il Teorema Master perché cade in un "caso esteso 2" anche anche se la differenza è non polinomiale. Diventa n lg^2 n
(incrementando il fattore di registro su f(n)
di uno).
Poi io vengo da una pagina all'altra, come this dove nell'esempio (e) sembra una chiara applicazione di Case Esteso 2 (la ricorrenza è T(n) = 4T(n/2) + n^2 lg n
), ma allora la soluzione non è n^2 log^2 n
, ma piuttosto n^2 log n
! Mi sbaglio o la carta è sbagliata?
Qualcuno può chiarire le contraddizioni e chiarire esattamente quando è possibile utilizzare il Teorema master e quando non è possibile? Quando interviene il controllo della differenza polinomiale e quando no? Il caso esteso 2 è utilizzabile o viola effettivamente qualcosa?
EDIT:
Ho provato a risolvere recidiva (e) direttamente dalla seconda carta e ottengo:
T(n) = n^2 lg^2(n)/2 + n^2 lg(n)/2
Non è questo grande theta n^2 lg^2 n
?
Nota che il caso 2 del Teorema Master nel libro differisce dal modulo generalizzato che incontri altrove (inclusi i tuoi esempi). Da dove viene la forma generalizzata? Esercizio 4.6-2 nel libro, in realtà è abbastanza facile provarlo da solo. :-) –
@MichaelFoukarakis Diresti che la regola della differenza polinomiale si applica solo ai casi 1 e 3? –
La "regola" della differenza polinomiale è un'affermazione più rigida rispetto al caso polilogaritmico. Si applica a tutti e 3 i casi. Nel caso # 2, è semplicemente permesso essere rilassati. –