Nghiên cứu thuật toán tham lam (greedy) và ứng dụng để giải bài toán trả tiền của ATM

53 1K 11
Nghiên cứu thuật toán tham lam (greedy) và ứng dụng để giải bài toán trả tiền của ATM

Đ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

LỜI CẢM ƠN Để hoàn thành tốt đồ án này, lời em xin cám ơn Ban Giám Hiệu trường Đại Học Công Nghệ Thông Tin & Truyền Thông tạo điều kiện cho em học tập trường, đặc biệt em xin gửi lời cám ơn chân thành đến thầy Ts.Nguyễn Hải Minh giảng viên Trường Công Nghệ Thông Tin & truyền thông trang bị cho em kiến thức chuyên môn, quan tâm tận tình hướng dẫn, giúp đỡ em hồn thành cách tốt đợt làm đồ án Bên cạnh để hồn thành tốt đồ án em nhận nhiều giúp đỡ lời động viiên quý báu bạn bè, anh chị em xin chân thành cảm ơn Tuy nhiên thời gian hạn hẹp, lượng kiến thức hạn chế nên báo cáo em khó tránh khỏi thiếu sót Em mong nhận thơng cảm bảo tận tình quý Thầy Cô bạn để thực tốt đồ án Một lần em xin chân thành cảm ơn Thái Nguyên, ngày….tháng… năm 2017 Sinh viên thực Triệu Bùi Nam LỜI CAM ĐOAN Tôi xin cam đoan đồ án tốt nghiệp thực iện, số liệu kết nghiên cứu luận văn trung thực chưa sử dụng để bảo vệ học vị Các thơng tin trích dẫn đồ án rõ nguồn gốc rõ ràng phép công bố Xin chân thành cảm ơn ! Thái Nguyên, ngày….tháng… năm 2017 Sinh viên thực Triệu Bùi Nam MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH MỤC HÌNH ẢNH LỜI NÓI ĐẦU CHƯƠNG TÌM HIỂU PHƯƠNG PHÁP THAM LAM 1.1 Khái niệm 1.2 Ý tưởng 1.3 Đặc trưng phương pháp tham lam 1.4 Thiết kế thuật toán dựa ý tưởng phương pháp tham lam 1.4.1 Các thành phần định tham lam 10 1.4.2 Sơ đồ chung để giải toán giải thuật tham lam 11 1.4.3 Lược đồ giải thuật tham lam 12 1.4.4 Thiết kế thuật toán dựa ý tưởng tham lam 13 1.4.5 Tiến trình thực phương pháp tham lam 13 1.5 Một số toán đặc trưng 15 1.5.1 Bài toán lựa chọn công việc 15 1.5.2 Bài toán người du lịch 18 1.5.3 Bài tốn ba lơ 21 1.5.4 Bài toán băng nhạc 22 1.6 Phương pháp tham lam tương quan với phương pháp khác - Phương pháp quy hoạch động 25 1.6.1 Phương pháp quy hoạch động 25 1.6.2 Phương pháp tham lam tương quan với phương pháp quy hoạch động 25 CHƯƠNG BÀI TOÁN TRẢ TIỀN CỦA MÁY ATM 28 2.1 Bài toán ban đầu 28 2.1.1 Phát biểu toán 28 2.1.2 Phân tích thiết kế thuật toán 28 2.1.3 Xây dựng thuật toán 29 2.2 Áp dụng thực tế 30 2.2.1 Mô tả toán thực tế 30 2.2.2 Xây dựng thuật toán 31 CHƯƠNG CÀI ĐẶT CHƯƠNG TRÌNH DEMO 48 3.1 Mơ tả chương trình 48 3.2 Giao diện chương trình 48 KẾT LUẬN 51 TÀI LIỆU THAM KHẢO 52 DANH MỤC HÌNH ẢNH Hình 3.1: Giao diện chương trình 48 Hình 3.2: Kết rút tiền 49 Hình 3.3: Kết rút tiền 50 LỜI NĨI ĐẦU Có nhiều phương pháp dùng để thiết kế thuật toán như: chia để trị, vét cạn, quy hoạch động đó, phương pháp áp dụng cho lớp toán phù hợp Phương pháp tham lam số phương pháp phổ biến thường vận dụng thiết kế thuật tốn Phương pháp tham lam gợi ý tìm trật tự hợp lí để duyệt liệu nhằm đạt mục tiêu cách chắn nhanh chóng Thơng thường liệu duyệt theo hai trật tự tăng hay giảm theo tiêu chí Phương pháp tham lam xây dựng thuật toán để giải toán tối ưu dựa tư tưởng tối ưu cục theo chiến lược tư kiểu người, nhằm nhanh chóng đạt đến lời giải "tốt" Nếu chứng minh thuật toán dựa phương pháp tham lam cho kết tối ưu toàn cục lớp tốn đó, thuật tốn thường lựa chọn, chạy nhanh phương pháp tối ưu hóa khác quy hoạch động Một số thuật toán dựa tư tưởng phương pháp tham lam thực tìm phương án tối ưu như: thuật tốn Kruscal tìm khung cực tiểu, thuật toán Prim dành cho toán bao trùm nhỏ nhất, thuật toán Dijkstra dành cho tốn đường ngắn thuật tốn tìm Huffman tối ưu Là sinh viên trường Đại học CNTT TT, em thấy việc ứng dụng phương pháp tham lam thiết kế thuật toán mảng kiến thức hay hữu ích đam mê thiết kế thuật tốn Vì vậy, em mong muốn tìm hiểu phương pháp tham lam ứng dụng phương pháp tham lam vào toán cụ thể để hiểu rõ phương pháp nhằm tạo nguồn tư liệu quan trọng cho người quan tâm đến phương pháp Từ lí trên, em định lựa chọn đề tài cho đồ án tốt nghiệp “Nghiên cứu thuật toán tham lam (Greedy) ứng dụng để giải tốn trả tiền ATM” với chương trình demo xây dựng ngôn ngữ C# Em xin chân thành cảm ơn thầy Ts.Nguyễn Hải Minh, người hướng dẫn giúp đỡ em trình thực đề tài Mặc dù cố gắng để hồn thành cơng việc, xong thời gian có hạn thân chưa thực hồn thiện việc thu thập thơng tin thực tế, phân tích hệ thống thơng tin, tập hợp tài liệu in ấn lập trình báo cáo em cịn nhiều thiếu sót cần bổ sung Em mong góp ý bảo chân thành thầy hướng dẫn tồn thể thầy khoa để đề tài em hoàn thiện tốt Em xin chân thành cảm ơn! Thái nguyên, tháng năm 2017 Sinh viên thực Triệu Bùi Nam CHƯƠNG TÌM HIỂU PHƯƠNG PHÁP THAM LAM 1.1 Khái niệm Các tốn thực có mn hình mn vẻ, khơng thể đưa cách thức chung để tìm giải thuật cho toán Các phương pháp vét cạn (exhaustivesearch), chia để trị (divide and conquer), quy hoạch động (dynamic programming) tham lam (greedy) “chiến lược” kinh điển để tìm giải thuật cho toán Tham lam (greedy) phương pháp giải toán tối ưu Các thuật toán tham lam dựa vào đánh giá tối ưu cục để đưa định tức bước lựa chọn, với hy vọng cuối tìm phương án tối ưu tổng thể Chẳng hạn áp dụng giải thuật tham lam với tốn hành trình người bán hàng ta có giải thuật sau: "Ở bước đến thành phố gần thành phố nhất" 1.2 Ý tưởng Các toán tối ưu thường có số lớn nghiệm, việc tìm nghiệm tối ưu (nghiệm có giá thấp nhất) địi hỏi nhiều thời gian Một cách tiếp cận để giải toán tối ưu chiến lược tham lam Trong hầu hết toán tối ưu, để nhận nghiệm tối ưu đưa thực dãy định Ý tường chiến lược tham lam là, bước ta lựa chọn định để thực định xem tốt ngữ cảnh xác định toán Tức là, định lựa chọn bước định tối ưu cục Tùy theo toán mà ta đưa tiêu chuẩn lựa chọn định cho thích hợp Các thuật tốn tham lam nói chung đơn giản hiệu (vì tính tốn để tìm định tối ưu cục thường đơn giản) Tuy nhiên, thuật tốn tham lam khơng tìm nghiệm tối ưu, nói chung cho nghiệm gần tối ưu, nghiệm tương đối tốt Nhưng có nhiều thuật tốn thiết kế theo kỹ thuật tham lam cho ta nghiệm tối ưu, chẳng hạn thuật tốn Dijkstra tìm đường ngắn từ đỉnh tới đỉnh lại đồ thị định hướng, thuật tốn Prim Kruskal tìm bao chùm ngắn đồ thị vô hướng 1.3 Đặc trưng phương pháp tham lam Phương pháp tham lam gợi ý tìm trật tự hợp lí để duyệt liệu nhằm đạt mục tiêu cách chắn nhanh chóng Thơng thường, liệu duyệt theo hai trật tự tăng giảm dần theo tiêu Một số tốn địi hỏi dạng thức cải biên hai dạng nói Thuật tốn tham lam có trường hợp ln tìm phương án tối ưu, có trường hợp khơng Nhưng trường hợp thuật tốn tham lam khơng tìm phương án tối ưu, thường thu phương án chấp nhận Với tốn có nhiều thuật tốn để giải quyết, thơng thường thuật tốn tham lam có tốc độ tốt hẳn so với thuật toán tối ưu tổng thể Đặc trưng thuật toán tham lam thường thể bởi: bước, việc xử lí tuân theo lựa chọn trước, khơng kể đến tình trạng khơng tốt xảy thực lựa chọn lúc đầu 1.4 Thiết kế thuật toán dựa ý tưởng phương pháp tham lam Khác với kỹ thuật thiết kế thuật toán chia để trị, liệt kê, quy hoạch động mà biết, khó để đưa quy trình chung để tiếp cận tốn, tìm thuật tốn cài đặt thuật tốn tham lam Giải thuật tham lam (Greedy algorithm) thuật toán giải toán theo kiểu metaheuristic để tìm kiếm lựa chọn tối ưu cục bước với hi vọng tìm tối ưu tồn cục Chẳng hạn áp dụng giải thuật tham lam với tốn hành trình người bán hàng ta có giải thuật sau: “Ở bước tìm đến thành phố gần thành phố nhất” Nói chung, giải thuật tham lam thường có thành phần: Một tập ứng viên để từ tạo lời giải Một hàm lựa chọn để theo chọn ứng viên tốt để bổ sung vào lời giải Một hàm khả thi dùng để định ứng viên dùng để xây dựng lời giải Một hàm mục tiêu ấn định giá trị lời giải lời giải chưa hoàn chỉnh Một hàm đánh giá ta tìm lời giải hồn chỉnh 1.4.1 Các thành phần định tham lam Tính chất lựa chọn tham lam Thành phần then chốt trước tiên tính lựa chọn tham lam: giải pháp tối ưu tồn cục đạt cách lựa chọn tối ưu cục (tham lam) Nói cách khác, có nhiều lựa chọn ta lựa chọn phương án tốt tốn tại, mà khơng cần quan tâm đến kết tốn Thuộc tính lựa chọn tham lam thường đạt hiệu lực việc thực lựa chọn ta toán Ví dụ, tốn chọn hoạt động, giả sử ta có hoạt động xếp sẵn theo thứ tự tăng dần thời điểm kết thúc, ta cần kiểm tra hoạt động Nó thường trường hợp mà xử lý trước đưa vào hay sử dụng cấu trúc liệu thích hợp (thường hàng đợi ưu thế), ta thực lựa chọn tham lam nhanh chóng, đưa thuật toán hiệu Chúng ta lựa chọn giải pháp cho tốt thời điểm sau giải toán nảy sinh từ việc lựa chọn vừa Lựa chọn thuật tốn tham lam phụ thuộc vào lựa chọn trước Nhưng khơng thể phụ thuộc vào lựa chọn tương lai hay phụ thuộc vào lời giải toán Thuật toán tiến triển theo kiểu thực lựa chọn theo vòng lặp, lúc thu nhỏ tốn cho toán nhỏ Giải thuật tham lam định sớm thay đổi đường thuật toán theo định đó, khơng xét lại định cũ Đối với số toán, thuật tốn khơng xác Cấu trúc tối ưu Một tốn có cấu trúc tối ưu giải pháp tối ưu cho tốn chứa giải pháp tối ưu cho tốn Thuộc tính điểm để định ta giải toán phương pháp quy hoạch động tham lam hay khơng Như ví dụ cấu trúc tối ưu, quay cách ta chứng minh giải pháp tối ưu tốn Sij có chứa hoạt động ak,sau phải chứa giải pháp tối ưu toán Sik Skj Cấu trúc tối ưu đưa ra, ta nói biết hoạt động sử dụng ak, ta xây dựng giải pháp tối ưu Sij việc lựa chọn 10 if (n k1 m>m1 n>n1 else { f = e - n1 * 20; o = f / 10; if (o i1 ======================== else { b = a - i1 * 500; j = b / 200; if (j k1 else { // tính d sau lấy hết loại tiền 100k d = c - k1 * 100; m = d / 50; if (m n1 else { f = e - n1 * 20; o = f / 10; if (o i1 k>k1 m>m1 else { e = d - m1 * 50; n = e / 20; if (n k1 m>m1 n>n1 else { f = e - n1 * 20; o = f / 10; if (o i1 j>j1 else { c = b - j1 * 200; k = c / 100; if (k j1 m>m1 else { e = d - m1 * 50; n = e / 20; if (n j1 m>m1 n>n1 else { f = e - n1 * 20; o = f / 10; if (o i1 j>j1 k>k1 else { d = c - k1 * 100; m = d / 50; if (m k1 n>n1 else { f = e - n1 * 20; o = f / 10; if (o i1 j>j1 k>k1 m>m1 else { e = d - m1 * 50; n = e / 20; if (n j1 k>k1 m>m1 n>n1 else { f = e - n1 * 20; o = f / 10; if (o

Ngày đăng: 02/11/2017, 08:37

Từ khóa liên quan

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

Tài liệu liên quan