Chuyên đề Ứng dụng của phép nhân ma trận trong giải các bài toán Tin học

24 101 0
Chuyên đề Ứng dụng của phép nhân ma trận trong giải các bài toán Tin học

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

NHÂN MA TRẬN TRONG GIẢI CÁC BÀI TOÁN TIN HỌC Nguyễn Thị Hồng Nhớ Trường THPT Chuyên Biên Hòa Hà Nam PHẦN I: MỞ ĐẦU Trong Tin học, lập trình tốn vấn đề đặt cho người lập trình khơng phải cho đáp số đúng, mà vấn đề quan trọng phải đưa đáp số thời gian ngắn Thông thường, để đạt độ phức tạp thuật tốn mong muốn, cách làm thường tìm thuật toán ban đầu làm sở, từ dùng kỹ để giảm độ phức tạp thuật tốn Đối với nhiều tốn có cơng thức truy hồi với kích thước liệu lớn, chẳng hạn 1018 ta khơng thể làm thuật tốn quy hoạch động thông thường mà cần phải kết hợp thêm kĩ thuật Một kĩ thuật thông dụng, hay sử dụng kì thi học sinh giỏi quốc gia, quốc tế nhân ma trận Hiện nay, kĩ thuật nhân ma trận áp dụng nhiều kì thi học sinh giỏi mơn tin học, tài liệu viết cách chi tiết, hệ thống kĩ thuật chưa có Điều làm cho việc nghiên cứu, giảng dạy học kĩ thuật khó khăn Với kinh nghiệm bồi dưỡng học sinh giỏi tỉnh, quốc gia tơi thấy tốn quy hoạch động thơng thường học sinh làm được, tốn quy hoạch động có liệu lớn học sinh thường 100% số điểm, điều đáng tiếc Vì tơi định chọn viết chuyên đề: “Ứng dụng phép nhân ma trận giải tốn Tin học” Trong chun đề tơi trình bày kiến thức ma trận, phép nhân ma trận ứng dụng kĩ thuật nhân ma trận toán Tin học Hi vọng tài liệu thiết thực đồng nghiệp em học sinh PHẦN II: NỘI DUNG I MA TRẬN (Matrix), NHÂN MA TRẬN (Matrix multiplication) Khái niệm ma trận 1.1 Khái niệm ma trận Trong toán học, ma trận mảng chữ nhật gồm số, ký hiệu, biểu thức, xếp theo hàng cột mà ma trận tuân theo quy tắc định trước Các ô ma trận gọi phần tử Ví dụ ma trận có hàng cột:  a11 a  21    a m1 a12 a 22 am2 a1n  a n     a mn  Khi định nghĩa ma trận ta cần rõ số hàng m số cột n Lúc này, mn gọi cấp ma trận Các phần tử ma trận định danh địa hàng i cột j tương ứng Ví dụ phần tử hàng thứ i, cột thứ j kí hiệu là: Aij Véc tơ coi trường hợp đặt biệt ma trận với số hàng số cột Ma trận vuông: Ma trận vng ma trận có số hàng với số cột Ví dụ ma trận vng cấp (số hàng số cột 3) có dạng sau:  6 2 1   0 9 1.2 Khai báo ma trận ngơn ngữ lập trình C++ Sử dụng khai báo ma trận kiểu cấu trúc, giả sử khai báo cấu trúc ma trận có mảng liệu val kích thước gồm dòng, cột; khởi tạo giá trị ban đầu cho phần tử ma trận 0: struct matrix { long long val[4][4]; //khai bao mang hai chieu chua du lieu cua ma tran matrix() //Ham khoi tao cho ma tran { memset(val,0,sizeof(val)); } }; Phép nhân ma trận 2.1 Các khái niệm phép nhân ma trận Cho ma trận: ma trận A kích thước M∗N ma trận B kích thước N∗P (chú ý số cột ma trận A phải số hàng ma trận B thực phép nhân) Kết phép nhân ma trận A B ma trận C kích thước M∗P, với phần tử ma trận C tính theo công thức: n Cik   Aij * B jk j 1 với i=1 m, k=1 p b1k  b   2k    Hay viết Cik=[ai1 ai2 … ain]   tức phần tử dòng thứ i, cột thứ k C tích vơ hướng   bnk    vectơ dòng thứ i A với vectơ cột thứ k B Ví dụ: Cho hai ma trận   1   A=  B=      4   Phần tử C23 ma trận tích A*B tích vơ hướng vectơ dịng thứ hai ma trận A vectơ cột thứ ma trận B, ta có: 1  C23= 2  4 * 2 = -6 2 Ma trận tích A*B có dạng:   1  22       16 A*B=  * =        4     12   22    Chú ý: Với ma trận vng A cấp p (gồm p dịng, p cột) ta thực phép lũy thừa với số mũ k ngun dương bất kì, kí hiệu là: Ak ; kết ma trận vuông cấp p Ak = A*A*A*…*A (k lần ma trận A) 2.2 Tính chất phép nhân ma trận  Phép nhân ma trận khơng có tính chất giao hốn: A*B B nhân với A, nhân kết A*B≠B*A  Tính chất kết hợp: (A*B)*C=A*(B*C)  Tính chất phân phối: A*(B+D)=A*B+A*D, (B + C)D = BD + CD 2.3 Cài đặt phép nhân ma trận ngơn ngữ lập trình C++ * Phép nhân ma trận: Cho hai ma trận: ma trận A kích thước m*n ma trận B kích thước n*p Phép nhân hai ma trận A*B viết ngôn ngữ lập trình C++ sau: matrix a, b; long long m,n,p; matrix nhan(matrix a, matrix b) { matrix c; //ma tran ket qua c=a*b for (int i = 1; i

Ngày đăng: 13/01/2022, 13:40

Hình ảnh liên quan

Cho một hình chữ nhật kích thước 2xN (1<=N<10 9). Hãy đếm số cách lát các viên gạch nhỏ kích thước 1x2 và 2x2 vào hình trên sao cho không có phần nào của các viên gạch nhỏ thừa ra  ngoài, cũng không có vùng diện tích nào của hình chữ nhật không được - Chuyên đề Ứng dụng của phép nhân ma trận trong giải các bài toán Tin học

ho.

một hình chữ nhật kích thước 2xN (1<=N<10 9). Hãy đếm số cách lát các viên gạch nhỏ kích thước 1x2 và 2x2 vào hình trên sao cho không có phần nào của các viên gạch nhỏ thừa ra ngoài, cũng không có vùng diện tích nào của hình chữ nhật không được Xem tại trang 6 của tài liệu.
II. BÀI TẬP ỨNG DỤNG. - Chuyên đề Ứng dụng của phép nhân ma trận trong giải các bài toán Tin học
II. BÀI TẬP ỨNG DỤNG Xem tại trang 6 của tài liệu.
Ghi chú: Hình vẽ mô tả test ở trên: - Chuyên đề Ứng dụng của phép nhân ma trận trong giải các bài toán Tin học

hi.

chú: Hình vẽ mô tả test ở trên: Xem tại trang 16 của tài liệu.
16.4. Bài toán FBRICK – Xếp Hình - Chuyên đề Ứng dụng của phép nhân ma trận trong giải các bài toán Tin học

16.4..

Bài toán FBRICK – Xếp Hình Xem tại trang 21 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan