Maticové algoritmy I maticová algebra operácie nad maticami súčin matíc priesvitka
Maurits Cornelis Escher (898-97) Ascending and Descending, 960, Lithograph priesvitka
Matice V mnohých prípadoch dáta majú štruktúru dvojrozmernej tabuľky, ktorá má m riadkov a n stĺpcov. predmet Matematika Logika Programovanie A 88 98 67 B 75 9 7 C 9 8 75 D 98 00 98 E 55 6 8 Riadky tejto tabuľky sú priradené jednotlivým študentom, zatiaľ čo stĺpce sú priradené predmetom. Na priesečníku daného riadku (študent predmet) je uvedený počet bodov, ktoré získal daný študent pre daný predmet. študent Ak z tejto tabuľky odstránime redundantný popis riadkov a stĺpcov dostávame matematickú štruktúru, ktorá sa nazýva matica priesvitka
Definícia 8.. Nech I {,,...,m} J {,,...,n} = je množina riadkových indexov a = je množina stĺpcových indexov, pričom m a n sú kladné celé čísla, m,n. Maticou nazývame množinu obsahujúcu mn čísel (celočíselných, racionálnych alebo reálnych), ktoré sú špecifikované riadkovým (i) a stĺpcovým (j) indexom A = A ; i I,j J { ij } Typ matice je usporiadaná dvojica kladných prirodzených čísel, ktoré sú rovné mohutnostiam množín indexov I a J t A = m,n ( ) ( ) priesvitka 4
Množinová štruktúra matice A môže byť jednoducho znázornená pomocou tabuľky, ktorá obsahuje m riadkov a n stĺpcov, pričom na priesečníku i-tého riadku a j-tého stĺpca je umiestnený element A ij, j-tý stĺpec A = A ij i-tý riadok Používa aj skratkové označenie pre maticu A = ( A ij ), pričom sa implicitne predpokladá počet riadkov a stĺpcov tejto matice. Skutočnosť, že matica A má typ t A = m,n ( ) ( ) priesvitka 5
4 = 0 Príklad A, t ( A ) = (, ) B = ( 0 ), t ( B ) = ( 4, ) 4 = 0 A, t ( A ) = (, ) = X, t ( X ) = (, ) priesvitka 6
Základná terminológia () Ak m=n, matica sa nazýva štvorcová, v opačnom prípade matica sa nazýva obdĺžniková. () Prvky matice A ii sa nazývajú diagonálne, všetky diagonálne prvky tvoria diagonálu matice A= priesvitka 7
() Ak všetky prvky matice sú nuly, potom matica sa nazýva nulová matica. (4) Štvorcová matica, ktorá mimo diagonály má nulové prvky a na diagonále má aspoň jeden nenulový prvok sa nazýva diagonálna matica. (5) Špeciálny prípad diagonálnej matice je jednotková matica (budeme ju značiť E) všetky diagonálne elementy sú jednotky A ij ( i ( i j) = pre = 0 pre priesvitka 8
(6) Nech A je matica typu t(a) = (m,n), potom matica transponovaná k tejto matici, označená A T, sa vytvorí z matice A tak, že vzájomne zameníme stĺpce za riadky a naopak, potom t(a T ) = (m,n) (pozri obr. 8.). Názorne hovoríme, že matica A T vznikla z matice A jej preklopením okolo diagonály. Transponovaná matica je ilustrovaná príkladom T 0 = 0 priesvitka 9
(7) Štvorcová matica sa nazýva symetrická matica, ak platí A T =A. Jednoduchý príklad symetrickej matice je T 0 0 0 = 0 (8) Matica A typu (m,n) sa nazýva trojuholníková matica, ak pod diagonálou má nulové prvky a na diagonálne má nenulové prvky 0 0 0 5 0 0 0 priesvitka 0
(9) Ak A matica typu t(a) = (m,n) má počet riadkov (m) alebo počet stĺpcov (n) rovný, potom takáto špeciálna matica sa nazýva riadkový vektor (m = ) resp. stĺpcový vektor (n = ). Príklady riadkovej a stĺpcovej matice sú 0 A =, B = ( 0 ) Aplikáciou operácia transpozície, stĺpcový vektor sa mení na riadkový vektor a naopak, pre predchádzajúce dve matice dostaneme 0 T T A = ( 0 ), B = priesvitka
Príklad Pomocou riadkových alebo stĺpcových vektorov môžeme vyjadriť každú maticu ako kompozíciu týchto elementárnych matíc 88 98 67 75 9 7 A = 9 8 75 98 00 98 55 6 8 priesvitka
r r r r r 4 5 = = = = = ( 88 98 67) ( 75 9 7) ( 9 8 75) ( 98 00 98) ( 55 6 8) 88 98 67 75 9 7 = 9 = 8 = 75 98 00 98 55 6 8 t s, s, s A r r = r r r 4 5 alebo = ( ) A s s s. priesvitka
Operácie nad maticami () Nech matice A = (A ij ) a B = (B ij ) sú rovnakého typu, t(a) = t(b) = (m,n). Hovoríme, že tieto matice sa rovnajú, A = B, vtedy a len vtedy, ak i I j J A = B ( ) ( )( ij ij ) () Nech matice A = (A ij ) a B = (B ij ) sú rovnakého typu, t(a) = t(b) = (m,n). Hovoríme, že matica B je α-násobkom matice A, B = αa, vtedy a len vtedy, ak i I j J B =α A ( ) ( )( ij ij ) priesvitka 4
() Nech matice A = (A ij ), B = (B ij ) a C = (C ij ) sú rovnakého typu, t(a) = t(b) = t(c) = (m,n). Hovoríme, že matica C je súčtom matíc A a B, C = A + B, vtedy a len vtedy, ak i I j J C = A + B ( ) ( )( ij ij ij ) (4) Matica A = (A ij ) je typu t(a) = (m,k), matica B = (B ij ) je typu t(b) = (k,n) a matica C = (C ij ) je typu t(c) = (m,n). Hovoríme, že matica C je súčinom matíc A a B, C = AB, vtedy a len vtedy, ak k ( i I) ( j J) cij = aipbpj = ai bj + ai b j +... + aikbkj p= m C A i-tý riadok = m n k k c ij j-tý stlpec B n priesvitka 5
Súčin dvoch matíc A a B môže byť podstatne zjednodušená použitím riadkových vektorov matice A a stĺpcových vektorov matice B. Nech r i je i-tý riadkový vektor matice A a s j je j-tý stĺpcový vektor matice B, potom element C ij je zadaný takto B j B k j Cij = ri s j = ( Ai A i... Aik ) = AilBlj... l= B kj priesvitka 6
Príklad Násobenie matíc a a b b 0 A, B = a a = = = b b Definujem riadkové vektory matice A a stĺpcové vektory matice B r = ( ), r = ( ) s 0 =,s = priesvitka 7
Potom elementy matice C = AB sú určené takto C = r s = ( ) = ()( ) + ( )() = 0 C = r s = ( ) = ( )( 0) + ( )( ) = 4 C = r s = ( ) = ( )( ) + ( )( ) = 4 0 C = r s = ( ) = ( )( 0) + ( )( ) = 6 Potom súčin AB je určený 0 4 AB = = 4 6 0 BA = = 8 priesvitka 8
(0) Súčin matíc nie je komutatívna operácia AB BA () Súčin je asociatívny A(BC)=(AB)C () Súčin je distributívny vzhľadom k súčtu matíc (A+B)C=AC+BC A(B+C)=AB+AC () Asociatívnosť operácia násobenia vektora číslom vzhľadom k operácii súčin matíc A(αB)=α(AB) priesvitka 9
Algoritmus pre násobenie matíc procedure matrix_multiplication; for i:= to m do for j:= to n do begin sum:=0; for l:= to k do sum:=sum+a[i,l]*b[l,j]; C[i,j]:=sum; end; Môžeme teda konštatovať, že zložitosť algoritmu rastie úmerne n, pričom sa predpokladá, že dimenzie matíc sú si rovné, k = m = n. Je prekvapujúce, že už tak jednoduchý algoritmus akým je tento, môže byť podstatne akcelerovaný, bol 7 navrhnutý algoritmus, ktoré ho zložitosť rastie n, pretože 7 <, tento nový algoritmus je o trochu efektívnejší ako náš algoritmus. priesvitka 0
Problém násobenia reťazca matíc Nech pre n matíc A, A,, A n, ktoré sú typu t(a i ) = (p i,q i ), platí podmienka, že pre susedné matice A i a A i+ existuje ich súčin q i = p i+ pričom typ súčinu týchto matíc je t(a i A i+ ) = (p i,q i+ ) Pre výpočet maticového súčinu A i A i+ je potrebných elementárnych súčinov. ( AA ) m = p q q i i+ i i i+ priesvitka
Problém: Koľko elementárnych súčinov potrebujeme pre výpočet súčinu n matíc A A... A n K tomu, aby sme vypočítal počet elementárnych súčinov potrebných pre výpočet súčinu matíc AA... A n musíme určiť jeho zátvorkovanie, napr. (( ) ) (( A ) ) A A A4... A n priesvitka
Úloha: Koľko rôznych zátvorkovaní existuje pre súčin n matíc AA... A n Riešenie: Označme počet alternatív zátvorkovania reťazca n matíc symbolom P(n). Generovanie zátvorkovania môžeme uskutočniť rekuretným spôsobom: Nech U k je množina, ktorá obsahuje reťazce k matíc pre rôzne zátvorkovanie, kde k =,,..., n. Potom množinu U n vytvoríme tak, že pre všetky možné dvojice podmnožín U n-k a U k vytvoríme možné zátvorkovanie U = U U U U... U U U U n n n n n priesvitka
Potom počet rôznych zátvorkovaní reťazca n matíc je ( ) P n n i= ( pre n ) = = P k P n k pren ( ) ( ) ( ) V literatúre sa dokazuje, že počet zátvorkovaní je určené pomocou binomiálneho koeficienta ( ) P n ( n ) ( n )! n ( ) ( ) = = n n! n! priesvitka 4
Prvé hodnoty P(n) sú () ( ) ( ) ( ) ( ) P =,P =,P =,P 4 = 5,P 5 = 4,... Z tejto formuly môžeme odvodiť aj rekurentný vzťah ( ) P n+ = ( n ) n + ( ) P n z ktorého môžeme odvodiť asymptotický vzťah lim P n 4 n ( ) n πn priesvitka 5
Ilustračný príklad U ={ } U U U = U U = { } { }={ } = U U U U= { } { } { }{ }={, } = U U U U U U={,,,, } 4 U U U U U U priesvitka 6
Problém: Navrhnúť také zatvorkovanie súčinu n matíc AA... A n, ktoré obsahuje minimálny počet elementárnych súčinov Časová zložitosť tejto úlohy rastie exponenciálne s počtom matíc v súčine tcpu Riešenie problému patrí teda medzi časovo veľmi zložité úlohy. 4 n priesvitka 7
Ilustračný príklad Budeme študovať súčin štyroch matíc AAAA, 4 tieto matice majú typy ( A ) = ( 45) ( A ) = ( 5) ( A ) = ( 5) ( A ) = ( 5) t,,t,,t,,t, 4 Pre tieto matice vytvoríme postupnosť dimenzií matíc (predpokladáme, že podmienky q i = p i+ pre existenciu súčinu matíc A i A i+ sú splnené) ( 455,,,, ) priesvitka 8
(4,5,,5,) 60 75 0 60 60 0 50 00 0 40 4 40 40 40 Σ=60 Σ=4 Σ=65 Σ=5 Σ=00 ( ) ( ) 4 Optimálne zátvorkovanie má tvar ( ) elementárnych súčinov. A A A A, ktoré potrebuje 84 priesvitka 9
Greedy približný algoritmus Na každej úrovni akceptujeme také zátvorkovanie, ktoré vyžaduje minimálny počet elementárnych súčin. (4,5,,5,) 60 75 0 60 0 40 Σ=00 priesvitka 0
P = (4,5,,5,) Σ =4 5 +4 5+4 5 =60 Σ=4 5 + 5 +4 =4 Σ=5 5+5 5 +4 5 =65 Σ=5 5+4 5 5+4 5 =5 Σ= 5 +5 +4 5 =00 priesvitka
Binárne matice Matica A { 0,} m { 0, } n, ktorá obsahuje len binárne elementy 0- sa nazýva binárna matica. Algebraické operácie nad takýmito maticami sú založené na logických spojkách konjunkcie a disjunkcie ( a b ) ( ) ak a b= = = 0 ináč ( a b ) ( ) 0 ak 0 a b= = = ináč priesvitka
Nad binárnými maticami definujeme tri binárne operácie: () Nech A = (A ij ) a B = (B ij ) sú binárne matice rovnakého typu t(a) = t(b) = (m,n), potom matica C = (C ij ) sa nazýva konjunkcia matíc A a B, C = A B, jej maticové elementy sú i I j J C = A B ( ) ( )( ij ij ij ) () Nech A = (A ij ) a B = (B ij ) sú binárne matice rovnakého typu t(a) = t(b) = (m,n), potom matica C = (C ij ) sa nazýva disjunkcia matíc A a B, C = A B, jej maticové elementy sú i I j J C = A B ( ) ( )( ij ij ij ) priesvitka
() Nech binárna matica A = (A ij ) je typu t(a) = (m,k), binárna matica B = (B ij ) je typu t(b) = (k,n) a binárna matica C = (C ij ) je typu t(c) = (m,n). Hovoríme, že matica C je súčinom matíc A a B, C = A B, jej maticové elementy sú ( ) ij i j i j ik k ( i I) ( j J) C ( A B ) ( A B )... ( A B ) = Pretože súčin binárnych matíc je asociatívna operácia, môžeme definovať r-tú mocninu štvorcovej binárnej matici A = (A ij ), kde r je kladné celé číslo r > =... r A A A A r krát priesvitka 4
Interpretácia súčinu binárnych matíc Binárna matica môže byť chápaná ako maticová reprezentácia binárnej relácie R X X X = x,x,...,x. Element A 0 implikuje, že usporiadaná, kde { } dvojica ( x,x i j) n ij R. Jednoduchými úvahami je možné dokázať, že matica A = A Aje reprezentáciou kompozície R = R R. Pomocou grafovej interpretácie relácie R a jej mocnín, môžeme potom alternatívne interpretovať n-té mocniny matice A tak, že ak má jednotkový element v pozícii (i,j), potom existuje postupnosť n hrán z i-tého vrcholu grafu do j-tého vrcholu grafu. priesvitka 5
priesvitka 6 Diagramatická interpretácia mocnín binárnej matice R R R R R R R R R R 4 R R 4 R 5 A B C D E
Príklad Nech A a B sú binárne matice 0 0 0 A =, B = 0 0 Zostrojte súčin A B. 0 0 0 0 0 A = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 = 0 0 0 0 = 0 0 0 0 0 0 ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) priesvitka 7
Zostrojte všetky mocniny matice A Príklad 0 0 = 0 0 0 V prvom kroku spočítame A 0 = = 0 0 0 A A A priesvitka 8
Postupne v ďalších krokoch spočítame vyššie mocniny matice 0 = = 0 A A A, = = 0 4 A A A, = = 5 4 A A A Poznamenajme, že tieto mocniny matice A môžeme jednoducho určiť pomocou grafovej interpretácie relácie R, pozri obr. 8.6. Potom vyššie mocniny matice A sú určené n 5 ( n 5 ) A = A = priesvitka 9
The End Maurits Cornelis Escher (898-97) priesvitka 40