Một số thuật toán giải bài toán phủ tập hợp và ứng dụng

76 457 0
Một số thuật toán giải bài toán phủ tập hợp 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

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG HOÀNG XUÂN THÁI MỘT SỐ THUẬT TOÁN GIẢI BÀI TOÁN PHỦ TẬP HỢP VÀ ỨNG DỤNG LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Nguyên - Năm 2014 ĐẠI HOẠC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG HOÀNG XUÂN THÁI MỘT SỐ THUẬT TOÁN GIẢI BÀI TOÁN PHỦ TẬP HỢP VÀ ỨNG DỤNG 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 GS TS ĐẶNG QUANG Á Thái Nguyên - Năm 2014 MỤC LỤC Trang LỜI CẢM ƠN LỜI CAM ĐOAN DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT DANH MỤC BẢNG DANH MỤC HÌNH MỞ ĐẦU Chương TỔNG QUAN 11 1.1 KIẾN THỨC CƠ SỞ VỀ LÝ THUYẾT BÀI TOÁN NP-HARD 11 1.1.1 Định nghĩa lớp toán P NP 11 1.1.2 Các ví dụ toán NP 14 1.2 LÝ THUYẾT QUY HOẠCH TOÁN HỌC 15 1.2.1 Khái niệm chung 16 1.2.2 Quy hoạch tuyến tính 19 1.2.3 Quy hoạch rời rạc 22 1.3 TỔNG KẾT CHƯƠNG 25 Chương BÀI TOÁN PHỦ TẬP HỢP 26 2.1 GIỚI THIỆU BÀI TOÁN PHỦ TẬP HỢP 26 2.1.1 Một số ví dụ toán phủ tập hợp 26 2.1.2 Bài toán phủ tập hợp 28 2.2 MỘT SỐ KẾT QUẢ LÝ THUYẾT VỀ BÀI TOÁN PHỦ TẬP HỢP 29 2.2.1 Hướng tiếp cận giải toán SCP 29 2.2.2 Một số phương pháp tìm giải pháp gần tối ưu cho toán SCP 31 2.3 THUẬT TOÁN HEURISTIC GIẢI BÀI TOÁN PHỦ TẬP HỢP 35 2.3.1 Thuật toán Heuristic 35 2.3.2 Ứng dụng thuật toán Heuristics giải toán SCP 36 2.3.3 Tính hiệu thuật toán Heuristic 45 2.4 THUẬT TOÁN CHÍNH XÁC 50 2.4.1 Ví dụ thuật toán nhánh cận 50 2.4.2 Thuật toán xác giải toán SCP 54 2.5 TỔNG KẾT CHƯƠNG 57 Chương CÀI ĐẶT CHƯƠNG TRÌNH VÀ ỨNG DỤNG 58 3.1 BÀI TOÁN PHÂN LỊCH TRỰC BÁC SĨ 58 3.1.1 Phát biểu toán 58 3.1.2 Cài đặt thuật toán tham lam 59 3.1.3 Cài đặt thuật toán Nhánh cận 60 3.2 XÂY DỰNG CHƯƠNG TRÌNH PHÂN LỊCH TRỰC BÁC SĨ 64 3.2.1 Công cụ lựa chọn 64 3.2.2 Modul chương trình 64 3.2.3 Giao diện chương trình 66 3.3 THỬ NGHIỆM VÀ ĐÁNH GIÁ 70 3.4 TỔNG KẾT CHƯƠNG 70 KẾT LUẬN VÀ KIẾN NGHỊ 72 DANH MỤC TÀI LIỆU THAM KHẢO 74 LỜI CẢM ƠN Em xin chân thành cảm ơn Ban Giám hiệu, Phòng Đào tạo Sau Đại học, Khoa Công nghệ Thông tin Trường Đại học công nghệ thông tin truyền thông Thái Nguyên tận tình giúp đỡ, tạo điều kiện thuận lợi cho em trình học tập, nghiên cứu thực luận văn Đặc biệt, em xin gửi lời tri ân sâu sắc đến GS TS Đặng Quang Á – người dành nhiều thời gian, công sức tận tình hướng dẫn khoa học cho em suốt trình hình thành hoàn chỉnh luận văn Xin chân thành cảm ơn Quý Thầy, Cô giảng dạy, truyền đạt cho em tri thức quý báu, thiết thực suốt khóa học Cuối xin bày tỏ lòng biết ơn gia đình, người thân, bạn bè, đồng nghiệp giúp đỡ, động viên, đóng góp ý kiến quý báu cho em việc hoàn thành luận văn Thái Nguyên, ngày tháng năm 2014 Tác giả Hoàng Xuân Thái LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu riêng hướng dẫn trực tiếp GS.TS Đặng Quang Á Mọi trích dẫn sử dụng báo cáo ghi rõ nguồn tài liệu tham khảo theo qui định Mọi chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, xin chịu hoàn toàn trách nhiệm Thái Nguyên, ngày tháng năm 2014 Tác giả Hoàng Xuân Thái DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Tiếng Anh Từ viết tắt Tên đầy đủ Diễn giải GA Genetic Algorithm Giải thuật di truyền LP Linear Programming Quy hoạch tuyến tính NP Nondeterministic Polynomial Time Thuật toán bất định thời gian đa thức SA Simulated Annealing Giải thuật luyện thép SCP Set Covering Problem Bài toán phủ tập hợp Tiếng Việt BTQHTT Bài toán quy hoạch tuyến tính BTQHPT Bài toán quy hoạch phi tuyến BTQHL Bài toán quy hoạch lồi BTQHTP Bài toán quy hoạch toàn phương DANH MỤC BẢNG Trang Bảng 3.1 Danh sách bác sĩ dịch vụ mà bác sĩ thực trường hợp tổng quát 58 Bảng 3.2 Thời gian trung bình (miligiây) 70 DANH MỤC HÌNH Trang Hình 1.1 Mô hình phân lớp toán P, NP, CO-NP, NP-Complete, NP-hard 15 Hình 1.2 Đồ thị hàm f(x) 17 Hình 2.1 Thuật toán Meta-RaPS tìm giải pháp sở 38 Hình 2.2 Thủ tục cập nhật 38 Hình 2.3 Thủ tục tìm giải pháp láng giềng 39 Hình 2.4 Thuật toán Meta-RaPS giải toán SCP 40 Hình 2.5 Ví dụ toán SCP 42 Hình 2.6 Kết sau thực thuật toán tham lam 43 Hình ví dụ thuật toán tham lam 44 Hình 2.7 Kết phân nhánh 52 Hình 2.8 Ma trận chi phí toán người du lịch 54 Hình 2.9 Cây phân nhánh giải toán người du lịch 54 Hình 3.1 Giao diện chương trình 67 Hình 3.2 Giao diện nạp liệu 68 Hình 3.3 Giao diện phân lịch thuật toán tham lam 68 Hình 3.4 Giao diện phân lịch thuật toán tham lam 69 Hình 3.5 Giao diện lưu kết phân lịch 69 Hình 3.6 Đồ thị biểu diễn thời gian thực trung bình 70 MỞ ĐẦU Lý chọn đề tài Bài toán tối ưu tổ hợp dạng toán có độ phức tạp tính toán cao thuộc lớp NP khó Đã có nhiều giải thuật đưa để giải toán họ giải thuật kiến (Ant Algorithm), giải thuật luyện thép SA (Simulated Annealing), giải thuật di truyền GA (Genetic Algorithm) giải thuật Meta-Heuristic Những giải thuật giải toán với hiệu cao cho kết lời giải gần tối ưu Với độ phức tạp tính toán cao toán tối ưu tổ hợp đòi hỏi mặt thời gian, việc giải toán với tính chất giải thuật gặp phải vấn đề thời gian thực chương trình, tốc độ xử lý, khả lưu trữ nhớ, xử lý liệu với quy mô lớn, … Kích thước toán tăng lên không gian tìm kiếm lớn yêu cầu cần phải có giải thuật để tăng tốc độ hiệu giải thuật Bài toán phủ tập hợp (set covering problem) toán tối ưu tổ hợp Dạng toán có nhiều thực tế như: lập lịch biểu, lập kế hoạch sản xuất, định tuyến, phân bổ đầu tư, …Đã có nhiều nghiên cứu phương pháp hiệu để giải toán bao gồm giải thuật heuristic, thuật toán sử dụng ý tưởng tham lam (Greedy Method) thuật toán sử dụng phương pháp quy hoạch nguyên Vì vậy, việc tìm hiểu toán dạng phủ tập hợp, thuật toán giải toán để từ ứng dụng vào thực tế việc làm có ý nghĩa khoa học thực tiễn Đây mục đích luận văn Đối tượng nghiên cứu Đối tượng nghiên cứu luận văn toán phủ tập hợp vấn đề liên quan, thuật toán để giải pài toán phủ tập hợp 61 biết, giá trị hàm mục tiêu toán ứng với phương án tốt biết gọi giá trị kỷ lục Tập có cận lớn hay giá trị kỷ lục bị loại (không cần xem xét tiếp nữa), chắn tập không chứa phương án tốt phương án tốt biết Quá trình giải kết thúc không tập cần xem xét tiếp Khi đó, phương án tốt biết phương án tối ưu toán Tính hữu hạn thuật toán suy từ tính hữu hạn tập S0 Giả sử ta cần phân nhánh tập S p  S0 Cách hay dùng phân chia tập thành hai tập rời S 'p , S p'' với S p'   x | x  S p , xr  0 , S p''   x | x  S p , xr  1 Trong đó, xr biến chưa cố định giá trị hay tập S p Giá trị r dùng để phân nhánh chọn cho tập S ''p có nhiều khả chứa phương án tối ưu, tập S 'p không Nói cách khác, r chọn cho hiệu số cận S ''p S p' lớn Để giải vấn đề này, ta cần xét tập phương án ban đầu S0 chia thành hai tập rời S1 S2 với S1   x | x  S1 , xr  0 , S2   x | x  S2 , xr  1 Trong tập S2 cấu trúc toán không thay đổi, trừ cột r bị loại Các cột lại chứa phần tử không âm, ứng với S2 cận giá trị hàm mục tiêu tăng thêm  ( S2 )  cr Trong tập S1 cố định xr  nên từ điều kiện toán suy phải có x j  1( j  r ) Vì  ( S1 )  c j cận giá trị mục tiêu tăng j r 62 thêm Ta chọn biến xr cho hiệu cận lớn nhất, nghĩa đạt max  ( S1 )   ( S2 ) r Nếu cr   ( S1 )  (do cột r C chứa số 0),  ( S2 )  cr  , từ  ( S1 )   ( S2 )  Vì để có hiệu cận lớn ta cần xét r với cr  Trong trường hợp  ( S2 )   ( S1 )  Điều có nghĩa ta chọn biến xr để phân nhánh theo qui tắc    (r )  max  ( p)  c p  c p 0  p  Lập luận đủng tập phương án Si sau chia thành tập Sr , Sr 1 thay cho mức tăng cận  ( S1 )  ( S2 ) ta xét mức tăng cận  ( Sr )  ( Sr 1 ) tương ứng Nếu tập xét S0 mà   S p  x | x  S0 , xi1  1 , xi2   , , xik   k , Thì qui tắc chọn biến để phân nhánh trước, nhiên cần tiến hành số thay đổi Trước hết, việc thực lựa chọn bắt buộc Chẳng hạn, x j  0, j  1, , v  1, v  1, , n tất nhiên phải có xv  Cũng làm cột Một số loại lựa chọn bắt buộc khác: Khi cố định xr  phải có xr  cách đặt cr   Hơn nữa, S p chứa r gồm nhiều n-2 bác sĩ xi1   xiu  xr  xiu1   xiv1iv  (  v  n  ) bước lặp, trước tính cận cho tập mới, cần thực lựa chọn bắt buộc nêu Có thu cận 63 xác tránh phân nhánh vô ích Input: Cho tập m danh sách dịch vụ cấp cứu U  e1 , e2 , , em  , Tập danh sách dịch vụ mà n bác sĩ thực hiện: S1 , S2 , , Sn danh sách chi phí phải trả c j , j  1, , n Output: Vectơ x  0,1 k Thuật toán: Bước 1: Xuất phát từ x1, xây dựng phương án mẫu f* Bước i: - Đã xây dựng nghiệm thành phần  x1 , x2 , , xi 1  - Đánh giá cận: tìm g xác định xi: g (c1 x1 , , ci xi )  min{ f (a ) : a  (a1 , , an ) thuộc X, cixi=ai, i=1,…,n} - Giả sử x* lời giải tốt thời điểm đó, f* giá trị tốt f *  f ( x* ) o Nếu f *  g bỏ không cần phát triển lời giải phận  x1 , x2 , , xi  o Ngược lại: tiến hành bước i+1 để xác định xi+1 Thuật toán nhánh cận giải toán phân lịch bác sĩ cho kết tối ưu xác định mảng x Trong với bác sĩ chọn x[i] nhận giá trị ngược lại Trong trường hợp có n bác sĩ trường hợp xấu độ phức tạp tính toán 2n Tuy nhiên trình tìm kiếm bước chọn x[i+1], x[i+2], loại bỏ sớm phương án chắn tối ưu 64 3.2 XÂY DỰNG CHƯƠNG TRÌNH PHÂN LỊCH TRỰC BÁC SĨ 3.2.1 Công cụ lựa chọn Để hoàn thành ứng dụng chương trình demo viết ngôn ngữ lập trình C# Visual Studio 2010 kết hợp với sở liệu lưu trữ hệ quản trị sở liệu SQL Server 2005, chương trình có chạy hệ điều hành Windows XP, Vista, Windows 3.2.2 Modul chương trình 3.2.2.1 Modul tìm chi phí tối ưu phương pháp tham lam Với đầu vào danh sách chi phí cho mảng c, bước thủ tục tìm mức chi phí nhỏ chưa xét giả sử ci, mức chi phí tương ứng với việc chọn bác sĩ i người xem xét để xếp lịch public int FindMinimumCost(int[] c, int n) { int vt = -1; int = MAXCOST; for (int i = 0; i < n; i++) { if (consider[i]) continue; if (min > c[i]) { = c[i]; vt = i; } } return vt; } 3.2.2.2 Modul phân lịch trực phương pháp tham lam Đầu vào thủ tục danh sách bác sĩ dịch vụ mà bác sĩ phục vụ cho mảng ds, danh sách chi phí C Mỗi tìm bác sĩ có chi phí phục vụ nhỏ cập nhật lại mảng price Kết thủ tục trả mảng kiểu số nguyên x phần tử thứ i mảng x nhận giá trị tương ứng với bác sĩ i xếp lịch phục vụ trường hợp ngược lại private int[] ScheduleDoctor(ArrayList[] ds, int[] C,float [] price) { 65 int[] x = new int[ds.Count()]; for (int i = 0; i < x.Length; i++) x[i] = 0; ArrayList dsC = new ArrayList(); int m = price.Length, n = ds.Count(); while (dsC.Count < m) { int sdoctor = FindMinimumCost(C, n, dsC); x[sdoctor] = 1; ArrayList temp = SubElement(ds[sdoctor], dsC); float cost = (float)C[sdoctor] / temp.Count; consider[sdoctor] = true; foreach (int z in temp) { price[z] = cost; dsC.Add(z); } } return x; } 3.2.2.3 Modul tìm chi phí tối ưu phương pháp nhánh cận Đầu vào thủ tục bao gồm mảng x phần tử thứ i mảng nhận giá trị tương ứng với việc bác sĩ i xem xét phục vụ không Phần tử lựa chọn để xem xét selected mảng x, mức chi phí tương ứng với nhánh countselected, mảng chi phí phải trả cho bác sĩ C, danh sách dịch vụ U, danh sách bác sĩ dịch vụ mà bác sĩ phục vụ listSets Sau thủ tục kết thúc, giải pháp tối ưu lưu trữ mảng result Dựa vào mảng result ta biết bác sĩ i có sử dụng (result[i]=1) không sử dụng (result[i]=0) Từ biết tổng chi phí mà bệnh viện chi trả ứng với giải pháp tối ưu public static void branchAndBound(ref int[] x, int selected, int countselected,int[] C, ArrayList U, List listSets) { // Nếu bác sĩ xét chọn tính lại chi phí if (x[selected] == 1) countselected += C[selected]; ArrayList univers = new ArrayList(); univers.AddRange(U); ArrayList selectedSet = new ArrayList(); selectedSet.AddRange(listSets.ElementAt(selected)); 66 if(x[selected] == 1) foreach (Object o in selectedSet) univers.Remove(o); if (univers.Count == 0) { // Nếu giải pháp tìm tốt giải pháp thời cập nhật lại if (countselected < bestSoFar) { bestSoFar = countselected; for (int i = 0; i < x.Length; i++) { result[i] = x[i]; } } } if (selected == x.Length - 1) return; x[selected + 1] = 1; // Phân nhánh if (countselected + C[selected+1] < bestSoFar) { branchAndBound(ref x, selected + 1, countselected, C, univers, listSets); } x[selected + 1] = 0; branchAndBound(ref x, selected + 1, countselected, C, univers, listSets); } 3.2.3 Giao diện chương trình Chương trình mô chạy tốt với liệu đầu vào có 1000 bác sĩ thực chức sau: - Tạo danh sách bác sĩ: o Tạo mảng chứa danh sách bác sĩ o Mở tệp chứa danh sách thông tin bác sĩ chi phí thực bác sĩ o Mở tệp chứa thông tin dịch vụ mà bác sĩ thực o Lưu thông tin bác sĩ - Tạo danh sách dịch vụ o Mở tệp chứa thông tin dịch vụ 67 o Lưu trữ thông tin dịch vụ - Phân lịch trực bác sĩ theo phương pháp tham lam - Phân lịch trực bác sĩ theo phương pháp nhánh cận Một số hình ảnh giao diện chương trình: - Khi bắt đầu chạy cửa sổ chương trình sau: Hình 3.1 Giao diện chương trình - Người dùng thực nạp thông tin bác sĩ thông tin dịch vụ mà bệnh viện cung cấp từ tệp nguồn: 68 Hình 3.2 Giao diện nạp liệu - Sau người dùng thực phân lịch phương pháp tham lam: Hình 3.3 Giao diện phân lịch thuật toán tham lam 69 - Hoặc dùng phương pháp nhánh cận: Hình 3.4 Giao diện phân lịch thuật toán tham lam - Sau có kết người dùng lưu lại bảng phân lịch: Hình 3.5 Giao diện lưu kết phân lịch 70 3.3 THỬ NGHIỆM VÀ ĐÁNH GIÁ Chương trình thực nghiệm máy tính cá nhân có cấu hình chíp Intel Core Dual 2.0 GHz, Ram GB, HĐH Windows Thực nghiệm cho kết sau: - Thực nghiệm trường hợp bác sĩ nhận mức tiền lương hoàn thành dịch vụ cấp cứu Ta có bảng số liệu số lượng bác sĩ, số lượng dịch vụ thời gian thực trung bình thuật toán: Bảng 3.2 Thời gian trung bình (miligiây) Số lượng bác sĩ số dịch vụ 100/200 200/200 500/200 1000/200 Thuật toán tham lam Thuật toán nhánh cận 0.1 0.2 0.15 1.0 0.3 3.0 1.0 18.0 Hình 3.6 Đồ thị biểu diễn thời gian thực trung bình 3.4 TỔNG KẾT CHƯƠNG Ứng dụng thành công phương pháp giải toán SCP để xây dựng ứng dụng “Phân lịch trực bác sĩ” kết trình nghiên cứu mô hình toán học toán SCP, thuật toán giải toán SCP Trong chương trình bày mô hình toán SCP việc phân công lịch trực bác sĩ phục 71 vụ dịch vu cấp cứu, đưa hướng giải toán dựa ý tưởng thuật toán tham lam thuật toán nhánh cận, từ xây dựng modul để cài đặt thành công ứng dụng “Phân lịch trực bác sĩ” Việc ứng dụng thuật toán tham lam để xây dựng ứng dụng cho kết gần tối ưu với độ phức tạp nhỏ, thuật toán nhánh cận cho kết tối ưu thời gian tính toán hàm mũ Đây bước đầu để tiếp tục nghiên cứu triển khai thêm nhiều ứng dụng toán SCP thực tế 72 KẾT LUẬN VÀ KIẾN NGHỊ Với mục đích nghiên cứu mô hình toán học toán phủ tập hợp phương pháp giải toán phủ tập hợp để từ xây dựng ứng dụng giải toán phủ tập hợp thực tế Dựa phương pháp giải toán SCP nhận thấy phương pháp có ưu nhược điểm khác nhiên để đưa giải pháp gần tối ưu với thời gian tính toán chấp nhận lựa chọn hai phương pháp thuật toán tham lam thuật toán nhánh cận Xuất phát từ giải pháp sở Heuristic sử dụng phương pháp tham lam để tìm lời giải tối ưu cho toán SCP nhiên phương pháp có nhược điểm lúc cho lời giải tối ưu Một phương pháp khác để giải toán SCP phương pháp nhánh cận, phương pháp cho kết tối ưu với thời gian tính toán chấp nhận, nghiên cứu cài đặt luận văn Những nội dung mà luận văn tập trung nghiên cứu giải quyết: Kiến thức lý thuyết toán NP-Hard, lý thuyết quy hoạch toán học, tìm hiểu mô hình toán học toán phủ tập hợp, thuật toán giải toán phủ tập hợp Dựa sở lý thuyết vận dụng mô hình toán học toán phủ tập hợp ứng dụng thuật toán tham lam, thuật toán nhánh cận để xây dựng chương trình “Phân lịch trực bác sĩ” Trong trình nghiên cứu xây dựng ứng dụng nhận thấy số vấn đề phát triển thêm: Xây dựng thuật toán kết hợp ưu điểm thuật toán giải toán phủ tập hợp cho thời gian thực nhanh chóng kết gần tối ưu Xây dựng giải thuật cho toán phủ tập hợp ứng với nhiều ràng buộc nhiều chi phí cần tối ưu Cải tiến thuật toán tham lam để kết cuối nhận lời giải tối ưu Với phương pháp mà sử dụng luận văn này, bước đầu tổng hợp phương pháp hiệu để giải toán phủ tập hợp vận dụng chúng để xây dựng thành công ứng dụng phân lịch trực bác sĩ cho phép đưa 73 vào danh sách bác sĩ, danh sách dịch vụ mà bác sĩ thực được, đưa danh sách phân công lịch trực cho bác sĩ với chi phí phục vụ thấp 74 DANH MỤC TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt [1] Bùi Minh Trí (1999), “Quy hoạch toán học”, Nxb Khoa học Kỹ thuật, Hà Nội, Tr 13-409 [2] Nguyễn Hải Thanh (2006), “Tối ưu hóa”, Nxb Bách khoa, Hà Nội, Tr 7-111 Tài liệu tiếng Anh [3] E Balas and M.C Carrera, “A Dynamic Subgradient-Based Branch-and-Bound Procedure for Set Covering”, Operatons Research 44 (1996) 875-890 [4] J.E Beasley, “An Algorithm for Set Covering Problems”, European Journal of Operational Research 31 (1987) 85-93 [5] J.E Beasley, “A Lagrangian Heuristic for Set Covering Problems”, Naval Research Logistics 37 (1990) 151-164 [6] J.E Beasley and P.C Chu, “A Genetic Algorithm for the Set Covering Problem”, European Journal of Operational Research 94 (1996) 392-404 [7] J.E Beasley and K Jornsten, “Enhancing an Algorithm for Set Covering Problems”, European Journal of Operational Research 58 (1992) 293-300 [8] M.J Brusco, L.W Jacobs and G.M Thompson, “A Morphing Procedure to Supplement a Simulated Annealing Heuristic for Cost – and Coverage-Correlated Weighted Set-Covering Problems”, Working Paper, Operations Management and Information Systems Department, Northern Illinois University, 1996 [9] A Caprara, M Fischetti and P Toth, “A Heuristic Method for the Set Covering Problem”, Technical Report Or-95-8, DEIS, University of Bologna, 1995, to appear in Operations Research [10] S Ceria, P Nobili and A Sassano, “A Lagrangian-Based heuristic for LargeScale Set Covering Problems”, Technical Report R.406, IASI-CNR, Rome, 1995, to appear in Mathematical Programming 75 [11] M.L Fisher, “An Applications Oriented Guide to Lagrangian Optimization”, Interface 15 (1985) 10-21 [12] S Haddadi, “Simple Lagrangian Heuristic for the Set Covering Problem”, European Journal of Operational Research 97 (1997) 200-204 [13] L.W Jacobs and M.J Brusco, “A Local Search Heuristis for Large SetCovering Problems”, Nauval Research Logistics 52 (1995) 1129-1140 [14] L.A.N Lorena and F.B Lopes, “A surrogate Heuristic for Set Covering Problems”, European Journal of Operational Research 79 (1994) 138-150 [15] S Martello and P Toth, Knapsack Problems: Algorthms and Computer Implementations, J Wiley and Sons (1990) [16] P Nobili and A Sassano, “A Separation Routine for the Set Covering Polytope”, in E Balas, G Cornuejols, and R Kannan (eds.), Integer Programming and Combinatorial Optimization, Proceedings of the 2nd IPCO Conference, Carnegie-Mellon University Press (1992) [17] D Wedelin, “An Algorithm for Large Scale 0-1 Integer Programming with Application to Airline Crew Scheduling”, Annals of Operational Research 57 (1995) 283-301 [18] H.D Chu, E.L Johnson, “Solving Large Scale Crew Scheduling Prob-lems”, European Journal of Operational Research 97 (1997) 260-268 [...]... các kỹ thuật heuristic cho việc giải các bài toán tổ hợp theo hướng xấp xỉ đã được phát triển để tìm ra các lời giải gần tối ưu (hay xấp xỉ ) trong giới hạn thời gian cho phép Trong phần tiếp theo chúng ta sẽ nghiên cứu sâu hơn về bài toán phủ tập hợp với các bài toán liên quan để từ đó nghiên cứu các thuật toán giải quyết bài toán phủ tập hợp 26 Chương 2 BÀI TOÁN PHỦ TẬP HỢP Bài toán phủ tập hợp (Set... khoảng thời gian tính toán chấp nhận được Các phương pháp giải bài toán SCP trong thực tế dựa trên nhiều cách tiếp cận khác nhau và có thể phân loại thành các lớp như lớp thuật toán dựa trên lý thuyết quy hoạch tuyến tính, lớp các thuật toán heuristics và lớp các thuật toán nhánh-cận 2.1 GIỚI THIỆU BÀI TOÁN PHỦ TẬP HỢP 2.1.1 Một số ví dụ về bài toán phủ tập hợp Bài toán phủ tập hợp (Set Covering Problem... tập trung nghiên cứu các kiến thức có liên quan, các cơ sở lý thuyết như: Lý thuyết các bài toán NP-hard, quy hoạch tuyến tính, quy hoạch nguyên, các phương pháp giải chúng và áp dụng vào bài toán phủ tập hợp 4 Nhiệm vụ nghiên cứu - Tìm hiểu và hệ thống các kiến thức cơ sở về lý thuyết các bài toán NP-hard - Tìm hiểu về quy hoạch toán học, bài toán phủ tập hợp và ứng dụng - Tìm hiểu một vài thuật toán. .. toán phủ tập hợp, trình bày thuật toán Heuristic và thuật toán chính xác giải bài toán phủ tập hợp Chương 3, ứng dụng những kiến thức về bài toán phủ tập hợp và những thuật toán đã trình bày, trong chương này chúng tôi trình bày phần cài đặt chương trình ứng dụng Với những kết quả đạt được, phần cuối của luận văn nêu ra những phép đo tính hiệu quả của nghiên cứu, đánh giá thuật toán và nêu vài đề xuất... xác giải bài toán phủ tập hợp - Cài đặt và thử nghiệm một vài thuật toán 5 Những nội dung nghiên cứu chính Bố cục của luận văn gồm phần mở đầu trình bày lý do chọn đề tài, đối tượng và nhiệm vụ nghiên cứu của đề tài Chương một, tập trung trình bày những kiến thức tổng quan về lý thuyết NP-hard và quy hoạch toán học Chương hai, giới thiệu bài toán phủ tập hợp, một số kết quả lý thuyết về bài toán phủ tập. .. các bài toán về thời gian 2.2 MỘT SỐ KẾT QUẢ LÝ THUYẾT VỀ BÀI TOÁN PHỦ TẬP HỢP 2.2.1 Hướng tiếp cận giải bài toán SCP Như chúng ta đã biết các phương pháp giải bài toán SCP trong thực tế dựa trên nhiều cách tiếp cận khác nhau, trong số đó phương pháp hiệu quả nhất là dùng giải thuật heuristic và giải thuật chính xác dựa trên phương pháp giải quyết bài toán quy hoạch tuyến tính (LP) nới lỏng của bài toán. .. các bài toán tối ưu Các bài toán tối ưu, cũng được gọi là các bài toán quy hoạch toán học, được chia thành các lớp sau [2]: - Bài toán quy hoạch tuyến tính (BTQHTT) - Bài toán tối ưu phi tuyến hay còn gọi là bài toán quy hoạch phi tuyến (BTQHPT), bao gồm cả bài toán quy hoạch lồi (BTQHL) và bài toán quy hoạch toàn phương (BTQHTP) - Bài toán tối ưu rời rạc, bài toán tối ưu nguyên và hỗn hợp nguyên - Bài. .. gọn có thể hiểu bài toán NP-Hard là bài toán mà không có thuật toán thời gian tính đa thức để giải nó trừ khi P=NP, mà chỉ có các thuật toán giải trong thời gian hàm mũ Định nghĩa 1.7 [1] Một bài toán A được gọi là NP-khó (NP-Hard ) nếu như sự tồn tại thuật toán đa thức để giải nó kéo theo sự tồn tại thuật toán đa thức để giải mọi bài toán trong NP 1.1.2 Các ví dụ về bài toán NP Bài toán bè cực đại (MaxClique):... có thể giải hiệu quả bất kỳ bài toán NP bằng cách sử dụng thuật toán giải bài toán NP-khó như một chương trình con Từ định nghĩa bài toán NP-khó có thể suy ra rằng mỗi bài toán NP-đầy đủ đều là NPkhó Tuy nhiên một bài toán NP-khó không nhất thiết phải là NP-đầy đủ Cũng từ bổ đề nêu trên, ta có thể suy ra rằng để chứng minh một bài toán A nào đó là NP-khó, ta chỉ cần chỉ ra phép qui dẫn một bài toán đã... bài toán NP-đầy đủ (NP-Complete) Định nghĩa 1.6 [1] Một bài toán quyết định A được gọi là NP-đầy đủ (NPComplete) nếu như: - A là một bài toán NP - Mọi bài toán trong NP đều có thể quy dẫn về A Bổ đề Giả sử bài toán A là NP-đầy đủ, bài toán B thuộc NP, và bài toán A quy dẫn được về bài toán B Khi đó bài toán B cũng là NP-đầy đủ 14 1.1.1.8 Lớp bài toán NP-khó (NP-Hard) Một cách ngắn gọn có thể hiểu bài ... 25 Chương BÀI TOÁN PHỦ TẬP HỢP 26 2.1 GIỚI THIỆU BÀI TOÁN PHỦ TẬP HỢP 26 2.1.1 Một số ví dụ toán phủ tập hợp 26 2.1.2 Bài toán phủ tập hợp 28 2.2 MỘT SỐ KẾT QUẢ... THIỆU BÀI TOÁN PHỦ TẬP HỢP 2.1.1 Một số ví dụ toán phủ tập hợp Bài toán phủ tập hợp (Set Covering Problem – SCP) mô hình nhiều ứng dụng quan trọng Để hiểu rõ mô hình toán học toán phủ tập hợp tổng... VỀ BÀI TOÁN PHỦ TẬP HỢP 29 2.2.1 Hướng tiếp cận giải toán SCP 29 2.2.2 Một số phương pháp tìm giải pháp gần tối ưu cho toán SCP 31 2.3 THUẬT TOÁN HEURISTIC GIẢI BÀI TOÁN PHỦ TẬP HỢP

Ngày đăng: 13/12/2016, 12:52

Từ khóa liên quan

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

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

Tài liệu liên quan