UNIVERSITA DI MILANO-BICOCCA CdL IN INFORMATICA Corso di Algoritmi e Ricerca Operativa Prof. Giancarlo Mauri LEZIONE 2
Numeri di Fibonacci Obiettivo dare un modello matematico della crescita di una popolazione di conigli Assunzioni: Si parte (tempo 0) con una coppia di conigli neonati Ogni coppia genera una nuova coppia ad ogni unità di tempo, a partire dalla seconda unità dopo la nascita I conigli non muoiono mai NUMERO DI COPPIE AL TEMPO n ? Modello matematico: F(n) := se (n=0) o (n=1), allora 1 altrimenti F(n-1)+F(n-2)
Prodotto di matrici n*n ALGORITMO IMMEDIATO: O(n 3 ) somme/prodotti di reali ALGORITMO DI STRASSEN (1969) Per n = 1: 1 prodotto e 0 somme di reali. Per n = 2: 7 moltiplicazioni e 18 addizioni (sarebbero 8 e 4 con l algoritmo immediato). a 11 a 12 a 21 a 22 b 11 b 12 b 21 b 22 A =B = C = A*B = c 11 c 12 c 21 c 22
Lalgoritmo di Strassen P 1 =(a 11 +a 22 )(b 11 +b 22 ) P 2 =(a 21 +a 22 )b 11 P 3 =a 11 (b 12 -b 22 ) P 4 =a 22 (b 21 -b 11 ) P 5 =(a 11 +a 12 )b 22 P 6 =(a 21 -a 11 )(b 11 +b 12 ) P 7 =(a 12 -a 22 )(b 21 +b 22 ) c 11 =P 1 +P 4 -P 5 +P 7 c 12 =P 3 +P 5 c 21 =P 2 +P 4 c 22 =P 1 +P 3 -P 2 +P 6
Lalgoritmo di Strassen Per n = 2 k+1 : riducibile a 7 moltiplicazioni e 18 somme di matrici di ordine 2 k. Numero di prodotti: P(1) = 1 P(2 k+1 ) = 7*P(2 k ) Numero di somme: S(1) = 0 S(2 k+1 ) = 7*S(2 k ) + 18*2 2k La soluzione: P(n) = S(n) = O(n log7 ) = O(n 2,81 )