Sunteți pe pagina 1din 2

Tema nr.

1

1. S se gseasc cel mai mic numr pozitiv u > 0, de forma u = 10
-m
care satisface
proprietatea:
1 1
c
u + =
unde prin +
c
am notat operaia de adunare efectuat de calculator. Numrul u se
numete precizia main.

2. Operaia +
c
este neasociativ: fie numerele x=1.0 , y = u , z = u , unde u este precizia
main calculat anterior. S se verifice c operaia de adunare efectuat de calculator
este neasociativ:
( ) ( )
c c c c
x y z x y z + + = + +

3. Algoritmul lui Strassen de nmulire a matricilor
Fie ,
n n
A B

e dou matrici reale ptratice de dimensiune n. Elementele matricii
produs
n n
C A B

= - e se calculeaz folosind formula clasic:
1
, , 1, ..., .
n
ij i k kj
k
c a b i j n
=
= =

Dac se folosete relaia de mai sus, calculul matricii produs C, necesit n
3
nmuliri i
n
2
(n-1) adunri de numere reale. Vom prezenta n continuare algoritmul lui Strassen
de nmulire a dou matrici, care va face un numr de nmuliri de ordinul
2.807
( ) O n
dar mai multe adunri dect n algoritmul clasic de nmulire a matricilor. Vom
considera doar cazul cnd dimensiunea matricii este o putere a lui 2, n=2
q
.
Considerm urmtoarea nmulire a unor matrici bloc 2 x 2 (n=2m):

11 12 11 12 11 12
21 22 21 22 21 22
, , ,
m m
ij ij ij
C C A A B B
A B C
C C A A B B

( ( (
= e
( ( (

.

Folosind algoritmul clasic avem
1 1 2 2
, , 1, 2.
ij i j i j
C A B A B i j = + = Calculul matricii C
se face folosind 8 nmuliri i 4 adunri (pentru m=1 sunt operaiile obinuite cu
numere reale iar pentru m > 1, este vorba de operaiile de adunare i nmulire
matriciale). n 1969, Strassen a artat c produsul matricial de mai sus se poate face
cu doar 7 nmuliri i 18 adunri n felul urmtor: se calculeaz 7 matrici auxiliare
P
i
, i=1,...,7

( ) ( )
( )
( )
( )
( )
( ) ( )
( ) ( )
1 11 22 11 22
2 21 22 11
3 11 12 22
4 22 21 11
5 11 12 22
6 21 11 11 12
7 12 22 21 22
P A A B B
P A A B
P A B B
P A B B
P A A B
P A A B B
P A A B B
= + +
= +
=
=
= +
= +
= +


Folosind matrcile de mai sus, se poate arta c:

11 1 4 5 7
12 3 5
21 2 4
22 1 3 2 6
C P P P P
C P P
C P P
C P P P P
= + +
= +
= +
= + +


Numrul total de operaii care se fac dac se folosete algoritmul clasic de nmulire a
matricilor este de n
3
=(2m)
3
=8m
3
nmuliri i n
3
-n
2
=(2m)
3
-(2m)
2
=8m
3
-4m
2
adunri.
Dac se aplic algoritmul lui Strassen, folosind la calculul matricilor P
i
nmulirea
clasic, numrul de operaii este: 7m
3
nmuliri i 7m
3
+11m
2
adunri. Dac 1 m
metoda lui Strassen face cam cum 1/8 mai puine operaii dect algoritmul classic.
Ideea algoritmului lui Strassen poate fi aplicat i la calculul matricilor P
i
. Dac
dimensiunea matricilor A i B este n=2
q
, algoritmul poate fi aplicat recursiv pn se
ajunge la blocuri de dimensiune 1. n practic, este indicat s se aplice recursiv
algoritmul lui Strassen pn cnd dimensiunea blocurilor A
ij
, B
ij
devine suficient de
mic (n n
min
=2
d
).
S se implementeze algoritmul lui Strassen de nmulire a dou matrici ptratice A i
B de dimensiune n=2
q
pn cnd n n
min
=2
d
:

C = multiply_Strassen (A, B, n, n_min)
sau
C = multiply_Strassen (A, B, q, d).