[Serie] Complessità algoritmo / relazioni di ricorrenza

rocco.g1
Ciao!

Il mio libro di testo mi dice che il risultato di

$C_N = C_(N/2) + N$

è $2N$

dove la relazione si riferisce ad un programma ricorsivo che dimezza il suo input ed esamina ogni elemento di esso di volta in volta.

ma come si arriva a questo risultato? Non ricordo più i criteri per la convergenza delle serie e successioni... ho provato a cercarli, ma non trovo i miei appunti di due anni fa...


con un'altra relazione, quella del divide et impera, in cui cioè il programma esegue una scansione lineare prima o dopo aver suddiviso l'input a metà:

$C_N = 2*C_(N/2) + N$

mi dice che il risultato è $NlogN$

ma secondo quale procedimento?

mi potreste schiarire le idee? io proprio non ricordo...

vi ringrazio ;)

Risposte
Megan00b
Ricordo dall'esame di algoritmi che queste equazioni di risolvono con il teorema fondamentale delle ricorrenze che dice:

siano f(n) funzione, $alpha>=1$,$beta>1$ e $n_0>=0$
allora l'equazione di ricorrenza
$T(n)=O(1)$ se $n<=n_0$
$T(n)=alpha T([n/beta])+f(n)$ altrimenti
ha le seguenti soluzioni per ogni n:
1. $T(n)=O(f(n))$ se esiste una costante $gamma<1$ tale che $alpha f([n/beta])=gamma f(n)$
2. $T(n)=O(f(n)log_(beta)n)$ se $alpha f([n/beta])=f(n)$
3. $T(n)=O(n^(log_(beta)alpha))$ se esiste una costante $gamma'>1$ tale che $alpha f([n/beta])=gamma' f(n)$

Poi ricordo che in certi casi questo teorema non funziona, mi pare quando l'equazione contiene due o più funzioni ma non mi ricordo come si fa in quel caso.

Ps. il tuo libro non dà le soluzioni come andamento asintotico. questo può voler dire o che la mia risposta non centra niente o che usa un metodo più raffinato che però non ti so dire. Non mi sono mai posto il problema di differenziare un algoritmo N da uno 2N.
ciao

rocco.g1
sinceramente io nemmeno, perchè per grandi valori di N, non ha senso considerare per forza 2N...

il problema è che il mio libro non fornisce alcuna spiegazione e nessun passaggio matematico... il che mi inquieta perchè non capisco come faccia a dar per scontate queste cose...
il teorema fondamentale l'avevo trovato su wikipedia, ma dato che non fa alcun accenno a questo, il mio libro, pensavo che supponesse di risolverlo per via algebrica...
ma boh... rimango ancora sconcertato :D

Megan00b
beh nel primo caso (rispetto al teorema di cui ti ho parlato) potresti anche avventurarti nella selva oscura di un procedimento algebrico ma negli altri due (come puoi vedere dalla forma delle soluzioni) temo che non sia possibile.
Anzi sono abbastanza propenso a pensare che il tuo libro abbia utilizzato questo teorema e poi (solo nel primo caso) abbia precisato la costante perchè si vede quasi ad occhio.

rocco.g1
però almeno un riferimento a quella formula potrebbe farlo...
cioè che ci voleva all'autore dire: "il risultato deriva dall'applicazione di quella formula"

per questo, pensavo fosse derivato da argomentazioni prettamente algebriche...

ora vedo un pò...

Megan00b
beh se ti fai problemi per questo augurati di non avere mai a che fare con un libro di hilbert che ti salta tranquillamente 20 passaggi passando da una formula di 3 righi ad una di 2 centimetri sottolineando quanto sia ovvio quel passaggio :D
Ricordati che i matematici (soprattutto gli analisti) sono pigri!!!
ehehm...siamo pigri... :wink:

rocco.g1
"Megan00b":
beh se ti fai problemi per questo augurati di non avere mai a che fare con un libro di hilbert che ti salta tranquillamente 20 passaggi passando da una formula di 3 righi ad una di 2 centimetri sottolineando quanto sia ovvio quel passaggio :D
Ricordati che i matematici (soprattutto gli analisti) sono pigri!!!
ehehm...siamo pigri... :wink:


vi capisco benissimo :D

ma se voi siete pigri nelle formule, noi ingegneri siamo prigri quando si tratta di andare a cercare altrove i passaggi non scritti da voi :lol:

abbiamo messo su proprio un bel circolo vizioso :-D

Larios1
ciao,

io mi sono chiarito un po le idee con questo documento http://www.dsi.unifi.it/~costa/lucidi_f ... totica.pdf

è tutto abbastanza semplice se ho capito bene

ad esempio nel primo esercizio direi che è =n essendo il tempo di divisione e ricombinazione piu grande del tempo destinato alla risoluzione ricorsiva

non capisco perchè il tuo libro indica 2n, visto che sia 2n che n hanno lo stesso ordine di grandezza theta n in questo caso

per quel che riguarda il secondo è giusto perchè i tempi si equivalgono


fammi sapere cosa ne pensi perchè anche io non è che sia un esperto :?

rocco.g1
il pdf è di sicuro interessante... e schiarisce un pò le idee...
ottimo ;)

la storia del perchè esca il 2N ancora non è chiara nemmeno a me... non credo sia un errore del libro però...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.