thiết kế thuật toán dựa trên ý tưởng của phương pháp tham lam

85 1.4K 4
thiết kế thuật toán dựa trên ý tưởng của phương pháp tham lam

Đ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

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG CÀ THỊ THÙY LINH THIẾT KẾ THUẬT TOÁN DỰA TRÊN Ý TƯỞNG CỦA PHƯƠNG PHÁP THAM LAM LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Nguyên- 2012 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG CÀ THỊ THÙY LINH THIẾT KẾ THUẬT TOÁN DỰA TRÊN Ý TƯỞNG CỦA PHƯƠNG PHÁP THAM LAM Chuyên ngành: Khoa học máy tính Mã số: 60 48 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH NGƯỜI HƯỚNG DẪN KHOA HỌC PGS. TSKH. NGUYỄN XUÂN HUY Thái Nguyên – 2012 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn MỤC LỤC Trang Trang phụ bìa ……………………………………………………………………… Lời cảm ơn………………………………………………………………………… i Lời cam đoan ………………………………………………………………………ii Mục lục …………………………………………………………………………….iii MỞ ĐẦU ………………………………………………………………………….1 Chƣơng 1 TỔNG QUAN VỀ PHƢƠNG PHÁP THAM LAM 1.1. Phƣơng pháp tham lam……………………………………………………….4 1.1.1. Ý tưởng phương pháp tham lam………………………………………………4 1.1.2. Đặc trưng của phương pháp tham lam……………………………………….6 1.1.3. Thiết kế thuật toán dựa trên ý tưởng phương pháp tham lam….……………7 1.1.3.1. Các thành phần quyết định tham lam………………………………………7 1.1.3.2. Sơ đồ chung để giải các bài toán bằng giải thuật tham lam….….…………9 1.1.3.3. Lược đồ giải thuật tham lam ……………………………………………….9 1.1.3.4. Thiết kế một thuật toán dựa trên ý tưởng tham lam….….……………… 11 1.1.3.5 Tiến trình thực hiện phương pháp tham lam………………………… … 11 1.2. Ví dụ………………………………………………………………………… 14 1.2.1. Bài toán lựa chọn công việc.……………………………………………… 14 1.2.2. Xác định bài toán……………………………………………………………14 1.2.3. Tính chất của lời giải ……………………………………………………….14 1.2.4. Các bước của thuật giải tham lam………………………………………… 15 Chƣơng 2 THIẾT KẾ THUẬT TOÁN DỰA TRÊN Ý TƢỞNG CỦA PHƢƠNG PHÁP THAM LAM 2.1. Bài toán ngƣời du lịch ……………………………………………………….18 2.1.1. Phát biểu bài toán ………………………………………………………… 18 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 2.1.2. Phân tích thiết kế thuật toán ……………………………………………….18 2.1.3. Xác định độ phức tạp của thuật toán ………………………………………20 2.2. Bài toán cây bao trùm ngắn nhất ………………………………………… 21 2.2.1. Phát biểu bài toán ………………………………………………………… 21 2.2.2. Phân tích thiết kế thuật toán ……………………………………………… 21 2.2.3. Xác định độ phức tạp của thuật toán ……………………………………….27 2.3. Thuật toán Dijkstra -Tìm đƣờng đi ngắn nhất trong đồ thị có trọng số…28 2.3.1. Phát biểu bài toán ………………………………………………………… 28 2.3.2. Phân tích thiết kế thuật toán ……………………………………………… 28 2.3.3. Xác định độ phức tạp của thuật toán ……………………………………….33 2.4. Bài toán cái ba lô …………………………………………………………….33 2.4.1. Phát biểu bài toán ………………………………………………………… 33 2.4.2. Phân tích thiết kế thuật toán ……………………………………………… 33 2.4.3. Xác định độ phức tạp của thuật toán ……………………………………….35 2.5. Bài toán băng nhạc ……………………………………… …………………35 2.5.1. Phát biểu bài toán ………………………………………………………… 35 2.5.2. Phân tích thiết kế thuật toán ……………………………………………… 36 2.5.3. Xác định độ phức tạp của thuật toán ……………………………………….38 2.6. Bài toán lập lịch …………………………………………………………… 38 2.6.1. Phát biểu bài toán ………………………………………………………….38 2.6.2. Phân tích thiết kế thuật toán ……………………………………………… 38 2.6.3. Xác định độ phức tạp của thuật toán ……………………………………….42 2.7. Bài toán mã hóa Huffman ………………………………………………… 43 2.7.1. Phát biểu bài toán ………………………………………………………… 49 2.7.2. Phân tích thiết kế thuật toán ……………………………………………… 49 2.8. Phƣơng pháp tham lam trong tƣơng quan với phƣơng pháp khác …… 50 - Phƣơng pháp quy hoạch động 2.8.1. Phương pháp quy hoạch động …………………………………………… 50 2.8.2. Phương pháp tham lam trong tương quan vớiv PP quy hoạch động …… 51 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Chƣơng 3 CÀI ĐẶT CHƢƠNG TRÌNH CHO MỘT SỐ BÀI TOÁN 3.1. Bài toán ngƣời du lịch ………………………………………………………53 3.2. Bài toán cây bao trùm ngắn nhất Kruskal…………………………………56 3.3. Thuật toán Dijkstra -Tìm đƣờng đi ngắn nhất trong đồ thị có trọng số…………………………………………………………………… ……………62 3.4. Bài toán mã hóa huffman……………………………………………………65 KẾT LUẬN …………………………………………………………………… 69 TÀI LIỆU THAM KHẢO …………………………………………………… 70 PHỤ LỤC………………………………………………………………………… Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 1 MỞ ĐẦU 1. Đặt vấn đề Có nhiều phƣơng pháp đƣợc dùng để thiết kế thuật toán nhƣ: chia để trị, vét cạn, quy hoạch động trong đó, mỗi phƣơng pháp chỉ áp dụng cho những lớp bài toán phù hợp. Phƣơng pháp tham lam cũng là một trong số các phƣơng pháp phổ biến thƣờng đƣợc vận dụng trong thiết kế thuật toán. Phƣơng pháp tham lam gợi ý chúng ta tìm một trật tự hợp lí để duyệt dữ liệu nhằm đạt đƣợc mục tiêu một cách chắc chắn và nhanh chóng. Thông thƣờng dữ liệu đƣợc duyệt theo một trong hai trật tự tăng hay giảm theo một tiêu chí nào đấy. Phƣơng pháp tham lam xây dựng các thuật toán để giải các bài toán tối ƣu dựa trên tƣ tƣởng tối ƣu cục bộ theo một chiến lƣợc tƣ duy kiểu con ngƣời, nhằm nhanh chóng đạt đến một lời giải "tốt". Nếu có thể chứng minh rằng một thuật toán dựa trên phƣơng pháp tham lam cho ra kết quả tối ƣu toàn cục của một lớp bài toán nào đó, thì khi ấy thuật toán ấy thƣờng sẽ đƣợc lựa chọn, vì nó chạy nhanh hơn các phƣơng pháp tối ƣu hóa khác nhƣ quy hoạch động. Một số thuật toán dựa trên tƣ tƣởng phƣơng pháp tham lam đã thực sự tìm ra đƣợc phƣơng án tối ƣu nhƣ: thuật toán Kruscal tìm cây khung cực tiểu, thuật toán Prim dành cho bài toán cây bao trùm nhỏ nhất, thuật toán Dijkstra dành cho bài toán đƣờng đi ngắn nhất và thuật toán tìm cây Huffman tối ƣu. Là một giáo viên giảng dạy bộ môn Tin học ở trƣờng PT, tôi nhận thấy việc ứng dụng phƣơng pháp tham lam trong thiết kế thuật toán là một mảng kiến thức rất cần thiết đối với học sinh, đặc biệt là học sinh nhóm chuyên Tin và đội tuyển. Vì vậy, tôi mong muốn tìm hiểu về phƣơng pháp tham lam và ứng dụng phƣơng pháp tham lam trong thiết kế thuật toán cho một nhóm các bài toán, nhằm tạo ra một nguồn tƣ liệu quan trọng cho các giáo viên, học sinh và những ngƣời quan tâm đến phƣơng pháp này. Từ những lí do trên, tôi quyết định lựa chọn đề tài luận văn tốt nghiệp là “Thiết kế thuật toán dựa trên ý tƣởng của phƣơng pháp tham lam ”. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 2 2. Đối tƣợng và phạm vi nghiên cứu - Phƣơng pháp tham lam trong thiết kế thuật toán. - Một số bài toán đặc trƣng, cơ bản. 3. Hƣớng nghiên cứu của đề tài - Tổng quan về phƣơng pháp tham lam. - Thiết kế thuật toán cho một số bài toán dựa trên ý tƣởng tham lam từ đó tìm ra: + Các kĩ thuật sử dụng trong phƣơng pháp tham lam + Đối sánh phƣơng pháp tham lam với Phƣơng pháp khác + Hạn chế của phƣơng pháp tham lam. - Cài đặt chƣơng trình cho một số bài toán kinh điển. 4. Những nội dung nghiên cứu chính Chƣơng 1. TỔNG QUAN VỀ PHƢƠNG PHÁP THAM LAM (Trong chương này, học viên sẽ tìm hiểu và trình bày phương pháp tham lam: Ý tưởng, phát biểu phương pháp, nêu ví dụ và phân tích làm rõ về phương pháp này). Chƣơng 2. THIẾT KẾ THUẬT TOÁN DỰA TRÊN Ý TƢỞNG CỦA PHƢƠNG PHÁP THAM LAM (Dựa vào cơ sở lí thuyết trình bày ở chương I, trong chương này, học viên sẽ phân tích thiết kế thuật toán bằng phương pháp tham lam cho 7 bài toán cụ thể (mục 2.1 đến 2.7); Thông qua các bài tập học viên sẽ rút ra kỹ thuật sử dụng phương pháp tham lam; Đối sánh phương pháp tham lam với phương pháp khác ; Chỉ ra hạn chế của phương pháp tham lam). Các bài toán cụ thể: - Bài toán ngƣời du lịch - Bài toán tìm cây khung cực tiểu - Bài toán cây bao trùm ngắn nhất - Bài toán cái ba lô - Bài toán băng nhạc - Bài toán xếp lịch - Bài toán mã hóa Huffman Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 3 Chƣơng 3. CÀI ĐẶT CHƢƠNG TRÌNH CHO MỘT SỐ BÀI TOÁN (Trong chương này, dựa vào chương II, học viên sẽ xây dựng chương trình và cài đặt chương trình cho một số bài toán bằng ngôn ngữ C ++ , Free Pascal). 5. Phƣơng pháp nghiên cứu: phân tích, liệt kê, so sánh, đối chiếu, trực quan, thực nghiệm,… 6. Ý nghĩa khoa học của đề tài - Đƣa ra nội dung phƣơng pháp tham lam - Ứng dụng phƣơng pháp tham lam trong thiết kế thuật toán cho một nhóm các bài toán, nhằm tạo ra một nguồn tƣ liệu quan trọng cho các giáo viên, học sinh và những ngƣời quan tâm đến phƣơng pháp này. 7. Kết cấu của đề tài Ngoài phần mở đầu, kết luận, tài liệu tham khảo đề tài gồm 3 chƣơng: Chƣơng 1. TỔNG QUAN VỀ PHƢƠNG PHÁP THAM LAM Chƣơng 2. THIẾT KẾ THUẬT TOÁN DỰA TRÊN Ý TƢỞNG CỦA PHƢƠNG PHÁP THAM LAM Chƣơng 3. CÀI ĐẶT CHƢƠNG TRÌNH CHO MỘT SỐ BÀI TOÁN Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 4 Chƣơng 1 TỔNG QUAN VỀ PHƢƠNG PHÁP THAM LAM Các bài toán trên thực thế có muôn hình muôn vẻ, không thể đƣa ra một cách thức chung để tìm giải thuật cho mọi bài toán. Các phƣơng pháp vét cạn (exhaustivesearch), chia để trị (divide and conquer), quy hoạch động (dynamic programming) và tham lam (greedy) là những “chiến lƣợc” kinh điển để tìm giải thuật cho các bài toán. Tham lam (greedy) là một phƣơng pháp giải các bài toán tối ƣu. Các thuật toán tham lam dựa vào sự đánh giá tối ƣu cục bộ địa phƣơng để đƣa ra quyết định tức thì tại mỗi bƣớc lựa chọn, với hy vọng cuối cùng sẽ tìm ra đƣợc phƣơng án tối ƣu tổng thể. Chƣơng I trình bày về phƣơng pháp tham lam: Ý tưởng phương pháp tham lam, nêu ví dụ và phân tích làm rõ về phương pháp này. 1.1. Phƣơng pháp tham lam 1.1.1. Ý tưởng phương pháp tham lam Các bài toán tối ƣu thƣờng là có một số rất lớn nghiệm, việc tìm ra nghiệm tối ƣu (nghiệm có giá thấp nhất) đòi hỏi rất nhiều thời gian. Một cách tiếp cận để giải quyết các bài toán tối ƣu là chiến lƣợc tham lam. Trong hầu hết các bài toán tối ƣu, để nhận đƣợc nghiệm tối ƣu chúng ta có thể đƣa về sự thực hiện một dãy quyết định. Ý tƣởng của chiến lƣợc tham lam là, tại mỗi bƣớc ta sẽ lựa chọn quyết định để thực hiện quyết định đƣợc xem là tốt nhất trong ngữ cảnh nào đó đƣợc xác định bởi bài toán. Tức là, quyết định đƣợc lựa chọn ở mỗi bƣớc là quyết định tối ƣu địa phƣơng. Tùy theo từng bài toán mà ta đƣa ra tiêu chuẩn lựa chọn quyết định cho thích hợp. Các thuật toán tham lam nói chung là đơn giản và hiệu quả (vì các tính toán để tìm ra quyết định tối ƣu địa phƣơng thƣờng là đơn giản). Tuy nhiên, các thuật toán tham lam có thể không tìm đƣợc nghiệm tối ƣu, nói chung nó chỉ cho ra Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 5 nghiệm gần tối ƣu, nghiệm tƣơng đối tốt. Nhƣng cũng có nhiều thuật toán đƣợc thiết kế theo kỹ thuật tham lam cho ta nghiệm tối ƣu, chẳng hạn thuật toán Dijkstra tìm đƣờng đi ngắn nhất từ một đỉnh tới các đỉnh còn lại trong đồ thị định hƣớng, các thuật toán Prim và Kruskal tìm cây bao chùm ngắn nhất trong đồ thị vô hƣớng. Ví dụ - Bài toán trả tiền của máy rút tiền tự động ATM: Trong máy ATM, có sẵn các loại tiền có mệnh giá 100.000 đồng, 50.000 đồng, 20.000 đồng và 10.000 đồng. Giả sử mỗi loại tiền đều có số lƣợng không hạn chế. Khi có một khách hàng cần rút một số tiền n đồng (tính chẵn đến 10.000 đồng, tức là n chia hết cho 10.000). Hãy tìm một phƣơng án trả tiền sao cho trả đủ n đồng và số tờ giấy bạc phải trả là ít nhất. Ý tưởng phương pháp tham lam để giải quyết bài toán trả tiền của máy rút tiền tự động ATM: Gọi X = (X 1 , X 2 , X 3 , X 4 ) là một phƣơng án trả tiền. X 1 là số tờ giấy bạc 100.000 đồng, X 2 là số tờ giấy bạc 50.000 đồng, X 3 là số tờ giấy bạc 20.000 đồng, X 4 là số tờ giấy bạc 10.000 đồng. Theo yêu cầu ta phải có X 1 + X 2 + X 3 + X 4 nhỏ nhất X 1 *100.000+X 2 *50.000+X 3 *20.000+X 4 *10.000 = n. Để có số lƣợng tờ tiền nhỏ nhất thì các tờ giấy bạc mệnh giá lớn phải đƣợc chọn nhiều nhất. Trƣớc hết ta chọn tối đa các tờ giấy bạc 100.000 đồng, nghĩa là X 1 là số nguyên lớn nhất sao cho X 1 * 100.000  n. Tức là X 1 = n DIV 100.000. Xác định số tiền cần rút còn lại là hiệu n – X 1 * 100000 Chuyển sang chọn loại giấy bạc 50.000 đồng, và cứ tiếp tục nhƣ thế cho các loại mệnh giá khác. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn [...]... TƢỞNG CỦA PHƢƠNG PHÁP THAM LAM Dựa vào cơ sở lí thuyết trình bày ở chƣơng 1 trong chƣơng này, học viên sẽ đi sâu phân tích thiết kế thuật toán dựa trên ý tƣởng phƣơng pháp tham lam cho 7 bài toán cụ thể (mục 2.1 đến 2.7); Đối sánh phƣơng pháp tham lam với phƣơng pháp khác ; Chỉ ra hạn chế của phƣơng pháp tham lam 2.1 Bài toán ngƣời du lịch 2.1.1 Phát biểu bài toán Một ngƣời du lịch muốn tham quan n thành... các thuật toán tối ƣu tổng thể Đặc trƣng của thuật toán tham lam thƣờng thể hiện bởi: trong mỗi bƣớc, việc xử lí sẽ tuân theo một sự lựa chọn trƣớc, không kể đến tình trạng không tốt có thể xảy ra khi thực hiện lựa chọn lúc đầu Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 7 1.1.3 Thiết kế thuật toán dựa trên ý tưởng phương pháp tham lam Khác với các kỹ thuật thiết kế thuật. .. đỉnh còn lại Giải bài toán trên bằng thuật toán Dijkstra 2.3.2 Phân tích thiết kế thuật toán 2.3.2.1 Ý tƣởng thuật toán Dijkstra Thuật toán Dijkstra cho phép tìm đƣờng đi ngắn nhất từ một đỉnh s đến các đỉnh còn lại của đồ thị và chiều dài (trọng số ) tƣơng ứng Phƣơng pháp của thuật toán là xác định tuần tự đỉnh có chiều dài đến s theo thứ tự tăng dần Thuật toán đƣợc xây dựng trên cơ sở gán cho mỗi... chọn tham lam, một trong những bài toán con sẽ rỗng 5 Xây dựng giải pháp đệ quy cho chiến lƣợc tham lam 6 Khử đệ quy Qua các bƣớc này, ta đã thấy chi tiết cơ bản nguồn gốc quy hoạch động của thuật toán tham lam Trong thực tế, ta thƣờng tổ chức hiệu quả các bƣớc trên khi thiết kế giải thuật tham lam Ta phát triển cấu trúc con với một cái nhìn hƣớng đến thực hiện lựa chọn tham lam mà để lại một bài toán. .. quyết định tức thời tại từng bƣớc dựa vào sự đánh giá tối ƣu cục bộ địa phƣơng Ý tƣởng của phƣơng pháp tham lam trong thiết kế thuật toán đƣợc tiến hành là: Xác định trật tự xử lí để có lợi nhất, sắp xếp dữ liệu theo trật tự đó, xử lí dữ liệu theo trật tự đã nêu 1.1.3.5 Tiến trình thực hiện phƣơng pháp tham lam Thuật toán tham lam có đƣợc một giải pháp tối ƣu cho một bài toán bằng cách thực hiện một chuỗi... http://www.lrc-tnu.edu.vn 9 rằng việc sử dụng lựa chọn tham lam tại mỗi bƣớc tạo ra một giải pháp tối ƣu Một bài toán đƣợc gọi là có cấu trúc tối ƣu nếu một lời giải tối ƣu của bài toán con chứa lời giải tối ƣu của bài toán lớn hơn 1.1.3.2 Sơ đồ chung để giải các bài toán bằng giải thuật tham lam Dạng các bài toán giải bằng phương pháp tham lam Giả sử phải chọn một tập con R của các phần tử của một tập S =(s1,s2,…,sn) sao... nào đó Một số bài toán đòi hỏi những dạng thức cải biên của hai dạng nói trên Thuật toán tham lam có trƣờng hợp luôn tìm ra đúng phƣơng án tối ƣu, có trƣờng hợp không Nhƣng trong trƣờng hợp thuật toán tham lam không tìm ra đúng phƣơng án tối ƣu, chúng ta thƣờng thu đƣợc một phƣơng án khả dĩ chấp nhận đƣợc Với một bài toán có nhiều thuật toán để giải quyết, thông thƣờng thuật toán tham lam có tốc độ tốt... end; Trong lƣợc đồ tổng quát trên, Select là hàm chọn, nó cho phép ta chọn từ tập A một phần tử đƣợc xem là tốt nhất, nhiều hứa hẹn nhất là thành viên của tập nghiệm Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 11 1.1.3.4 Thiết kế một thuật toán dựa trên ý tƣởng tham lam Khi tiếp cận bài toán và tìm thuật toán tham lam thì cần khảo sát kĩ bài toán để tìm ra các tính chất... lại Sm của các hoạt động tƣơng thích, mang lại một giải pháp tối ƣu đối với Si Tổng quát hơn, ta thiết kế thuật toán tham lam theo chuỗi các bƣớc: 1 Tìm lựa chọn sao cho bƣớc tiếp theo chỉ việc giải quyết một bài toán con 2 Chứng minh rằng với sự lựa chọn tham lam tại mỗi bƣớc ta luôn tìm đƣợc một giải pháp tối ƣu của bài toán ban đầu 3 Chỉ ra rằng, với sự lựa chọn tham lam tại mỗi bƣớc, giải pháp tối... nhỏ bài toán đã cho về một bài toán con nhỏ hơn Giải thuật tham lam quyết định sớm và thay đổi đƣờng đi của thuật toán theo quyết định đó, và không bao giờ xét lại các quyết định cũ Đối với một số bài toán, đây có thể là một thuật toán không chính xác Cấu trúc con tối ưu Một bài toán có cấu trúc con tối ƣu nếu giải pháp tối ƣu cho bài toán này chứa trong nó các giải pháp tối ƣu cho các bài toán con . bày về phƣơng pháp tham lam: Ý tưởng phương pháp tham lam, nêu ví dụ và phân tích làm rõ về phương pháp này. 1.1. Phƣơng pháp tham lam 1.1.1. Ý tưởng phương pháp tham lam Các bài toán tối ƣu. PHƢƠNG PHÁP THAM LAM 1.1. Phƣơng pháp tham lam …………………………………………………….4 1.1.1. Ý tưởng phương pháp tham lam ……………………………………………4 1.1.2. Đặc trưng của phương pháp tham lam …………………………………….6 1.1.3. Thiết. 1.1.3.3. Lược đồ giải thuật tham lam ……………………………………………….9 1.1.3.4. Thiết kế một thuật toán dựa trên ý tưởng tham lam .….……………… 11 1.1.3.5 Tiến trình thực hiện phương pháp tham lam ……………………… … 11

Ngày đăng: 04/10/2014, 03:27

Từ khóa liên quan

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

Tài liệu liên quan