Để đá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