30.05.2013 Views

Appunti per il modulo di algoritmi e strutture dati - Sezione di ...

Appunti per il modulo di algoritmi e strutture dati - Sezione di ...

Appunti per il modulo di algoritmi e strutture dati - Sezione di ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}<br />

return i;<br />

Il blocco interno è eseguito m volte, se m è <strong>il</strong> numero <strong>di</strong> volte che 2 <strong>di</strong>vide n. Quin<strong>di</strong> nel peggiore dei<br />

casi, e cioè quando n = 2 m , è eseguito log 2 n volte. Abbiamo quin<strong>di</strong> che <strong>il</strong> tempo T (n) è O(log n).<br />

2.4 Moltiplicazione <strong>di</strong> matrici<br />

Consideriamo <strong>per</strong> semplicità matrici quadrate. Date due matrici quadrate n × n, <strong>il</strong> prodotto righe <strong>per</strong><br />

colonne è una matrice n × n tale che l’elemento cij, i, j = 1, .., n è definito nel modo seguente:<br />

cij =<br />

n<br />

k=1<br />

aik × bkj<br />

La complessità del tempo in questo caso si calcola in funzione <strong>di</strong> n, cioè del numero <strong>di</strong> righe e <strong>di</strong> colonne.<br />

Poiché si devono calcolare almeno n 2 prodotti fra elementi <strong>di</strong>stinti, <strong>il</strong> numero <strong>di</strong> o<strong>per</strong>azioni da elementari<br />

da effettuare ha un limite inferiore proporzionale a n 2 (<strong>per</strong> una trattazione dei limiti inferiori si veda la<br />

sezione 10). La moltiplicazione classica tra matrici, che calcola <strong>di</strong>rettamente la formula definita sopra,<br />

può essere descritta dal seguente algoritmo, dove A e B sono due matrici n × n <strong>di</strong> cui si deve calcolare <strong>il</strong><br />

prodotto e C è la matrice risultato:<br />

void matrixMult ( int A [n] [n], int B [n] [n], int C [n][n]) {<br />

for ( int i =0; i

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!