Risolvere la relazione di ricorrenza


8

Voglio dimostrare che la complessità temporale di un algoritmo è pollogaritmica nella scala di input.

La relazione di ricorrenza di questo algoritmo è T(2n)T(n)+T(na), dove a(0,1).

Sembra che T(n)logβn per alcuni β dipende da a. Ma non posso provare questa disuguaglianza. Come risolvere questa relazione di ricorrenza?

Voglio solo ottenere un polilaritmico limite superiore in n.


1
a<1, Presumo? Inoltre, hai controllato la nostra domanda di riferimento ? Non penso che il caso specifico di cui stai chiedendo sia esplicitamente trattato lì, ma ci sono molte tecniche descritte.
David Richerby,

1
Non esiste un teorema "maestro" per questo tipo di cui sono a conoscenza; cfr questa mia domanda e questa . (cc @DavidRicherby)
Raffaello

Risposte:


4

La tua ipotesi è sbagliata. In effetti, non è difficile dimostrarloT(n)>0 per tutti n>0, poi T(n)=Ω(logkn)per tutti k. In effetti, perché ciò avvenga, ne abbiamo bisogno per abbastanza granden noi avremmo

(1+ak)logkn=logkn+logknalogk(2n),
o 1+akklognlogn+log2, che vale fino a quando [1+akk1]lognlog2, e in particolare per abbastanza grande n.

Qual è il corretto ordine di crescita di T(n)? Per provare a scoprirlo, scriviS(n)=T(2n). La ricorrenza ora diventa

S(n+1)=S(n)+S(an).
Per grandi n, ci aspetteremmo S(n+1)S(n) essere molto vicino a S(n), e quindi euristicamente ci aspetteremmo S soddisfare S(n)=S(an). Questa equazione sembra un po 'difficile da risolvere, ma è una soluzione approssimativaS(n)=nΘ(logn). Sostituendo, deduciamo che l'ordine di crescita diT(n) dovrebbe essere qualcosa di simile (logn)Θ(loglogn).

Sembra che logk(2n)=(log2+logn)k. Il limite inferiore non regge.
Qiang Li,

@QiangLi Grazie per aver individuato l'errore. Il limite inferiore vale, tuttavia, una volta che l'argomento è opportunamente modificato.
Yuval Filmus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.