1. Trang chủ
  2. » Công Nghệ Thông Tin

Nhân hai ma trận bằng phương pháp chia để trị

19 222 0

Đ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

Cấu trúc

  • DANH MỤC HÌNH VẼ

  • LỜI MỞ ĐẦU

    • 1. Lý do chọn đề tài

    • 2. Mục tiêu nghiên cứu

    • 3. Phương pháp nghiên cứu

    • 4. Bố cục tiểu luận

  • Chương 1

  • GIỚI THIỆU PHÉP NHÂN MA TRẬN

    • 1.1. TÌM HIỂU MA TRẬN

    • 1.1.1. Khái niệm ma trận

    • 1.1.2. Ma trận vuông

    • 1.2. PHÉP NHÂN HAI MA TRẬN

  • Chương 2

  • PHƯƠNG PHÁP CHIA ĐỂ TRỊ

    • 2.1. Ý TƯỞNG GIẢI THUẬT

    • 2.2. ĐỘ PHỨC TẠP THUẬT TOÁN

    • 2.3. ƯU VÀ KHUYẾT ĐIỂM

    • 2.4. THUẬT TOÁN STRASSEN

  • Chương 3

  • ỨNG DỤNG MATRIX MULTIFLY

    • 3.1. GIỚI THIỆU ỨNG DỤNG

    • 3.2. TRUY CẬP ỨNG DỤNG

    • 3.3. TẠO TẬP TIN MA TRẬN

    • 3.4. TÍNH TOÁN VÀ SO SÁNH KẾT QUẢ

  • Chương 4

  • KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

  • TÀI LIỆU THAM KHẢO

Nội dung

TRƯỜNG ĐẠI HỌC DUY TÂN KHOA SAU ĐẠI HỌC Tiểu luận mơn THUẬT TỐN NÂNG CAO NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ Hướng dẫn : TS Huỳnh Bá Diệu Thực : Phạm Minh Tuấn Võ Đình Hiếu Nguyễn Anh Quân Lớp : K22MCS (Khoa học máy tính) Đà nẵng, 08/2021 NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ MỤC LỤC DANH MỤC HÌNH VẼ .2 LỜI MỞ ĐẦU Lý chọn đề tài .3 Mục tiêu nghiên cứu 3 Phương pháp nghiên cứu Bố cục tiểu luận CHƯƠNG 1: GIỚI THIỆU PHÉP NHÂN MA TRẬN 1.1 TÌM HIỂU MA TRẬN 1.1.1 Khái niệm ma trận 1.1.2 Ma trận vuông .4 1.2 PHÉP NHÂN HAI MA TRẬN CHƯƠNG 2: PHƯƠNG PHÁP CHIA ĐỂ TRỊ 2.1 Ý TƯỞNG GIẢI THUẬT .7 2.2 ĐỘ PHỨC TẠP THUẬT TOÁN .9 2.3 ƯU VÀ KHUYẾT ĐIỂM .10 2.4 THUẬT TOÁN STRASSEN 10 CHƯƠNG 3: ỨNG DỤNG MATRIX MULTIFLY 13 3.1 GIỚI THIỆU ỨNG DỤNG 13 3.2 TRUY CẬP ỨNG DỤNG .13 3.3 TẠO TẬP TIN MA TRẬN 14 3.4 TÍNH TỐN VÀ SO SÁNH KẾT QUẢ .14 CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 16 TÀI LIỆU THAM KHẢO .17 Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ DANH MỤC HÌNH VẼ Ký hiệu Nội dung Trang Hình 1.1 Ví dụ ma trận kích thước m×n Hình 1.2 Ví dụ cách tính kết nhân ma trân Hình 2.1 Hình miêu tả phương pháp chia để trị Hình 2.2 Mơ tả giải thuật chia để trị Strassen 11 Hình 3.1 Giao diện ứng dụng 13 Hình 3.2 Giao diện tạo ma trận 14 Hình 3.3 Giao diện thực thi kết 15 Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ LỜI MỞ ĐẦU Lý chọn đề tài Trong thời đại số nay, việc khai thác liệu lớn vấn đề mấu chốt để đánh giá mức độ thành công hệ thống liên quan đến liệu Việc khai thác liệu sở hạ tầng nâng cao đồng việc nghiên cứu ứng dụng giải thuật để tối ưu điều vơ cần thiết Tính hiệu giải thuật đánh giá thời gian thực Nhận thấy việc kiểm chứng giải thuật cần phải có cơng cụ để so sánh đối chiếu nên lý để thực đề tài Mục tiêu nghiên cứu Được tiếp cận kiến thức môn Thuật tốn nâng cao mơn học khác với hướng dẫn TS Huỳnh Bá Diệu, nhóm em mong muốn xây dựng ứng dụng có đầy đủ tính liên quan đến thuật tốn nhân ma trận Dựa vào kiến thức môn học khác việc tìm hiểu thêm ngơn ngữ lập trình nhằm cài đặt thuật toán để đối chiếu so sánh tính hiệu thuật tốn Phương pháp nghiên cứu Tìm hiểu kiến thức ma trận, thao tác liên quan đến ma trận để định hình chức cho ứng dụng Tìm hiểu phương pháp chia để trị thuật toán Strassen để phát triển chức ứng dụng Tìm hiểu kiến thức ngơn ngữ lập trình cơng cụ hỗ trợ khác để phát triển ứng dụng Bố cục tiểu luận Nội dung tiểu luận trình bày với bố cục gồm chương sau: Chương 1: Tìm hiểu ma trận phép nhân ma trận Chương 2: Tìm hiểu phương pháp chia để trị Chương 3: Ứng dụng Matrix Multifly Chương 4: Kết luận định hướng phát triển Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ Chương GIỚI THIỆU PHÉP NHÂN MA TRẬN 1.1 TÌM HIỂU MA TRẬN 1.1.1 Khái niệm ma trận Ma trận bảng số hình chữ nhật mà định nghĩa số phép toán cộng nhân Ma trận A ký hiệu m×n có m hàng n cột sau: Hình 1.1: Ví dụ ma trận kích thước m×n Với:  i gọi số hàng (dòng)  j gọi số cột  aij phần tử nằm hàng i cột j Ví dụ: ma trận cấp (2×3) ma trận cấp (3×2) 1.1.2 Ma trận vuông Ma trận vuông ma trận có số hàng số cột Ma trận vng cấp n×n gọi tắt ma trận vng cấp n Ví dụ: ma trận vng cấp Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 1.2 PHÉP NHÂN HAI MA TRẬN Để thực phép nhân ma trận với điều kiện bắt buộc số hàng ma trận phải số cột ma trận Ví dụ ta có ma trận A có kích thước mn ma trận B kích thước pq tích AB có kích thước mq Theo cơng thức tốn học ta phát biểu lại sau: Cho ma trận có cấp m×n ma trận có cấp p×q Tích hai ma trận A B ma trận cấp m×q xác định theo cơng thức: với i = 1,2,3 , m; j = 1,2,3…, q Viết lại theo cấu trúc ma trận: Hình 1.2: Ví dụ cách tính kết nhân ma trân Ví dụ: Cho ma trận Tích B kí hiệu AB = ma trận vng cấp hai tính kết sau: Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ Vậy tích Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ Chương PHƯƠNG PHÁP CHIA ĐỂ TRỊ 2.1 Ý TƯỞNG GIẢI THUẬT Chia để trị (Divide and Conquer) mơ hình thiết kế thuật toán quan trọng dựa đệ quy với nhiều phân nhánh tốn lớn có tính lặp lại Phương pháp chia để trị hoạt động cách chia toán thành nhiều toán nhỏ thể loại, lặp lại nhiều lần, toán thu đủ nhỏ đơn giản để giải trực tiếp Sau lời giải toán nhỏ tổng hợp lại thành lời giải cho toán ban đầu Cách thực phương pháp chia để trị sau:  Chia vấn đề thành vấn đề phụ nhỏ  Giải vấn đề phụ  Kết hợp kết tốn phụ để tìm kết tốn ban đầu Hình 2.1: Hình miêu tả phương pháp chia để trị Một số toán tiếng áp dụng phương pháp chia để trị: Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ  Bài toán tháp Hà Nội  Sắp xếp mảng (Merge Sort, Quick Sort)  Bài tốn nhân số ngun có n chữ số  Tìm điểm gần mặt phẳng Oxy  Thuật toán nhân ma trận Strassen  … Thường toán dùng phương pháp chia để trị sử dụng đệ quy, nhiên dùng đệ quy ta làm theo hướng chia để trị Mấu chốt vấn đề là việc chia tách thành toán nên việc gọi đệ quy mà khơng có chia tách tốn khơng thể coi chia để trị  Ví dụ: xếp mảng cách sử dụng phương pháp chia để trị Giả sử ta có mảng sau: 1) Thực chia mảng thành phần 2) Một lần nữa, kỹ thuật đệ quy, ta thực chia phần thành hai nửa ta nhận phần tử riêng lẻ Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 3) Bây giờ, ta xếp phần tử riêng lẻ, sau kết hợp xếp mức cao tất dãy kết hợp 2.2 ĐỘ PHỨC TẠP THUẬT TOÁN Độ phức tạp phương pháp chia để trị kỹ thuật đệ quy nên có độ phức tạp tính định lý Master Theorem sau: Trong đó:  n kích thước đầu vào  số toán phép đệ quy  kích thước tốn con, tốn giả định có kích thước  chi phí cơng việc thực bên lời gọi đệ quy, bao gồm chi phí phân chia vấn đề chi phí hợp giải pháp Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 10 Ví dụ tính độ phức tạp toán xếp mảng: Trong đó:  (mỗi lần lặp, tốn chia thành tốn con)  (kích thước toán nửa đầu vào)  thời gian cần thiết để chia toán gộp tốn Ta có độ phức tạp Vậy suy 2.3 ƯU VÀ KHUYẾT ĐIỂM  Ưu điểm  Có thể làm giảm độ phức tạp thuật tốn  Tiếp cận vấn đề đơn giản số tốn (ví dụ tốn tháp Hà Nội)  Cách tiếp cận phù hợp với hệ thống xử lý đa tiến trình  Nó tận dụng hiệu nhớ đệm  Khuyết điểm:  Làm để chia tách toán thành tốn cách hợp lý, toán giải thuật toán khác phức tạp  Khó khăn việc kết hợp lời giải toán 2.4 THUẬT TỐN STRASSEN Thuật tốn Strassen thuật tốn nhân ma trận Nó nhanh thuật tốn nhân ma trận bình thường cách giảm bớt bước q trình tính tốn Giả sử nhân ma trận vng A B có kích thước mn Để tính ma trận kết C bước ta phải phải thực hai phép nhân phép Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS 11 NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ cộng để tính phần tử Suy C ma trận vuông có kích thước 2×2, để tính bốn phần tử C phải thực phép nhân phép cộng Nếu A B ma trận cấp vuông cấp n cần phải thực phép nhân phép cộng Đó số khổng lồ ma trận lớn nên trở thành toán khó giải Để giảm bớt số lượng phép tính thức hiện, thuật toán Strassen áp dụng phương pháp chia để trị để chia nhỏ toán thành tốn nhỏ Với ma trận vng A, B có kích thước n×n, chia chúng thành ma trận con, biểu diễn tích B=C theo ma trận đó: Hình 2.2: Mơ tả giải thuật chia để trị Strassen Trong đó: Tuy nhiên với cách phân tích cần phép nhân để tính ma trận C Đây phần quan trọng vấn đề Chúng ta định nghĩa ma trận M sau: Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 12 Và biểu diễn lại phần tử C theo ma trận M sau: Bằng cách này, cần phép nhân cho lần tính giá trị thay phương pháp cũ, số phép cộng trừ 18 Quá trình chia nhỏ thực kỹ thuật đệ quy tính tốn ma trận ma trận có cấp hai Độ phức tạp thuật toán Strassen theo cơng thưc sau: Trong đó: Suy độ phức tạp thuật toán Strassen là: O(n log7) ≈ O(n2.807) Giá trị 2.807 trông không nhỏ Tuy nhiên, khác biệt số mũ với liệu nhiều giá trị lớn thời gian chạy bị ảnh hưởng Trên thực thế, thuật tốn Strassen thực tốt cách nhân thơng thường với điều kiện cấp ma trận có kích thước n 32 Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 13 Chương ỨNG DỤNG MATRIX MULTIFLY 3.1 GIỚI THIỆU ỨNG DỤNG Ứng dụng nhân ma trận công cụ hỗ trợ thao tác để phục vụ cho cài đặt thuật toán nhân ma trận phương pháp chia để trị Ứng dụng hỗ trợ đầy đủ thao tác việc tạo xuất tập tin ma trận đầu vào Chuyển tập tin sang ma trận để tính tốn ghi kết đầu ra, hiển thị thời gian thực thi so sánh kết để người dùng kiểm chứng Matrix Multifly phát triển tảng Microsoft Net Framework 3.0, sử dụng ngôn ngữ C# thành phần liên quan 3.2 TRUY CẬP ỨNG DỤNG Ứng dụng chia sẻ internet, truy cập đường dẫn sau để tải ứng dụng: https://github.com/tuanpmsoft/K22MCSDuyTanPhamMinhTuan/tree/main/Advance Algorithm/ProgramExe Sau tải ứng dụng máy tính, dùng winzip để giải nén sau vào thư mục ProgramExe chạy tập tin MatrixMultifly.exe Sau chạy thành cơng giao diện hiển thị sau: Hình 3.1: Giao diện ứng dụng Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 14 3.3 TẠO TẬP TIN MA TRẬN Để tạo lưu tập tin chứa ma trận có giá trị random vào máy tính ta tiến hành sau: 1) Nhập kích thước ma trận 2) Chọn giới hạn giá trị ô ma trận, đánh dấu giá trị tạo < 10 3) Kích Tạo ma trận, ứng dụng yêu cầu chọn đường dẫn, sau chờ để ứng dụng tạo tập tin ma trận với giá trị ngẫu nhiên Hình 3.2: Giao diện tạo ma trận 3.4 TÍNH TỐN VÀ SO SÁNH KẾT QUẢ Để tính toán so sánh kết thời gian thực Từ giao diện ứng dụng ta thực sau: 1) Kích nút Chọn tập tin cho Ma trận 1, chọn lại cách kích nút Chọn lại 2) Kích nút Chọn tập tin cho Ma trận 2, chọn lại cách kích nút Chọn lại 3) Kích nút Thực tương ứng với thể loại muốn như: Nhân thông thường Nhân Strassen Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 15 4) Chờ chương trình thực hiện, sau thực thành cơng ta bấm Lưu kết tương ứng với thể loại thực để lưu tập tin kết máy tính Hình 3.3: Giao diện thực thi kết Nhìn vào hình 3.3, ta thấy với ma kích thước ma trận 1024×1024 kết thời gian thực thi khác lớn Thời gian thực thi thuật toán Strassen: 22 giây + 363 mili giây Thời gian thực thi nhân thông thường: phút + giây + 919 mili giây Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 16 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Với tốn đơn giản lượng liệu ta áp dụng thuật tốn bình thường để thao tác cách nhanh chóng Nhưng thời đại số nay, lượng liệu tổng hợp lưu trữ nên quy mô dung lượng lớn Để khai thác liệu không đơn giản nên bên cạnh việc nâng cao chất lượng sở hạ tầng việc nghiên cứu áp dụng giải thuật để khai thác liệu cách tối ưu điều vô cần thiết Tùy theo loại liệu toán cụ thể, nhà khoa học giới đưa giải pháp phù hợp cho thể loại Việc nghiên cứu ứng dụng giải thuật tính tốn vào thực tế thực cần thiết Điều giúp cho công việc thực dễ dàng suất lao động cao Thơng qua q trình tiếp nhận kiến thức giải thuật môn học Thuật tốn nâng cao, nhóm em thực đề tài nhằm thực hóa kiến thức học vào thực tế Cụ thể, tiểu luận sâu nghiên cứu làm rõ nội dung sau: o Tìm hiểu kiến thức Ma trận o Tìm hiểu phương pháp chia để trị thuật toán Strassen o Phát triển ứng dụng Matrix Multifly để thực thi phép toán nhân ma trận theo phương pháp so sánh kết Tiểu luận cho thấy hữu ích lớn việc áp dụng thuật toán vào yêu cầu thực tế Tuy nhiên, số nguyên nhân khách quan chủ quan, tiểu luận tồn số hạn chế sau: Chưa tìm hiểu sâu kiến thức Ma trận Chưa tìm hiểu sâu phương pháp nhân khác để so sánh đối chiếu Để khắc phục hạn chế nêu trên, thời gian tới, hướng nghiên cứu tiếp tục tìm hiểu thêm giải thuật khác nhằm bổ sung vào ứng dụng để đối chiếu so sánh kết Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS 17 NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 18 TÀI LIỆU THAM KHẢO 1) Giáo trình THUẬT TỐN NÂNG CAO – TS Huỳnh Bá Diệu 2) Toán học cao cấp, NXB Giáo dục 2006 - Nguyễn Đình Trí (chủ biên) 3) The design and Analysis of computer Algorithms - Alfred V Aho, John E Hopcroft , Jeffrey D Ullman 4) Introduction to Algorithms - Thomas H Cormen , Charles E Leiserson, Ronald L Rivest Clifford Stein Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS ... Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ 1.2 PHÉP NHÂN HAI MA TRẬN Để thực phép nhân ma trận với điều kiện bắt buộc số hàng ma trận phải số cột ma trận Ví dụ ta có ma trận A có kích... K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ Vậy tích Phạm Minh Tuấn, Võ Đình Hiếu, Nguyễn Anh Quân  Lớp: K22MCS NHÂN MA TRẬN THEO PHƯƠNG PHÁP CHIA ĐỂ TRỊ Chương PHƯƠNG PHÁP CHIA ĐỂ TRỊ 2.1 Ý... PHÉP NHÂN MA TRẬN 1.1 TÌM HIỂU MA TRẬN 1.1.1 Khái niệm ma trận 1.1.2 Ma trận vuông .4 1.2 PHÉP NHÂN HAI MA TRẬN CHƯƠNG 2: PHƯƠNG PHÁP CHIA ĐỂ TRỊ

Ngày đăng: 03/10/2021, 15:29

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w