Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
14/04/2008 1 KỸ THUẬT GREEDY KỸ THUẬT GREEDY (THAM LAM) Phạm Thế Bảo Khoa Toán – Tin học Trường Đại học Khoa học Tự nhiên Tp.HCM Bài toán tối ưutổ hợp • Là mộtdạng của bài toán tối ưu, dạng tổng quát: – Cho hàm f(X), là hàm mục tiêu, xác định trên mộttập hữuhạn các phầntử D. Mỗi phần tử X ∈ D có dạng X(x x x ) gọi là – Mỗi phần tử X ∈ D có dạng X = (x 1 , x 2 ,…, x n ) gọi là mộtphương án. – Tìm mộtphương án X 0 ∈D sao cho f(X) đạt max (hay min) trên D. X 0 đượcgọilàphương án tối ưu. • Cách giải quyết: Vét cạn – Vét cạn – Toán học: ngành tối ưu – khó – Kỹ thuật Greedy (tham lam). Phạm Thế Bảo 14/04/2008 2 Kỹ thuật Greedy • Để xây dựng mộtlờigiảitối ưu(toàncục) thì hú t ẽ tì á lời iải ( ) tối bộ c hú ng t as ẽ tì mc á c lời g iải ( x i ) tối ư u cục bộ và xem như tậphợpcáclờigiảitối ưucụcbộ sẽ chính là lờigiảitôiưucần tìm. • Trong nhiềutrường hợpphương pháp này chưa chắc cho lời giải tối ưu toàn cục . Nhưng chưa chắc cho lời giải tối ưu toàn cục . Nhưng đây là phương pháp khả thi cài đặttrênmáy tính. Phạm Thế Bảo Bài toán trả tiềncủaATM • Trong máy có chuNnbị sẵncácloạitiền 10K, 20 K 50 K à 100 K Giả ử ố l khô h 20 K , 50 K v à 100 K . Giả s ử s ố l ượng khô ng h ạn chế.Khicómột khách hàng cầnrútN đồng, với N chia hết cho 10K. Tìm mộtphương án trả N đồng và số lượng tờ ít nhất. • Cách giải : Cách giải : – GọiX=(x 1 ,x 2 ,x 3 ,x 4 )làmộtphương án trả tiền, vớix i (i=1 4) lầnlượtlàsố lượng tờ tiềncómệnh giá tương ứng 10K, 20K, 50K, 100K. Phạm Thế Bảo 14/04/2008 3 – Theo đề bài thì 10Kx 1 +20Kx 2 +50Kx 3 +100Kx 4 =N và (x 1 +x 2 +x 3 +x 4 )nhỏ nhất. – Áp dụng kỹ thuật Greedy: tìm x 4 lớnnhấtcóthể sau đó tìm x 3 lớncóthể còn lại, … Æ lờigiải. • Ví d : khách cần rút 1 480 000 đồng • Ví d ụ : khách cần rút 1 . 480 . 000 đồng – Đáp án = (14,1,1,1) Phạm Thế Bảo Bài tập: Cài đặtchương trình Bài toán đường đingườigiaohàng • Bài toán nổitiếng – bài toán đường đingườigiao hàng – Traveling Saleman Problem (TSP) : Có hàng Traveling Saleman Problem (TSP) : Có mộtngườigiaohàngcầngiaohàngtại N thành phố.Xuất phát từ một thành phố, đi qua tấtcả các thành phố và quay về nơixuất phát, mỗi thành phố chỉđi qua mộtlần. Giả thiếtrằng mỗithành phốđềucóđường đi đến thành phố còn lại. Hãy tìm mộtphương án để anh ta tốn chi phí thấpnhất ể (chi phí có th ể là khoảng cách, cướcphídi chuyển, thời gian di chuyển ,…). • Còn đượcgọi là bài toán ngườidulịch. Phạm Thế Bảo 14/04/2008 4 • Cách giải quyết: – Định nghĩamột đồ thị,mỗi thành phố là một đỉnh trong đồ thị,khoảng cách giữa các thành phố là đại lượng ta cần quan tâm (ví dụ:khoảng cách, chi phí, …) Æ đi tìm chu trình Hamilton nhỏ nhất. ấ – Vé t cạn: có t ất cả ÆO( ) – Kỹ thuật Greedy: • Thuậtgiải: 1. sắp các cạnh theo thứ tự tăng 2. Xét các cạnh có độ dài từ nhỏđếnlớn để đưa vào chu trình. 3. Mộtcạnh được đưa vào chu trình nếucạnh thỏahaiđiềukiện: » Không tạo chu trình thiếu ( không đi qua đủ N đỉnh ) » Không tạo chu trình thiếu ( không đi qua đủ N đỉnh ) » Không tạo thành một đỉnh có cấp ≥3 (không có nhiềuhơn 2cạnh xuất phát từ một đỉnh–giả thiết bài toán chỉđi qua mộtlần). – Lặplạibước3đến khi có chu trình Phạm Thế Bảo • Độ phứctạpchỉ còn O( ). • Ứng dụng mở rộng: một máy hàn các điểm được điềukhiểnbằng máy tính. Bắt đầutừ một đ i ể m và k ết t h úc tạ i đ i ể m đó ( g i ố n g m áy m ay đ ể và ết túc tạ đ ể đó ( g ố g áy ay công nghiệp). N hiệmvụ tìm phương án di chuyển sao cho ít nhất. • Ví dụ:có6điểmcótọa độ tương ứng: a(0,0), b(4,3), c(1,7), d(15,7), e(15,4) và f(18,0) ấ – Æ có 15 cạnh, cạnh de nhỏ nh ất =3 Phạm Thế Bảo 14/04/2008 5 d(15,7) c(1,7) b(4,3) e(15,4) 3 5 5 5 7.08 Phạm Thế Bảo f(18,0) a(0,0) Chu trình thiếu (a,b,c,a) Æloạiac Tương tự loạicạnh df d(15,7) c(1,7) b(4,3) e(15,4) 3 5 5 5 Phạm Thế Bảo f(18,0) a(0,0) Loạivìtạo đỉnh cấp3 Tương loạicạnh bd 14/04/2008 6 d(15,7) c(1,7) Tối ưu, tổng độ dài = 48.39 b(4,3) e(15,4) 3 5 5 5 Phạm Thế Bảo f(18,0) a(0,0) Tổng độ dài =50 Đây là phương án tốtnhưng chưatối ưu Bài toán cái ba lô • Cho một cái ba lô có thểđựng trọng lượng W với n loại đồ vật , mỗi đồ vật i có trọng lượng g i và giá n loại đồ vật , mỗi đồ vật i có trọng lượng g i và giá trị v i .Chọnmộtcáchlựachọn sao cho tổng trọng không quá W nhưng tổng giá trị là lớnnhất. • Áp dụng kỹ thuật Greedy: – Tính đơngiáchotừng loại đồ vật – Xếptheođơngiágiảmdần Với mỗi loại đồ vật sẽ lấy số lượng tối đa mà trọng – Với mỗi loại đồ vật sẽ lấy số lượng tối đa mà trọng lương của ba lô còn cho phép. – Xác định lạitrọng lượng ba lô, quay lạibước3cho đến khi không bỏ thêm vào đượcnữa. Phạm Thế Bảo 14/04/2008 7 • Ví dụ: có ba lô có trọng lượng 37 và 4 loại đồ vậtnhư bảng. Loại đồ vậtTrọng lượng Giá trị A1530 – Từ bảng trên ta tính đơngiávàsắplạitheođơngiá B1025 C22 D46 Loại đồ vật Trọng lượng Giá trị Đơn giá Phạm Thế Bảo Loại đồ vật Trọng lượng Giá trị Đơn giá B1025 A1530 D46 C22 • Theo bảng thứ tựưu tiên là B,A,D và C: – VậtB,chọntối đalà3cái,vìmỗi cái trọng lượng là 10 Æ trọng lượng ba lô còn lại=7. – Vật A không chọn được vì trọng lượng vật A là 15 Vật A , không chọn được vì trọng lượng vật A là 15 trong khi ba lô chỉ còn 7. – VậtD,chọn được 1 cái Æ trọng lượng ba lô còn lại= 3. – VậtC,chọn được 1 cái. Tổng trọng lượng của ba lô là – Tổng trọng lượng của ba lô là – Tổng giá trị củabalôlà Phạm Thế Bảo . 14/04/2008 1 KỸ THUẬT GREEDY KỸ THUẬT GREEDY (THAM LAM) Phạm Thế Bảo Khoa Toán – Tin học Trường Đại học Khoa học Tự nhiên Tp.HCM Bài toán tối ưutổ hợp • Là mộtdạng của bài toán tối ưu, dạng. án tối ưu. • Cách giải quyết: Vét cạn – Vét cạn – Toán học: ngành tối ưu – khó – Kỹ thuật Greedy (tham lam). Phạm Thế Bảo 14/04/2008 2 Kỹ thuật Greedy • Để xây dựng mộtlờigiảitối ưu(toàncục) thì hú t ẽ tì á lời iải ( ) tối bộ c hú ng t as ẽ tì mc á c lời g iải ( x i ) tối ư u cục bộ và. cách, chi phí, …) Æ đi tìm chu trình Hamilton nhỏ nhất. ấ – Vé t cạn: có t ất cả ÆO( ) – Kỹ thuật Greedy: • Thuậtgiải: 1. sắp các cạnh theo thứ tự tăng 2. Xét các cạnh có độ dài từ nhỏđếnlớn để