Hai ma trận A có kích thước m dòng và n cột; Ma trận B có kích thước n dòng và p cột, được ký hiệu như sau A = [aij]mxn B = [bij]nxp Cần tính ma trận tích C = AB Ma trận tích C=AB có kích thước m*p xác định bằng công thức: cij=ai1b1j+ai2b2j+..+ainbnj với i=1..m; j=1..p
Trang 1BÁO CÁO
BÀI TOÁN NHÂN HAI MA TRẬN KÍCH THƯỚC LỚN
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TRƯỜNG ĐẠI HỌC CẦN THƠ
Học viên thực hiện:
Trần Văn Tiên
Mã Tuấn Duy
Giảng viên hướng dẫn:
TS Phan Thượng Cang
Trang 2Bài toán Nhân hai ma trận
Trang 3Mô tả
Bài toán Nhân hai ma trận
Trang 41 Giới Thiệu Bài Toán Nhân Hai Ma Trận
Hai ma trận A có kích thước m dòng và n cột; Ma trận B có kích thước n dòng và p cột, được ký hiệu như sau
Bài toán
A = [aij] mxn
B = [bij] nxp
Cần tính ma trận tích C = AB
Trang 51 Giới Thiệu Bài Toán Nhân Hai Ma Trận
Ma Trận Tích
Ma trận tích C=AB có kích thước m*p xác định bằng công thức:
c ij =a i1 b 1j +a i2 b 2j + +a in b nj với i=1 m; j=1 p
Ví dụ:
Trang 6Bài toán Nhân hai ma trận trong mô hình MapReduce
Trang 72 Nhân hai ma trận trong MapReduce
Trang 82 Nhân hai ma trận trong MapReduce
A,0,1,-51 A,0,2,4 A,1,0,6
A,1,1,167
A,1,2,-68 A,2,0,-4 A,2,1,24 A,2,2,-41 B,0,0-2 B,0,1,1 B,1,0,1 B,1,1,2 B,2,0,0 B,2,1,3
A =
B =
Trang 93 MapReduce Và
Bài Toán Nhân Hai Ma Trận
Giải Thuật Map
Giải Thuật Reduce
Trang 103 Nhân hai ma trận trong MapReduce – Mô hình
(0,0),(A,0,12)(0,1),(A,0,12)
(Key, Value) (Key, Value) (Key, Value)
(0,0),(A,1,-51)(0,1),(A,1,-51)
(0,0),(A,2,4)(0,1),(A,2,4)
(1,0),(A,2,-68)(1,1),(A,2,-68)
(0,0),(B,0,-2)(1,0),(B,0,-2)
(0,0),(B,1,1)(1,0),(B,1,1)
(0,0),(B,2,0)(1,0),(B,2,0)
…
…
(0,1),[(A,0,12),(A,1,-51),…,(B,2,3)]
(0,1),(B,2,3)(1,1),(B,2,3)
(1,0),[(A,0,6),(A,1,-51),…,(B,2,0)]
(1,1),[(A,0,6),(A,1,-51),…,(B,2,3)]
Key (0,0)List A = [(A,0,12)…]
List B = [(B,0,-2),…]
Key (0,1)List A = [(A,0,12)…]
List B = [(B,0,1),…]
Key (1,0)List A = [(A,0,6)…]
List B = [(B,0,-2),…]
…
Trang 11Giải Thuật Map
Trang 12Giải Thuật Map
map(key,value): // value is(“A”,i,j,a_ij) or (“B”,j,k,b_jk)
Trang 13Giải Thuật Map
//m: so dong cua ma tran A
Trang 14Giải Thuật Map
(0,1),(A,0,12)
Sau khi tạo ra các cặp key,value và sắp xếp các value theo key ta được:
((0,0),[(A,0,12),(A,1,-51),(A,2,4),(B,0,-2),(B,1,1),(B,2,0)])
Trang 15Giải Thuật Reduce
Trang 16Giải Thuật Reduce
reduce(key,values):
// key is (i,k) // values is a list of (“A”,j,a_ij) and (“B”,j,b_jk)
hash_A={j:a_ij for (x,j,a_ij) in values if x==A} hash_B={j:b_jk for (x,j,b_jk) in values if x==B} Result=0
for j=1 to n:
Result + =hash_A[j] * hash_B[j]
context.write(key,result)
Trang 17Giải Thuật Reduce
Nhân Hai Ma Trận Trong Hadoop MapReduce
((0,0),[(A,0,12),(A,1,-51),(A,2,4),(B,0,-2),(B,1,1),(B,2,0)])
reduce 12*(-2)+(-51)*1+4*0=-75
phần tử P 00
Trang 18Demo
Trang 19● Đưa file matrix.txt lên hadoop:
●hdfs dfs -put ~/matran/input/* /input
Trang 20● Biên dịch chương trình:
●hadoop com.sun.tools.javac.Main *.java
● Tạo file jar
jar cf mt.jar *.class
● Chạy chương trình
●hadoop jar mt.jar Matrix /input /output
● Xem kết quả
●hdfs dfs -cat /output/*
Trang 21Xin cảm ơn!