Luận văn Thạc sĩ Khoa học: Một số phương pháp chứng minh tính đúng của thuật toán và ứng dụng

76 93 0
Luận văn Thạc sĩ Khoa học: Một số phương pháp chứng minh tính đúng của thuật toán và ứng dụng

Đ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 giá một thuật toán là tốt có rất nhiều tiêu chí trong đó không thể bỏ qua tính đúng của thuật toán. Và đây cũng là nội dung chính của luận văn này theo đề tài nghiên cứu: “Một số phương pháp chứng minh tính đúng của thuật toán và ứng dụng”. Luận văn nhằm tìm hiểu, nghiên cứu, tổng hợp phương pháp chứng minh tính đúng của thuật toán.

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN ­­­­­­­­­­­­­­­­­­­­­­ Bế Thị Hương MỘT SỐ PHƯƠNG PHÁP CHỨNG MINH  TÍNH ĐÚNG CỦA THUẬT TỐN VÀ ỨNG DỤNG LUẬN VĂN THẠC SĨ KHOA HỌC Hà Nội – Năm 2015 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN ­­­­­­­­­­­­­­­­­­­­­­­­­ Bế Thị Hương MỘT SỐ PHƯƠNG PHÁP CHỨNG MINH  TÍNH ĐÚNG CỦA THUẬT TỐN VÀ ỨNG DỤNG Chun ngành: Cơ sở Tốn học cho Tin học Mã số: 60460110 LUẬN VĂN THẠC SĨ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. NGUYỄN THỊ HỒNG MINH Hà Nội – Năm 2015 LỜI CẢM ƠN Lời đầu tiên em xin chân thành cảm ơn các thầy giáo, cơ giáo giảng dạy   lớp cao học Cơ sở Tốn học cho Tin học,  Khoa Tốn – Cơ – Tin học,  Trường   Đại học Khoa học Tự nhiên – ĐHQGHN khóa 2012 – 2014. Các thầy cơ đã rất   nhiệt tình, tâm huyết trong giảng dạy cho em học tập, nghiên cứu bổ  sung   được thêm nhiều kiến thức mới quan trọng, hữu ích trong nghiên cứu và trong  cơng tác giảng dạy ở trường THPT chun. Đồng thời kịp nhận ra và sửa đổi,  bổ sung những kiến thức mình còn hiểu chưa thật chính xác giúp tăng cường  năng lực và phát triển tư duy trong nghiên cứu khoa học Đặc   biệt,   em   gửi   lời   cảm   ơn   chân   thành     sâu   sắc   tới     giáo  TS.Nguyễn Thị  Hồng Minh (Khoa Sau Đại học – ĐHQGHN). Cơ đã giảng   dạy cùng với hướng dẫn luận văn cho em một cách rất khoa học, tận tâm, chu  đáo và chi tiết để em có thể hồn thành luận văn một cách tốt nhất.  Cảm ơn gia đình đã cho em một chỗ dựa vững chắc để hồn thành khóa  học cũng như hồn thành luận văn này.  Mặc dù đã có rất nhiều cố  gắng trong việc nghiên cứu khoa học để  hồn thành luận văn tuy nhiên do hạn chế  cá nhân về  mặt thời gian nên em   khó có thể  tránh được những thiếu sót. Kính mong thầy cơ và các bạn đóng   góp ý kiến q báu để hồn chỉnh luận văn này hơn nữa MỤC LỤC  MỞ ĐẦU                                                                                                                                        1  CHƯƠNG 1. TỔNG QUAN VỀ PHÂN TÍCH THUẬT TỐN                                                  4  1.1. Một số khái niệm cơ bản                                                                                                    4  1.1.1. Bài toán                                                                                                                         4  1.1.2. Thuật toán (Algorithm)                                                                                                 5  1.1.3. Cấu trúc dữ liệu (Data Structure)                                                                               11  1.1.4. Chương trình (Program)                                                                                              11  1.2. Một số phương pháp thiết kế thuật toán                                                                          12  1.2.1. Kỹ thuật đệ quy                                                                                                          12  1.2.2. Phương pháp chia để trị (Divide and Conquer)                                                          15  1.2.3. Phương pháp quay lui (Backtracking)                                                                         16  1.2.4. Phương pháp nhánh cận                                                                                              19  1.2.5. Phương pháp quy hoạch động (Dynamic Programming )                                          21  1.2.6. Phương pháp tham lam (Greedy Method)                                                                   22  1.3. Phân tích thuật tốn                                                                                                            24  1.3.1. Tính đúng đắn của thuật tốn                                                                                     24  1.3.2. Độ phức tạp thuật toán                                                                                               25  a) Độ phức tạp về mặt thời gian                                                                                      25  b) Độ phức tạp về mặt không gian                                                                                  25 CHƯƠNG 2. MỘT SỐ PHƯƠNG PHÁP CHỨNG MINH TÍNH ĐÚNG CỦA THUẬT    TOÁN                                                                                                                                             27  2.1. Các chiến lược chứng minh tính đúng thuật tốn                                                             27  2.2. Các phương pháp chứng minh tính đúng (Correctness proofs)                                         28  2.2.1. Phương pháp quy nạp (induction)                                                                               29  a) Phương pháp quy nạp toán học                                                                                    29  b) Chứng minh tính đúng của thuật tốn bằng phương pháp quy nạp                            29  c) Một số ví dụ                                                                                                                  30  2.2.2. Phương pháp bất biến vòng lặp (loop invariant)                                                           35  a) Chứng minh tính đúng của thuật tốn bằng phương pháp bất biến vòng lặp          36       b) Các đặc trưng của bất biến vòng lặp                                                                              38  c) Một số ví dụ                                                                                                                      38 CHƯƠNG     ỨNG   DỤNG   CHỨNG   MINH   TÍNH   ĐÚNG   CỦA   MỘT   SỐ   THUẬT   TOÁN                                                                                                                                             48  3.1. Bài toán: Dãy con đơn điệu tăng dài nhất                                                                     48  3.2. Bài toán: Chia kẹo                                                                                                          57  3.3. Bài toán Cây bao trùm nhỏ nhất (Minimum spanning tree).                                         59  KẾT LUẬN                                                                                                                                    66  TÀI LIỆU THAM KHẢO                                                                                                              68 MỞ ĐẦU Thế kỷ XXI là thế kỷ của tri thức hiện đại, một nền tri thức khơng thể  khơng kể đến cơng cụ hỗ trợ đắc lực của máy tính điện tử trong mọi lĩnh vực   cuộc sống. Mặc dù cơng nghệ chế tạo ngày càng phát triển và phát triển với   tốc độ  nhanh nhưng để  sử  dụng máy tính điện tử  một cách hiệu quả  cao thì   thuật tốn (Algorithm) là thành phần ln ln quan trọng và khơng thể thiếu  được kể từ khi máy tính điện tử ra đời.  Theo lịch sử  tốn học nguồn gốc của từ  thuật tốn “Algorithm” là bắt  nguồn từ  “Algorism” tên của một nhà bác học nổi tiếng người Arập là Abu  Jafar Mohammed ibn Musâ al Khowârizmi. (Phiên âm của từ  al Khowârizmi  chính là Algorism). Ơng là người đã viết hai quyển sách nổi tiếng là “Sơ lược   về các phép tính” và “Về hệ đếm ấn độ” vào khoảng năm 850. Đây là những   quyển sách giáo khoa nổi tiếng về tốn học.  Lịch sử  đã ghi nhận người được coi là nhà lập trình đầu tiên trên thế  giới là nữ  bá tước Ada Lovelace (10/12/1815 ­ 27/11/1852), tên khai sinh là  Augusta Ada Byron. Các nhà khoa học về  sau cho rằng thuật tốn (viết năm  1842) của Ada Lovelace là những thuật tốn máy tính đầu tiên do con người  lập ra, vì nó lần đầu tiên thể  hiện rõ từng bước phát triển logic, đặc trưng  hoạt động xác định dành riêng cho máy tính.  Với lịch sử lâu đời của thuật tốn đã được nghiên cứu và phát triển cho   tới tận ngày nay và sẽ  vẫn còn tiếp tục được nghiên cứu và phát triển hơn  nữa. Khi lập trình câu hỏi ln ln được đặt ra là thuật tốn được thiết kế  hoặc thuật tốn được sử  dụng có đúng hay khơng? Điều này đảm bảo cho  một chương trình máy tính thực hiện có cho kết quả đúng hay khơng? (Chưa   kể  đến các kỹ  năng của người lập trình). Vì vậy   việc xây dựng một thuật  tốn tốt để  giải bài tốn đã cho là bước quan trọng có thể  nói là quan trọng  nhất trong việc giải một bài tốn trên máy tính điện tử.  Để  đánh giá một thuật tốn là tốt có rất nhiều tiêu chí trong đó khơng  thể bỏ qua tính đúng của thuật tốn. Và đây cũng là nội dung chính của luận  văn này theo đề  tài nghiên cứu: “Một số  phương pháp chứng minh tính đúng  của thuật tốn và ứng dụng”. Luận văn nhằm tìm hiểu, nghiên cứu, tổng hợp   phương pháp chứng minh tính đúng của thuật tốn. Cấu trúc luận văn gồm 3  chương, nội dung chính như sau: Chương 1. Tổng quan về phân tích thuật tốn Chương này nhằm tổng hợp lại một số  kiến thức chung về  bài tốn,  thuật tốn, cấu trúc dữ liệu, chương trình và kiến thức về phân tích thuật tốn.  Gồm các định nghĩa, khái niệm và các ví dụ để minh họa Trong chương này còn tổng hợp lại một số phương pháp thiết kế thuật  tốn thường sử  dụng trong thực tế. Như kỹ thuật đệ  quy, phương pháp chia  để   trị,   phương   pháp   quay   lui,   phương   pháp   nhánh   cận,   phương   pháp   quy  hoạch động và phương pháp tham lam.  Chương 2. Một số phương pháp chứng minh tính đúng của thuật tốn Nội dung chương này gồm các chiến lược chứng minh tính đúng của  thuật tốn; các phương pháp cụ  thể  để  chứng minh tính đúng của thuật tốn   như phương pháp quy nạp và phương pháp bất biến vòng lặp. Đây cũng chính  là điểm mới của luận văn.  Trong đó, phương pháp quy nạp chứng minh cho các thuật tốn đệ quy,   phương pháp bất biến vòng lặp chứng minh cho các thuật tốn khơng đệ quy.  Đối với mỗi phương pháp trình bày về  đặc điểm, phương pháp chung đồng  thời nêu một số  ví dụ  về  thuật tốn và chứng minh tính đúng của các thuật   tốn đó. Đối với những thuật tốn phức tạp có chứa cả đệ quy và lặp thì cần   kết hợp khéo léo cả hai phương pháp chứng minh tính đúng của thuật tốn là  quy nạp và bất biến vòng lặp Chương 3. Ứng dụng chứng minh tính đúng của một số thuật tốn Nghiên   cứu     số     tốn   có   sử   dụng     thuật   toán   kinh   điển,  thường sử  dụng và vận dụng lý thuyết của chương 2 để  chứng minh tính   đúng của các thuật tốn đó. Như bài tốn dãy con đơn điệu tăng dài nhất; Chia  kẹo; Cây bao trùm nhỏ nhất Đây cũng chính là điều kiện để  ta kiểm tra tính chéo nhau hay khơng   của các cây cầu được nối. Hay nói một cách khác thì hai cây cầu khơng chéo   nhau phải thỏa mãn điều kiện:  (a i − a j )(bi − b j ) > Thuật toán quy hoạch động: Ý tưởng: Giả sử ta sắp xếp các cặp thành phố theo thứ tự tăng dần dựa theo tọa  độ các thành phố ở bờ bắc như sau: �a i1 a i2 a in � � bi1 bi2 bin � � � � � Ta có thể lựa chọn một thuật tốn sắp xếp nào đó đã biết để thực hiện  sắp xếp mảng tọa độ a[1 n] các thành phố ở bờ bắc và ở đây khơng thực hiện   lại việc chứng minh tính đúng của thuật tốn sắp xếp Chẳng hạn sau khi sắp xếp ta có: Với   là một hoán vị của   sao cho:  a i < a i < < a i , đồng thời chuyển vị trí tọa độ  các thành  n phố ở bờ nam theo cặp tương ứng ban đầu với các cây cầu ở bờ bắc để đảm  bảo giữ nguyên tính chất tọa độ ai tương ứng với bi ban đầu Giả sử ta chọn được k cây cầu với tọa độ các thành phố tương ứng là:  �a i j1 a i j2 a i jk � �bi bi bi jk � j1 j2 � � � � Để   đảm   bảo   tính   khơng   chéo           cầu         biết   a i j

Ngày đăng: 16/01/2020, 14:54

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

  • CHƯƠNG 1. TỔNG QUAN VỀ PHÂN TÍCH THUẬT TOÁN

    • 1.1. Một số khái niệm cơ bản

      • 1.1.1. Bài toán

      • 1.1.2. Thuật toán (Algorithm)

        • Tính tổng quát (Generality): Thuật toán áp dụng cho mọi trường hợp của bài toán (nhiều bộ dữ liệu vào) chứ không phải chỉ cho một trường hợp riêng lẻ (một bộ dữ liệu vào) nói một cách khác là áp dụng cho một lớp các bài toán cùng loại;

        • Tính xác định (Definiteness): Sau khi thực hiện một thao tác thì hoặc là thuật toán kết thúc hoặc là có đúng một thao tác xác định để được thực hiện tiếp theo (do đó luôn thực hiện được).

      • 1.1.3. Cấu trúc dữ liệu (Data Structure)

      • 1.1.4. Chương trình (Program)

    • 1.2. Một số phương pháp thiết kế thuật toán

      • 1.2.1. Kỹ thuật đệ quy

      • 1.2.2. Phương pháp chia để trị (Divide and Conquer)

      • 1.2.3. Phương pháp quay lui (Backtracking)

      • 1.2.4. Phương pháp nhánh cận

      • 1.2.5. Phương pháp quy hoạch động (Dynamic Programming )

      • 1.2.6. Phương pháp tham lam (Greedy Method)

    • 1.3. Phân tích thuật toán

      • 1.3.1. Tính đúng đắn của thuật toán

      • 1.3.2. Độ phức tạp thuật toán

        • a) Độ phức tạp về mặt thời gian

        • b) Độ phức tạp về mặt không gian

  • CHƯƠNG 2. MỘT SỐ PHƯƠNG PHÁP CHỨNG MINH TÍNH ĐÚNG CỦA THUẬT TOÁN

    • 2.1. Các chiến lược chứng minh tính đúng thuật toán

    • 2.2. Các phương pháp chứng minh tính đúng (Correctness proofs)

      • 2.2.1. Phương pháp quy nạp (induction)

        • a) Phương pháp quy nạp toán học

        • b) Chứng minh tính đúng của thuật toán bằng phương pháp quy nạp

        • c) Một số ví dụ

    • 2.2.2. Phương pháp bất biến vòng lặp (loop invariant)

      • a) Chứng minh tính đúng của thuật toán bằng phương pháp bất biến vòng lặp

      • b) Các đặc trưng của bất biến vòng lặp

      • c) Một số ví dụ

  • CHƯƠNG 3. ỨNG DỤNG CHỨNG MINH TÍNH ĐÚNG CỦA MỘT SỐ THUẬT TOÁN

    • 3.1. Bài toán: Dãy con đơn điệu tăng dài nhất

    • 3.2. Bài toán: Chia kẹo

    • 3.3. Bài toán Cây bao trùm nhỏ nhất (Minimum spanning tree).

  • KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

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

  • Đang cập nhật ...

Tài liệu liên quan