Equazione di ricorrenza dell'algoritmo di strassen

mathix1
ho questa equazione di ricorrenza e devo determinare la soluzione:

$\T(1) = c$
$\T(n) = 7T(n/2) + 18(n/2)^2$

come va risolta? con il teorema principale?
se si, come mi devo comportare con quel $\18(n/2)^2$?
sul mio testo è riportata solo la soluzione che è T(n) = O(n^(log base2 di 7))

*edit*
ho trovato un procedimento, ditemi se va bene:
$\T(1) = c$
$\T(n) = 7T(n/2) + 18(n/2)^2$

$\T(1) = c$
$\T(n) = 7T(n/2) + \Theta(n^2)$
a=7
b=2
d(b)=4
a>d(b) quindi T(n) = O(n^(logb di a)) e quindi O(n^(log2 di 7))

Risposte
hamming_burst
Ciao,
non conoscevo le costanti nascoste di dell'equazione di ricorrenza di questo algoritmo, interessante. Avevo un'idea per via delle sottomatrici, ma non sapevo questo :-)

ci sono vari modi per risolverla, il Master Theorem è uno.
Visto che lo hai utilizzato:
- ti manca una condizione per quale $\epsilon>0$, $cf(n^2) in O(n^{log_{2}(7) - \epsilon})$?
- cosa è $d(b)$?


Ma ce ne sono di più interessanti.
Visto che hai riportato pure le costanti, calcoliamo per bene tutto :-)

ipotizziamo $n$ numero intero, potenza esatta di $2$. Utilizziamo il metodo dell'albero di ricorsione che produce un'ottima (non in senso algoritmico) limitiazione asintotica superiore:

$(9/2)n^2 -> (9/2)7^1*(n/(2^1))^2 -> (9/2)7^2n^2/4^2 ... -> (9/2)7^i\n^2/4^i -> ... -> (9/2)7^(h-1)\n^2/(4^(h-1)) -> n^{log_{2}(7)}*T(1)$

altezza albero $h=log_{2}(n)$
$T(n=1) = n/2^i=1$ quando $i=log_{2}(n)$

sommiamo i nodi interni:

$\sum_{i=0}^{log_{2}(n)-1} (9/2)7^i\n^2/4^i = (9/2)\sum_{i=0}^{log_{2}(n)-1} 7^i\n^2/4^i = (9/2)n^2\sum_{i=0}^{log_{2}(n)-1} (7/4)^i$ che è una serie geometrica crescente, perciò:

$(9/2)n^2\sum_{i=0}^{log_{2}(n)-1} (7/4)^i = (9/2)n^2*(((7/4)^{(log_{2}(n)-1)+1}-1)/(7/4 - 1)) = (9/2)n^2(((n^{log_{2}(7)}/n^2) -1)/(3/4)) = 6n^{log_{2}(7)} - 6n^2$

le foglie dell'albero sono: $7^{log_{2}(n)} = n^{log_{2}(7)} in \O(n^{log_{2}(7)})$

sommiamo il tutto: $6n^{log_{2}(7)} - 6n^2 + \O(n^{log_{2}(7)}) in O(n^{log_{2}(7)})$

Perciò l'equazione risulta appartenere alla classe di complessità $O(n^{log_{2}(7)})$

Se hai dubbi chiedi pure :-)

PS: il metodo dell'albero te lo ho messo solo come modo per calcolare la stessa complessità vista con il Master Theorem.

mathix1
d(b) è la funzione guida, il mio testo la presenta cosi.

per curiosità su che testo hai studiato? perche su quelli che ho io le equazioni di ricorrenza sono spiegate malissimo.

hamming_burst
"mathix":
d(b) è la funzione guida, il mio testo la presenta cosi.

"funzione guida" mai sentita. Non riesco ad immaginare il suo utilizzo, me lo spiegheresti, se vuoi :-)
Comunque ti è chiaro il procedimento, manca sempre $\epsilon$ da enunciare...


per curiosità su che testo hai studiato? perche su quelli che ho io le equazioni di ricorrenza sono spiegate malissimo.

vedi qua (algoritmica)

il primo in elenco è davvero ben fatto e completo. Poi c'è il classico Cormen, il migliore, ma non gradito a tutti :-)
se vuoi ultieriore materiale di studio poi vedi la sezione Dispense.

mathix1
per funzione guida il testo che ho intende la f(n) di aT(n/b) + f(n)
il testo che usiamo (lo trovi a questo link http://www.sci.unich.it/~acciaro/corsoASD.pdf) non riporta affatto la $\epsilon$
se ti va dai un'occhiata a pagina 71

hamming_burst
"mathix":
per funzione guida il testo che ho intende la f(n) di aT(n/b) + f(n)
il testo che usiamo (lo trovi a questo link http://www.sci.unich.it/~acciaro/corsoASD.pdf) non riporta affatto la $\epsilon$
se ti va dai un'occhiata a pagina 71


ho dato un'occhiata un po' veloce, mi sembra di capire che utilizza un'approssimazione sui numero di nodi in ambiezza per livello dell'albero (se sai il Master è stato teorizzato utilizzando il metodo dell'albero) e il numero di dimezzamenti che riducono o amplificano la profondità. Il principio è simile $\epsilon$ aumenta o diminuisce la classe di complessità dell'equazione (ipotizzata), e questo implica ipotizzare un albero più profondo o pià ampio. In soldoni mi sembra di aver capito ciò. Penso siano sistemi simili. :-)

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