În acest capitol vom demonstra optimalitatea unor algoritmi ce intervin (sau pot fi formulati) în calculul matricial.
Notiunea de algoritm liniar
Fie K un corp comutativ. Un algoritm liniar este un ansamblu format din:
o multime de nedeterminate a1,...,an ce nu apartin lui K, numite intrari;
o multime finita de (nume de) variabile, distincte de intrari si de elementele lui K
o secventa finita de pasi de forma a b c, unde:
a este o variabila care nu a aparut în pasii precedenti;
b si c sunt fie intrari, fie variabile ce au primit valoare (au aparut în st 151h76b ânga semnului ) în pasii precedenti.
Vom scrie prescurtat a b si a -b în loc de a 0+b, respectiv a 0-b
Algoritmii liniari se executa pas cu pas, începând cu primul si terminând cu ultimul.
Pentru a putea preciza rezultatul executarii unui algoritm, vom introduce notiunea de valoare v(a) a unei intrari sau variabile a astfel:
v(a)=a daca a este intrare;
v(a)=v(b) v(c) daca unicul pas în care a primeste valoare este a b c
Rezulta ca v(a) K[a1,...,an], unde K[a1,...,an] este inelul polinoamelor peste K în a1,...,an si este spatiu vectorial peste K
Spunem ca un algoritm liniar calculeaza E K[a1,...,an] daca pentru orice e E, exista în algoritm o variabila f cu v(f)=e
Exemplul 1. Fie K=R. Un algoritm liniar ce calculeaza produsul (a+bi)(c+di)=ac-bd + i(ad+bc) a doua numere complexe este urmatorul:
f1 a * c v(f1)=ac
f2 b * d v(f2)=bd
f3 f1 - f2 v(f3)=ac-bd
f4 a * d v(f4)=ad
f5 b * c v(f5)=bc
f6 f4 + f5 v(f6)=ad+bc
deoarece calculeaza E= R[a,b,c,d]
Un alt algoritm liniar pentru aceeasi problema este urmatorul:
f1 a * c v(f1)=ac
f2 b * d v(f2)=bd
f3 f1 - f2 v(f3)=ac-bd
f4 a + d v(f4)=a+b
f5 c + d v(f5)=c+d
f6 f4 * f5 v(f6)=(a+b)(c+d)
f7 f6 - f1 v(f7)=ad+bc+bd
f8 f7 - f2 v(f8)=ad+bc
care foloseste însa doar 3 înmultiri.
Observatie. Multe calcule se pot reprezenta ca produsul dintre o matrice si un vector. De exemplu produsul de numere complexe de mai sus se poate scrie:
Ne vom îndrepta atentia asupra numarului de înmultiri, deoarece efectuarea unei înmultiri necesita mai mult timp decât o adunare; în plus, în exemplele tratate, numarul de adunari/scaderi nu va depasi numarul de înmultiri.
Fie K un corp comutativ si fie Km[a1,...,an] spatiul vectorial al vectorilor cu m componente din K[a1,...,an]
Fie v1,...,vk Km[a1,...,an]. Spunem ca v1,...,vk sunt liniar independenti (modulo Km) daca "a ak K cu a v1+...+akvk Km a ak
Fie Ml,c(K[a1,...,an]) spatiu vectorial peste K al matricilor cu l linii si c coloane. Cum elementele unor astfel de matrici apartin unui inel si nu unui corp, rangul pe linii nu coincide neaparat cu cel pe coloane. De exemplu matricea:
are rangul pe linii egal cu 2, iar rangul pe coloane egal cu 3.
Fie si doua multimi disjuncte de nedeterminate ce nu fac parte din K
Fie M Ml,c(K[a1,...,an]) si fie x vectorul coloana x=(x1,...,xc)T. Ne punem problema determinarii numarului de înmultiri necesare calculului produsului Mx
Rangul pe linii al matricilor
Teorema 1. Daca rangul pe linii al lui M este r, atunci orice algoritm liniar ce calculeaza produsul Mx necesita cel putin r pasi de înmultire.
Vom numara numai înmultirile în care nici un factor nu este din K. Presupunem ca primele linii din M sunt liniar independente. Fie M' matricea formata din primele l linii ale lui M. Cum orice algoritm ce calculeaza Mx calculeaza si M'x, putem presupune ca l=r
Fie e1,...,es K[a1,...,an,x1,...,xc] rezultatele pasilor de înmultire efectuati în calculul produsului Mx. Vom arata ca s r
Mx se poate scrie Mx=Ne+f, unde N Ml,s(K), iar f are ca elemente functii liniare în a1,...,an,x1,...,xc
Sa presupunem ca r>s. Atunci matricea N, cu elemente în corpul K, are mai multe linii decât coloane, deci liniile sale sunt liniar dependente. Rezulta ca exista y1,...,yr K nu toti nuli, cu yTN=0T
yTMx = yTNe + yTf = yTf
Cum yTf, deci si (yTM)x este liniar în a1,...,an,x1,...,xc, rezulta ca elementele vectorului yTM sunt din K, adica liniile lui M sunt liniar dependente. Contradictie, deoarece rangul pe linii al lui M este r
Rangul pe coloane al matricilor
Lema. Fie v1,...,vk Km[a1,...,an] dintre care cel putin p sunt liniar independenti (modul Km). Fie v'i=vi+biv1 cu bi K, "i=2,...,k. Atunci în apar cel putin p-1 vectori liniar independenti.
Deosebim doua cazuri:
Daca v1 apare printre cei p vectori liniar independenti.
Fie v1,...,vp vectorii liniar independenti. Aratam ca v'2,...,v'p sunt liniar independenti.
Fie a ap K cu a v'2+...+apv'p Km
a v2+...+apvp+(a b2+...+apbp)v1 Km a ap
Daca v2,...,vp+1 sunt liniar independenti.
Daca v'2,...,v'p sunt liniar independenti, s-a obtinut rezultatul dorit.
În caz contrar, exista a ap K nu toti nuli, cu a v'2+...+apv'p Km
Fie w=a v1+a v2+...+apvp Km, unde a a b2+...+apvp
Sa observam ca a , pentru ca daca a , atunci v2,...,vp ar fi liniar independenti.
Atunci v1 = a [w-(a v2+...+apvp)]
si putem presupune ca a
Daca v'3,...,v'p+1 sunt liniar independenti, s-a obtinut rezultatul dorit.
În caz contrar, exista b bp+1 K nu toti nuli, cu b v'3+...+bp+1v'p+1 Km
Fie w'=β1v1+ β3v3 +...+ βp+1vp+1 Km, unde β1=β3b3+...+apvp
Sa observam ca , pentru ca daca , atunci v3,...,vp+1 ar fi liniar independenti.
Atunci v1 = β1-1 [w'-(β3v3+...+ βp+1vp+1)] (2)
Egalam cele doua expresii ale lui v1 din (1) si (2) si înmultim cu a
β1w-β1(a v2+...+apvp) = a w'-a (β3v3+...+ βp+1vp+1)
Rezulta ca o combinatie liniara a vectorilor v2,...,vp+1, în care coeficientul lui v2 este a , este egala cu β1w-a w' Km. Contradictie, deoarece v2,...,vp+1 sunt liniar independenti.
În continuare vom întelege prin înmultire activa o înmultire în care un factor contine o nedeterminata xi, iar celalalt factor nu este din K
Altfel spus, A.B este înmultire activa daca v(A) K[a1,...,an] si v(B) K (sau invers).
De exemplu axi βai aiaj cu a b K nu sunt active (deci în esenta o înmultire activa presupune o înmultire dintr-un xi si un aj
Teorema 2. Daca rangul pe coloane al lui M este r, atunci orice algoritm ce calculeaza Mx+y, unde y Kl[a1,...,an], necesita cel putin r înmultiri active.
Facem demonstratia prin inductie dupa r
Pentru r=1, din ipoteza rezulta ca exista mij K[a1,...,an]\K. Atunci:
(Mx+y)i = mi1x1+...+mijxj+...+micxc+yi contine înmultirea activa mijxj
Presupunem proprietatea din enunt adevarata pentru r si o demonstram pentru r+1
Fie A un algoritm ce calculeaza Mx+y. Punem în evidenta prima înmultire activa f g.h cu:
cu g , iar v(h) K
Observam ca pentru (*)
obtinem v(g)=0, deci v(f)=0
Construim un nou algoritm A' astfel:
prima instructiune este (*);
urmeza A în care f g.h se înlocuieste cu f
În A' apare o multime activa în minus. Este suficient sa arat ca ceea ce calculeaza A' necesita cel putin r-1 înmultiri active.
A' calculeaza Mx'+y, unde x'=(,x2,...,xc)
Putem scrie Mx'+y=N+y', unde:
N=M, iar y'=M+y
Se observa ca în y' nu apar x1,...,xc
Fie n1,...,nl liniile lui N
ni=-mi1g g x2+...+gcxc)+mi2x2+...+micxc
ni=(mi2-g g mi1)x2+...+(mc-g g m1)xc
Daca notam prin m1,...,mc coloanele lui M, atunci:
N=(m2-g g m1)x2+...+(mc-g g m1)xc
Deci putem scrie N=M'(x2,...,xc)T, unde M' are l linii si c-1 coloane.
Conform lemei de mai sus, rezulta ca M' are cel putin r-1 coloane liniar independente. Deducem ca A' necesita cel putin r-1 înmultiri active, deci A necesita cel putin r înmultiri active.
Consecinta 1. Fie A o matrice cu m linii si n coloane, iar x un vector cu n elemente. Atunci produsul Ax necesita cel putin m.n înmultiri.
Produsul Ax mai poate fi scris si sub forma:
unde rangul pe coloane al noii matrici ce intervine în produs este m.n
Consecinta 2 Schema lui Horner este optima ca numar de înmultiri.
stim ca schema lui Horner calculeaza valoarea unui polinom de grad n
P(x)=a0+a1x+...+anxn
folosind n înmultiri. Dar P(x) se mai poate scrie:
P(x)=(1 x ... xn)(a0 a1 ... an)T
Cum rangul pe coloane al matricii (1 x ... xn) este n, rezulta ca sunt necesare cel putin n înmultiri.
Propozitie. Schema lui Horner este optima si ca numar de adunari/scaderi.
Fie A un algoritm liniar ce calculeaza P(x). Consideram algoritmul A' în care:
prima instructiune este s
urmeaza algoritmul A în care x este înlocuit cu s
A' calculeaza a0+...+an
Aratam prin inductie dupa n ca A' necesita cel putin n adunari/scaderi.
Pentru n=1, calculul a0+a1 necesita cel putin o adunare, deoarece în caz contrar putem calcula doar expresii de forma
Presupunem afirmatia din enunt adevarata pentru n-1 si demonstram ca este adevarata si pentru n
Deoarece în A' nu e posibil ca în toate adunarile sa apara numai termeni din K, rezulta ca va exista un pas la care apare cu a . Putem presupune ca apare an. Daca înlocuim pe an cu , noul algoritm va calcula a0+...+an-1 si are o adunare/scadere mai putin.
Rangul pe linii si coloane al matricilor
Teorema 3 Fie S Mm,d(K[a1,...,an]) o submatrice a lui M astfel încât:
daca pentru "u Km si v Kd cu uTSv K u=0 sau v=0
atunci orice algoritmul liniar ce calculeaza Mx necesita cel putin m+d-1 înmultiri.
Printr-o permutare de linii si coloane, putem presupune ca M are forma:
l
Putem
neglija ultimele l-m linii si
atunci M are forma:
cu l=m linii.
Vom întelege în continuare prin înmultiri numai produsele în care nici un factor nu este din K
Fie A un algoritm liniar ce calculeaza Mx si fie:
e1,...,es K[a1,...,an,x1,...,xc]
rezultatele (în ordinea calculului lor) a celor s pasi de înmultire.
Atunci putem scrie Mx=Ne+f unde N Ml,s(K), iar elementele lui f sunt liniare în a1,...an,x1,...,xc
Daca l>s, atunci liniile matricii N sunt liniar dependente, deci exista y Kl cu yTN=0. Atunci yTMx=yTf, ceea ce este posibil doar daca yTM are toate elementele în K. Aleg atunci z=(1,...,1,0,...,0)T cu d de si l de si obtinem yTSz K cu y≠0 si z≠0. Contradictie.
Rezulta ca l≤s. Atunci N are forma:
Notând prin e' primele s-l+1, iar prin e" ultimele l-1 elemente din e, putem scrie Mx=N1e'+N2e"+f
Cum liniile din N2 sunt liniar dependente, exista y Kl cu yTN2=0. Atunci yTMx=yTN1e'+yTf. Fie M'=yTM. Deci M'x poate fi calculata folosind |e'|=s-l+1 pasi de înmultire (conform modului în care au fost alese e1,...,es
Daca am sti ca d dintre coloanele (elementele) lui M' sunt liniar independente, ar rezulta ca pentru calculul lui M'x sunt necesare cel putin d înmultiri, ar rezulta ca s-l+1 d, deci s l+d-1=m+d-1, ceea ce trebuia demonstrat.
Aratam ca primele d coloane ale lui M' sunt liniar independente. Ele sunt:
, j=1,...d
Daca aceste coloane ar fi liniar dependente, ar exista z Kd cu , adica yTSz K. Contradictie.
Aplicatie. Produsul (a+bi)(c+di) necesita cel putin 3 înmultiri de numere reale.
Calculul produsului revine la înmultirea de matrici:
Aratam ca matricea joaca rolul matricii S din Teorema 3.
Fie y1,y2,z1,z2 R cu:
R
Atunci y1(az1-bz2)+y2(by1+az2) R cu a,b nedeterminate. Obtinem sistemul omogen în z1,z2
y1z1+y2z2=0
y2z1-y1z2=0
Determinantul este D=-(y12+y22)
Daca D atunci y1=y2=0
Daca D atunci z1=z2=0 (sistemul este omogen).
Conform Teoremei 3, rezulta ca sunt necesare cel putin 3 înmultiri. Amintim ca la începutul capitolului am prezentat un algoritm liniar ce calculeaza produsul a doua numere complexe folosind 3 înmultiri (de numere reale); deci acel algoritm este optim.
|