Ricorrenze

Rael1
Salve a tutti.
Percaso qualcuno ha un idea su come si possa risolvere una relazione di ricorrenza del tipo:

T(n) = T(n/4)+ T(3n/4)

(ora se non ci fosse il secondo termine con 3n/4, non ci sono problemi, metto n = 4^n, e la riporto ad una ricorrenza di primo ordine omogenea, e poi risolvendo l'equazione caratteristica, tiro fuori la soluzione)

è possibile trovare una soluzione generale senza applicare il Master Theorem ? (nè sviluppare iterativamente, nè indovinare, nè tirando fuori sommatorie e funzioni generatrici ?)

e se invece che due termini con relazioni in n comunque simili, ho una roba del tipo T(f(n)) = T(h(n)) + T(g(n)) + ... + f(n)
(dove f(n), g(n), ed h(n) sono funzioni diverse ?)

Risposte
Sk_Anonymous
Ma per T intendi una successione? Che senso ha allora n/4? Non capisco il problema.

Luca.

Rael1
Per T(n) si intende l'ennesimo elemento della successione

la relazione di ricorrenza per i numeri di Fibonacci ad esempio sarebbe scritta come
T(n) = T(n-1) + T(n-2)

l'elemento ennesimo è dato dala somma dei precedenti 2 {T(n-1), T(n-2)}

Sk_Anonymous
Do ragione a Luca77.Detto un po' alla buona,una
successione e' un'applicazione di N in R e non
vedo che significato possano avere T(n/4) e T(3n/4),
a meno di non considerare solo valori di n congrui a 0
modulo 4.Se questo fosse possibile, dovrei concludere
che molta acqua e' passata da quando ho lasciato
gli studi universitari.
karl.

Sk_Anonymous
In riferimento alla corretta osservazione di Karl, continuo a non capire il problema.

Luca.

gattomatto2
Vorrei anch'io fare una domanda a Rael.

Nella mia tesi di laurea trovavo la soluzione ad una equazione differenziale lineare a coefficenti non costanti per mezzo di uno sviluppo in serie in cui la successione non era nota esplicitamente ma per mezzo di una relazione di ricorrenza simile, ma un tantino più complessa, a quelle che hai postato tu. Non mi ricordo più quanto tempo ho inutilmente passato a cercare di trasformare la mia relazione di ricorrenza in una relazione esplicita per il generico termine della successione.

Ora noto che tu hai fatto riferimento ad un certo Master Theorem di cui io non ho mai sentito parlare. Potresti darmi perfavore qualche dellaglio in più?

Grazie e ciao

Rael1
Il Master Theorem è anche noto come il teorema fondamentale delle ricorrenze, e consente di determinare il comportamento asintotico della formula esplicita della relazione di ricorrenza, e si usa nell'analisi degli algoritmi.
il Master theorem consente di evitare la risoluzione delle relazioni di ricorrenza del tipo T(n) = a*T(n/b) + f(n)
Chiarisco la cosa degli indici fratti : supponi di dover analizzare l'andamento di un algoritmo che usi la tecnica "Divide et Impera", suddividendo il problema iniziale, in "a" sottoproblemi più piccoli di dimensione "n/b" e che impieghi un tempo f(n) per ricombinare i risultati.

Es.
la relazione di ricorrenza relativa alla ricerca binaria su un array di n elementi è della forma :

T(n) = T(n/2) + k se n > 1

1 se n = 1

xxalenicxx
.

Maverick2
allora, ho capito il tuo problema...
mi ricorda cose fatte all'esame di algoritmi.
in pratica T(n) sta ad indicare il tempo necessario a "risolvere il problema" su n elementi.

T(n) = T(n/4)+ T(3n/4)

vuol dire che per n elementi il tempo necessario è quello necessario per lo stesso problema su n/4 elementi + quello per lo stesso problema su 3n/4 elementi.

il teorema master non credo sia applicabile in questo caso, metodi iterativi mi sembra che non portino a niente, forse ti conviene provare con qualche sostituzione e vedere se funziona.

cmq ti consiglio di dare un'occhiata al testo "introduzione agli algoritmi" di leiserson-cormen-rivest.

sinceramente a 2 anni di distanza non mi ricordo molto di più di quello che ho scritto...

Sk_Anonymous
Scusate, ma continuo a non capire: se T e' una successione, e n=5, che senso ha calcolare T(5/4)?

Luca.

gattomatto2
quote:
Originally posted by Luca77

Scusate, ma continuo a non capire: se T e' una successione, e n=5, che senso ha calcolare T(5/4)?



provo ad avanzare una ipotesi in attesa di conferma o di smentita da parte degli esperti.

se "an" è una successione con "n" appartenente ad "N", nulla ci vieta di definire la successione "bn" che si ottiene sostituendo al posto di "n" una qualunque funzione "f(n)".

Un esempio potrebbe essere il seguente:

an=x^n/n! (con x appartenente ad R)

f(n)=SQRT(n)=n^(1/2)

bn=x^f(n)/GAMMA(f(n)+1)

dove con GAMMA(x) ho indicato la nota funzione analitica interpolatrice del fattoriale.

In tal caso se T(n) è la successione "an" allora T(f(n)) sarebbe la successione "bn".

Ho capito bene oppure ho preso una cantonata?

Sk_Anonymous
Affinche' T(f(n)) sia ancora una successione e' necessario che f(n) sia naturale per ogni n; n/4 non e' naturale per ogni n.

Luca.

gattomatto2
quote:
Originally posted by Luca77

Affinche' T(f(n)) sia ancora una successione e' necessario che f(n) sia naturale per ogni n; n/4 non e' naturale per ogni n.



Si, su questo siamo d'accordo. Tra l'altro io non sono un esperto e forse sto parlando a sproposito. Tuttavia io mi chiedo:

La "bn" che ho definito precedentemente non è ancora una successione? Io credo di si dato che continua ad essere una applicazione tra N e un qualche altro corpo numerico (nel caso in esame sostituisco un numero naturale e la successione mi ritorna un numero reale).

A questo punto, come la vedo io, potrebbe essere solo un problema di definizione. Se "an" e "bn" sono due successioni tali che la seconda deriva dalla prima per la sostituzione di "n" con "f(n)" (se f(n)=n allora bn=an) non potrebbe darsi che si intenda T(n)=an e T(f(n))=bn?

Ripeto che potrei aver frainteso completamente tutta la vicenda. In tal caso mi scuso e taccio.

Ciao

Sk_Anonymous
Non capisco, se Rael non spiega meglio il suo problema: per come l'ha formulato nel primo post, T non puo' essere una successione.

Luca.

Rael1
Maverick pare che abbia colto il punto del problema, e anche l'ipotesi di gattomatto, è del tutto plausibile

infatti nulla mi vieta di definire una relazione di ricorrenza come segue :

T(n) = 2*T(sqrt(n)) + Log(n)

Es.

Sia T(n) = 4*T(n/2) + h(n)

pongo n = 2^m tale che T(f(n)) = T(g(m-1))
e definisco una seconda relazione di ricorrenza B(m) = B(g(m)) + ...

nel mio caso :

T(n) = 4*T(2^(m-1)) + h(2^m)
=> B(m) = 4*B(m-1) + h(2^m)

poi procedo a trovare la soluzione, non vedo cosa ci sia di strano negli indici fratti.

Sk_Anonymous
Ascolta, non mi pare difficile: se T agisce su numeri naturali, cosa significa T(n/4)?

La tua relazione di ricorrenza la puoi definire, ma la soluzione non e' una successione.

Luca.

Maverick2
aspettate aspettate, c'è stato un fraintendimento generale. il problema postato da rael non è una successione vera e propria, ma il calcolo della complessità di un algoritmo che in generale non ha bisogno di essere "troppo preciso". si può arrotondare all'intero precedente o successivo se fa comodo, e di solito è anche uguale se si sggiungono o tolgono costanti.

rael, non è che la soluzione è sempre O(nlogn)?
le l'array fosse scomposto in 2T(n/2) funzionerebbe, così non sono sicuro ma vale la pena provare...

Sk_Anonymous
Ok, se T non e' una successione, allora chiedo scusa per tutti i miei interventi.

Luca.

Maverick2
baboomba come ti è stato detto sul forum non si fanno gare, quando qualcuno ha un problema ognuno cerca di apportare il suo contributo se può e come può. mi sembra che cmq vada lodato l'impegno di tutti a prescindere... e cmq luca77 col quale ce l'hai tanto non è proprio l'ultimo arrivato...

Sk_Anonymous
E se Rael avesse subito precisato che non si trattava di
successioni, facendolo invece credere col suo riferimento
alla successione di Fibonacci?
karl

Rael1
Ok raga, scusate, magari non sono stato particolarmente preciso, ma dal momento che pensavo che l'argomento fosse di comune conoscenza, avevo dato per scontato alcune cose.

Rispondeno a Maverick, Infatti il teorema master non è applicabile, in questo caso, ci sono due termini con indice fratto (fosse 1 ok), Ed ahimè la soluzione della ricorrenza inizialmente postata non è O(xLog(x)), si aggira circa intorno a x forse, o x alla qualcosa di molto prossimo ad 1, in ogni modo davvero non esiste un modo per tirare fuori una soluzione precisa ?
Per gli algoritmi divide et impera semplici del tipo aT(n/b) + f(n) è possibile tirare fuori la soluzione esplicita, senza approssimazioni, mi kiedevo soltanto se fosse possibile fare altrettanto con relazioni di ricorrenza più complesse.

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