160 likes | 395 Views
Linearne strukture. Polja jednodimenzionalna (nizovi, vektori) dvodimenzionalna (matrice) višedimenzionalna (tenzori višeg reda) Povezani popis Stogovi Redovi. Matrica (1/2). Pravokutna shema podataka, svojstva: - podaci su raspoređeni u M redaka i N stupaca
E N D
Linearne strukture Polja jednodimenzionalna (nizovi, vektori) dvodimenzionalna (matrice) višedimenzionalna (tenzori višeg reda) Povezani popis Stogovi Redovi
Matrica (1/2) Pravokutna shema podataka, svojstva: - podaci su raspoređeni u M redaka i N stupaca - svi elementi istog tipa - direktan pristup svakom elementu Matricu A označavamo preciznije AMN
Matrica (2/2) Poseban slučaj: M=Nkvadratna matrica
Problem množenje matrica (1/2) ZADANO: Matrica A s m redaka i n stupaca Matrica B s n redaka i k stupaca TRAŽI SE: Formirati matricu C = A•B, koja ima m redaka i k stupaca - svaki rezultat Ci,j jeste skalarni produkt i-tog retka matrice A i j-tog stupca matrice B!
Problem množenje matrica (2/2) AlgoritamMNOŽENJEMATRICA Zasvakii=1 dom Zasvakij=1 dok Ci,j = 0 Zasvakip=1 don Ci,j = Ci,j + Ai,p•B p,j VremenskasloženostalgoritmajesteO(mnk)
Problem “magičnog kvadrata” neparnog reda (1/5) ZADANO: neparan prirodni broj m, m>1 TRAŽI SE: formirati kvadratnu matricu Amm popunjenu brojevima tako da sume svih redaka i stupaca i obiju dijagonala budu međusobno jednake
Problem “magičnog kvadrata” neparnog reda (2/5) Primjer za m=5 05 04 10 03 09 15 03 16 09 22 15 02 08 14 2020 08 21 14 02 01 07 13 19 25 07 25 13 01 19 06 12 18 2424 1205 18 06 11 17 23 11 04 17 10 23 16 22 21 Slika a) Slika b)
Problem “magičnog kvadrata” neparnog reda (3/5) Algoritam MAGIČNI KVADRAT NEPARNOG REDA Učitatim/* m mora biti neparan*/ /* Popuniti matricu prema slici a) procedurom Popuni */ Pozvati proceduru Popuni(A,m) /* Obaviti prebacivanja u matrici da bi se dobila slika b) */ Pozvati proceduru Prebaci(A,m,”lijevo”) Pozvati proceduruPrebaci(A,m,”desno”) Pozvati proceduruPrebaci(A,m,”gore”) Pozvati proceduruPrebaci(A,m,”dolje”) /*Ispisati matricu A od m/2+1 do m/2+m procedurom Ispis*/ Pozvati proceduru Ispis(A,m)
Problem “magičnog kvadrata” neparnog reda (4/5) Algoritam procedure Popuni(A,m) Za svakii = 1 do 2m1 činiti Za svakij = 1 do 2m1 činitiAi,j = 0 i = m/*Počni od srednjeg reda */ j = 1 /* Počni od lijevog stupca */ n = 1 Sve dok jenm2 činiti Ai,j = n Smanjiti i za 1 /* Kreni red gore */ Povećati j za 1 /* Kreni stupac u desno */ Povećati n za 1 /* Idući broj u matrici */ Ako jen1 djeljivo s monda Povećati i za m+1 /* Ponovo počni red niže...*/ Smanjiti j za m1 /* .. i stupac dalje */
Problem “magičnog kvadrata” neparnog reda (5/5) Algoritam procedure Prebaci(A,m,način) Ako jenačin = “dolje” onda Za svakij=1 dom/2 činiti Za svakii=1 do 2m-1 činiti Ako jeAi,j0 ondaAi+m,j=Ai,j Ako jenačin = “gore” onda .... Prebacivanja u ostalim smjerovima su analogna prebacivanju na “dolje” Vremenska složenost cijelog algoritma je O(m2)
Problem invertiranja matrice (1/6) ZADANO: Kvadratna matrica Amms m redaka i m stupaca TRAŽI SE: Formirati inverznu matricu A-1
Problem invertiranja matrice (2/6) Gaussova metoda invertiranja! A•A-1 = I X1•A•A-1 = X1•I X2•X1•A•A-1 = X2•X1•I X3•X2•X1•A•A-1 = X3•X2•X1•I Xn•...•X3•X2•X1•A•A-1 = Xn•...•X3•X2•X1•I Ako Xn•...•X3•X2•X1•A postane I onda je lijeva strana jednaka I•A-1 tj. A-1, pa je tome jednaka i desna strana: Ako se nizom transformacija (što odgovara množenju s Xi) početna matrica pretvori u jediničnu, tim istim transformacijama se jedinična pretvori u inverznu! Xn•...•X3•X2•X1•A•A-1 = Xn•...•X3•X2•X1•I
Problem invertiranja matrice (3/6) Algoritam INVMAT Za svakii=1 domčiniti /* najprije formiramo ‘blok’*/ Za svakij=m+1 do 2mčiniti/* matricu, desno od A */ Ako je i=j mondaAi,j=1 /* dodamo jediničnu */ U suprotnom Ai,j=0 /* matricu */ d=1, i=1 Sve dokjei<m i d0 činiti Ako jeAi,i=0 ondaPozvati proceduru Zamjena(i,d) Ako jed 0 ondaPozvati proceduru Redukcija(i,d) i = i + 1 Pozvati proceduru Ispis(d) Vremenska složenost ovisi o procedurama koje se pozivaju
Problem invertiranja matrice (4/6) Algoritam procedure Zamjena(i,d) Za svaki k = i+1 domčiniti Ako je Ak,i 0 onda Za svakij = idomčiniti Pozvati proceduru Zamjeni( Ak,j, Ak,i ) d = d Završi proceduru d = 0 Vremenska složenost procedure je O(m2)
Problem invertiranja matrice (5/6) Algoritam procedure Redukcija(i,d) d = d • Ai,i Za svakij = 2munazad doičiniti Ai,j = Ai,j / Ai,i Za svakik = 1 dom i ki Za svakij = 2munazad do i činiti Ak,j = Ak,j Ai,j •Ak,i Vremenska složenost procedure je O(m2)
Problem invertiranja matrice (6/6) Algoritam procedure Ispis(d) Ako je d = 0 onda Ispiši “Matrica nema inverznu” U suprotnom Ispiši “Inverzna matrica je: ” Za svakii = 1 domčiniti Za svakij = m+1 do 2mčiniti IspišiAi,j Vremenska složenost procedure je O(m2) Vremenska složenost cijelog algoritma je O(m3)