PERKALIAN MATRIX ALGORITMA ALGORITMA STANDAR STANDAR DAN STRASSEN
Disusun oleh : Jaladri Abhirama (PA/09970) Didit Yudha S. (PA/10158) Desti Ayu K. (PA/10279) Arshadie Sadrifa (PA/10346) Tarcisus Tarcisus Dimas W. K Rahmad Mulyadi (PA/11056) (PA/11056) M. Andi Miftachul H. Erika Ariana (PA/10863) Ary Novianto (PA/10923)
Satryo Puji H. (PA/11280)
Perkali erkalian an matr matrik ikss merup merupak akan an suat suatu u opera operasi si yang yang pent pentin ing g kare karena na banyak banyak digunak digunakan an untuk untuk memeca memecahka hkan n masala masalah h yang yang berkait berkaitan an dengan dengan duni dunia a nyat nyata, a, terut terutam ama a untu untuk k kepent epentin inga gan n sa sain inss dan reka rekayas yasa. a. Apli Aplika kasi si perkalian matriks secara spesifik misalnya dalam pengolahan suatu citra untuk melakukan perubahan bentuk dari suatu gambar dalam suatu grafik komputer misalnya scalenya, gray levelnya, rotasi gambarnya dan masih banyak lagi perubahan bentuk yang bisa dilakukan dengan menggunakan perkalian matriks. Suatu perkalian matriks juga digunakan dalam menata komposisi satu set persamaan linear, dan penyajian tentang permasalahan alur alur pali paling ng pend pendek. ek. Perkal erkalia ian n matr matrik ikss pun pun bias biasan anya ya digu diguna naka kan n untu untuk k mengatasi permasalahan dalam linear programming yaitu dalam optimasi manajemen misalnya dalam pengambilan suatu keputusan. Ada bebe bebera rapa pa algo algori ritm tma a yang yang dici dicipt ptak akan an untu untuk k meny menyel eles esai aika kan n perkalian matriks yaitu :
1. Algori Algoritm tma a Standa Standar r
Adalah sebuah perkalian matriks yang dikerjakan dengan cara biasa. Misalnya :
Perhitungannya :
C11 = a11b11 + a12b21
C12 = a11b12 + a12b22
C21 = a21b11 + a22b21
C22 = a21b12 + a22b22
İmplementasi program dari Algoritma biasa ditunjukkan dibwah ini : void matrix_mult (){ for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { compute Ci,j } }}
Time analysis Perhitungan waktu untuk algoritma biasa adalah
N
C i , j = ∑ ai ,k bk , j k =1 N
N
N
Thus T ( N ) = ∑ ∑ ∑ c = cN 3 = O ( N 3 ) i =1 j =1 k =1
2. ALGORITM ALGORITMA A STRASS STRASSEN EN
Adala dalah h se sebu buah ah algo algori ritm tma a untu untuk k perk perkal alia ian n matr matrik ikss yang yang terd terdir irii dari dari 7 perkalian scalar dan 18 penjumlahan scalar untuk matriks berukuran 2X2, mempunyai kompleksitas O(n2.81) atau tepatnya 6n2.81 perkalian scalar dan (6n2.81 + 6n2) penjumlahan. Perumusan perkalian matriks yang digunakan Strassen untuk memperoleh 7 perk perkal alia ian n scal scalar ar dan dan 18 penj penjum umla laha han n skal skalar ar ters terseb ebut ut adal adalah ah deng dengan an melakukan perkalian matrik 2x2 yang ditunjukkan pada persamaan berikut :
dengan melakukan pendekatan 11 langkah berikut : P1=(A11+A22)(B11+B22) P2=(A21+A22)*B11 P3=A11*(B12-B22)
P4=A22*(B21-B11) P5=(A11+A12)*B22 P6=(A21-A11)*(B11+B12) P7 = (A12 - A22) * (B21 + B22) Kemudian Strassen melakukan langkah berikutnya dengan menggunakan 7 rumus diatas kedalam matriks C : C11=P1+P4-P5+P7 C12=P3+P5 C21=P2+P4 C22 = P1 + P3 - P2 + P6
Metode divide and conquer
Prinsip dasar dari metode ini adalah dengan membagi n input menjadi input yang berbeda ( 1 < k < n ). Dari k subset input yang berbeda akan terdapat terdapat k sub-problem. Setiap sub-problem mempunyai solusinya masing-masing, sehi se hing ngga ga akan akan dipe dipero role leh h k subs subsol olus usi. i. Kemudi emudian an,, dari dari k subsub-so solu lusi si akan akan
diperoleh solusi yang optimal atau solusi yang diharapkan.
Metode divide and conquer Jika Jika subpr subprobl oblem em diang diangga gap p masi masih h rela relati tiff besa besarr, maka maka meto metode de Divi Divide de and and Conqu Conquer er dapat dapat digunakan lagi. Dalam keadaan tersebut, pemakaian ulang metode ini dinyatakan menggunakan teknik rekursif.
Strassen dapat diselesaikan dengan metode divide dan conquer A B = R A0
A1
B0
B1
A0 B0+A1
A0 B1+A1 B3
B2
A2
A3
B2
B3 A2 B0+A3
A2 B1+A3 B3
B2
• •
•
Divide matrices into sub-matrices: A0 , A1, A2 etc Use blocked matrix multiply equations Recursively multiply sub-matrices
TIME ANALYSIS •
anal analis isa a Komp Komple leks ksit itas as Divide and Conquer
Algo Algori ritm tma a
Stra Strass ssen en
deng dengan an
Meto Metode de
Dalam suatu perkalian matriks misal dua buah matriks A dan B dimana dua matriks matriks tersebut tersebut berordo berordo N X N . kemudian misalkan misalkan C merupakan merupakan hasil kali matriks A dan B . dimaNA C=AB Apabila kita membagi n x n matriks ke dalam 4 submatriks yang sama, dimana dimana masingmasing-mas masing ing adalah adalah : n/2 x n/2 matriks matriks (bertu (berturut rut-tu -turut rut untuk untuk membagi B ), dimana akan menghasilkan matriks c. metode divide dan conquer conquer bisa bisa diguna digunaka kan n untuk untuk operas operasii perkali perkalian an matrik matrikss karena karena masing masing-masi masing ng hasi hasill opera operasi si itu itu akan akan meng mengha hasi silk lkan an suat suatu u subm submat atrik rikss C. lebi lebih h jelasnya akan dijelaskan :
Lakukan perhitungan yang sama untuk mencari C12 , C21 , dan C22 . Dari persamaan diatas, maka kesulitan sebenarnya adalah membagi menjadi 8 bagi bagian an subp subprroble oblem m yang yang sa sama ma.. Namu Namun n bisa bisa dise disele lesa saiikan deng dengan an persamaan berikut :
dimana nilai c adalah konstan , cn2 merupakan persamaan yang digunakan untuk biaya penjumlahan penjumlahan ( terdiri terdiri dari n/2 x n/2 penjumlahan) penjumlahan) . dan terdapat 8 perkalian n/2 x n/2 matriks . waktu Maka akan menghasilkan kompleksitas waktu sebesar O( n3 ). •
Metode Metode Divide Divide dan Conque Conquer r untuk untuk Penyel Penyelesa esaian ian Algor Algoritm itma a Strassen
Dari Dari hasi hasill algo algori ritm tma a ters tersebu ebutt diat diatas as maka maka denga dengan n meto metoda da divi divide de dan dan conquer akan diperoleh running timenya yaitu T (n) = 7T (n/2 ) − Θ (n2) karena hanya dibutuhkan dilakukannya 7 perkalian secara berulang
selanjutnya
atau dalam bentuk umumnya : alog k pangkat n = nlog k pangkat a Maka kompleksitas Algoritma Strassen tersebut adalah : Θ( nlog 7 ) = Θ(n2,81... ) Implementasi program algoritma algoritma strassen seperti di bawah ini : void matmul(int *A, int *B, int *R, int n) { if (n == 1) { (*R) += (*A) * (*B);
} else { matmul(A, B, R, n/4); matmul(A, B+(n/4), R+(n/4), n/4); matmul(A+2*(n/4), B, R+2*(n/4), n/4); matmul(A+2*(n/4), B+(n/4), R+3*(n/4), n/4); matmul(A+(n/4), B+2*(n/4), R, n/4); matmul(A+(n/4), B+3*(n/4), R+(n/4), n/4); matmul(A+3*(n/4), B+2*(n/4), R+2*(n/4), n/4); matmul(A+3*(n/4), B+3*(n/4), R+3*(n/4), n/4);}
analisa perbandingan Jumlah Perkalian
Waktu
NxN Standard
Strassen
2x2
8.89301300049E -5
0.00045418739 3188
4x4
0.000092029571 5332
8x8 1 6x1 6
Jumlah Penjumlahan
Memory
Standard Strassen Standard Strassen Standard Strassen 8
7
4
18
12
20
0.00369310379 64 028
49
48
198
48
112
0.000648975372 314
0.02787685394 512 29
343
448
1674
192
576
0.004477977752 69
0.23237299919 1
2401
3840
12870
768
2816
4096
32x3 2
0.0388550758362
1.5009188652
32768
16807
31744
94698
3072
13312
64x6 4
0.320672035217
11.5688068867
262144 117649 258048 681318
12288
61440
• memory standar : 3xnxn memerlukan 3 buah array ukuran nxn untuk menyimpan 2 matriks yang dikalikan function strassenMemmory( strassenMemmory($n $n) ) { $sum = $n $n* *$n $n; ; $temp = $n $n* *$n $n; ; $temp2 = 0;
while ($n >= 1) { $temp2 = $temp2 + $temp $temp; ; $n = $n $n/ /2; } $sum = $sum + 2*($temp2 *($temp2); ); return $sum $sum; ;
strass strassen en : sesuai sesuai dengan dengan algori algoritma tma dibawah ini
Implementasi
Kemudahan Implementasi •
Algoritma Brute Force 1. lebih sederh sederhana, ana, karena karena mencoba mencoba semua semua secara secara berurutan berurutan 2. cocok untuk matrik berukuran berukuran kecil kecil
•
Algoritma Strassen 1. lebi lebih h rum rumit it,, 2. cocok untuk matrik yang beruk berukuran uran besar besar
Kesimpulan
Algoritma strassen lebih lambat dari algoritma standar karena memang algo strassen strassen mengurangi mengurangi jumlah perkalian perkalian tetapi tetapi pengurangan pengurangan jumlah perkalian perkalian itu harus diganti diganti dengan menambah operasi penjumlahan penjumlahan dan pengurangan pengurangan yang yang juml jumlah ahny nya a lebi lebih h bany banyak, ak, misa misall pada pada matr matrix ix 2x2 juml jumlah ah perk perkal alia ian n dengan algoritma strassen turun 1 buah tetapi jumlah penambahan/pengurangan naik 14 buah.