da apatriarca » 09/11/2020, 16:43
Il ragionamento induttivo non è stato in effetti del tutto specificato nella dimostrazione che ti è stata data. Vuoi dimostrare che
\[ \exists k > 0 \; \exists n_0 \; \forall n > n_0. \; T(n) = 2\,T\left( \left\lfloor \frac{n}{2} \right\rfloor \right) + n \leq k\,n \log n \]
Il caso base da trovare sarebbe \(n = n_0 + 1,\) ma raramente si esplicita in questo tipo di dimostrazioni. Quello che si fa di solito è scrivere la relazione che deve rispettare la funzione per un valore generico di \(k,\) risolvere per tale parametro e quindi trovare un \(n_0\) opportuno. In questo caso scriviamo quindi:
\[ T(n) = 2\,T\left( \left\lfloor \frac{n}{2} \right\rfloor \right) + n \leq 2\,k \left\lfloor \frac{n}{2} \right\rfloor \log \left\lfloor \frac{n}{2} \right\rfloor + n \leq k\,n \log n + (1 - k)\,n \leq k\,n \log n \quad \forall k > 1 \]
Se prendiamo a questo punto ad esempio \(k = 2\) e \(T(1) = 1\) abbiamo che \(T(2) = 2 + 2 = 4 = 2\,(2 \log 2) \). In un certo senso stiamo usando il metodo induttivo scambiando l'ordine dei passaggi. Supponiamo che il primo passaggio sia verificato, troviamo le condizioni per cui vale il secondo passaggio e mostriamo che esiste un valore base. Di fatto il valore base esiste comunque sempre perché con il secondo passaggio hai dimostrato che la tua relazione di ricorrenza cresce più lentamente della funzione \(n \log n\).