(Luận văn thạc sĩ) thuật toán xấp xỉ ứng dụng vào một số bài toán lớp NP

72 1 0
  • Loading ...
    Loading ...
    Loading ...

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Tài liệu liên quan

Thông tin tài liệu

Ngày đăng: 10/06/2021, 09:16

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THƠNG NGUYỄN HỮU CHUN THUẬT TỐN XẤP XỈ ỨNG DỤNG VÀO MỘT SỐ BÀI TOÁN LỚP NP LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH Thái Nguyên – 2020 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN HỮU CHUYÊN THUẬT TOÁN XẤP XỈ ỨNG DỤNG VÀO MỘT SỐ BÀI TOÁN LỚP NP LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 84 01 01 Người hướng dẫn: TS Vũ Vinh Quang Thái Nguyên - 2020 i LỜI CẢM ƠN Để hoàn thành luận văn trước tiên, em xin gửi lời cảm ơn sâu sắc tới thầy giáo hướng dẫn TS Vũ Vinh Quang tận tình hướng dẫn đưa nhiều ý kiến đóng góp cho em suốt q trình thực hồn thành luận văn Em xin gửi lời cảm ơn đến thầy giáo, cô giáo Trường Đại học Công nghệ Thông tin Truyền thông – Đại học Thái Nguyên trực tiếp giảng dạy truyền đạt kiến thức quý báu cho em suốt trình học tập trường Mặc dù cố gắng hoàn thành luận văn phạm vi khả mình, nhiên khơng tránh khỏi thiếu sót Em mong nhận cảm thông bảo quý thầy cô bạn Em xin chân thành cảm ơn ii LỜI CAM ĐOAN Tôi xin cam đoan Luận văn “Thuật toán xấp xỉ ứng dụng vào số tốn lớp NP” tơi thực hướng dẫn trực tiếp thầy TS Vũ Vinh Quang Các kết quả, số liệu nêu luận văn trung thực Tất tham khảo từ nghiên cứu liên quan nêu rõ nguồn gốc danh mục tài liệu tham khảo rõ tham khảo tài liệu Mọi chép không hợp lệ vi phạm quy chế đào tạo, tơi xin chịu hồn tồn trách nhiệm HỌC VIÊN Nguyễn Hữu Chuyên iii MỤC LỤC LỜI CẢM ƠN I LỜI CAM ĐOAN II DANH MỤC CÁC BẢNG V DANH MỤC CÁC HÌNH V LỜI MỞ ĐẦU CHƯƠNG MỘT SỐ KIẾN THỨC CƠ BẢN 1.1 Thuật toán 1.1.1 Khái niệm toán 1.1.2 Khái niệm thuật toán 1.1.3 Các yêu cầu thuật toán 1.1.4 Các phương pháp mơ tả thuật tốn 1.2 Độ phức tạp thuật toán .4 1.2.1 Chi phí phải trả cho q trình tính toán 1.2.2 Thời gian thực giải thuật .4 1.2.3 Độ phức tạp thuật toán 1.2.4 Các qui tắc xác định độ phức tạp thuật toán 1.3 Vấn đề phân lớp toán .6 1.4 Mơ hình Bài tốn Knapsack .7 Hình 1.1 Bài tốn xếp ba lơ dạng 0-1 CHƯƠNG 13 MỘT SỐ THUẬT TOÁN XẤP XỈ 13 2.1 Khái niệm thuật toán xấp xỉ 13 2.2 Phương pháp quy hoạch động 15 2.2.1 Một số khái niệm 15 2.2.2 Các bước thực .16 2.3 Phương pháp tham lam 19 2.3.1 Giới thiệu chung 19 2.3.2 Đặc trưng phương pháp tham lam 20 2.3.3 Các thành phần .20 iv 2.3.4 Các bước xây dựng thuật toán tham lam 21 2.3.5 Mô hình thuật tốn tham lam .22 2.4 Thuật toán Di truyền GA 27 2.4.1 Giới thiệu .27 2.4.2 Các khái niệm 28 2.4.3 Thuật toán GA .29 2.4.4 Cơ chế thực GA 29 CHƯƠNG 37 MƠ HÌNH BÀI TỐN LẬP LỊCH TRONG BỆNH VIỆN 37 3.1 Đặt vấn đề 37 3.2 Giới thiệu tổng quan bệnh viện A 37 3.3 Các mơ hình phân cơng ca trực 40 3.3.1 Bài tốn phân cơng trực khoa chun mơn 41 3.3.2 Bài tốn phân cơng trực Phịng khám 45 KẾT LUẬN 60 TÀI LIỆU THAM KHẢO 61 PHẦN PHỤ LỤC 62 v DANH MỤC CÁC BẢNG STT 10 11 12 13 14 15 16 17 18 19 Tên bảng Bảng 2.1 Mô tả bảng phương án phương pháp quy hoạch động Bảng 3.1: Ma trận ràng buộc B Bảng 3.2: Ma trận ràng buộc Y Bảng 3.3: Lịch trực buổi tuần Bảng 3.4: Số buổi trực Bác sĩ – Y tá Bảng 3.5: Bảng Bác sĩ phù hợp với chun mơn phịng khám (tham lam) Bảng 3.6: Bảng Y tá phù hợp với chuyên môn phòng khám (tham lam) Bảng 3.7: Bảng Bác sĩ sẵn sàng nhận buổi trực (tham lam) Bảng 3.8: Bảng Y tá sẵn sàng nhận buổi trực (tham lam) Bảng 3.9: Lịch trực phòng buổi (tham lam) Bảng 3.10: Số buổi trực Bác sĩ (tham lam) Bảng 3.11: Số buổi trực Y tá (tham lam) Bảng 3.12: Bảng Bác sĩ phù hợp với chun mơn phịng khám (GA) Bảng 3.13: Bảng Y tá phù hợp với chuyên mơn phịng khám (GA) Bảng 3.14: Bảng Bác sĩ sẵn sàng nhận buổi trực (GA) Bảng 3.15: Bảng Y tá sẵn sàng nhận buổi trực (GA) Bảng 3.16: Lịch trực phòng buổi (GA) Bảng 3.17: Số buổi trực Bác sĩ (GA) Bảng 3.18: Số buổi trực Y tá (GA) DANH MỤC CÁC HÌNH STT Tên hình Khối bắt đầu (Kết thúc) Khối kiểm tra Khối tính tốn Cung định hướng Hình LỜI MỞ ĐẦU Trong thực tế, lớp toán giải thuật tốn có thời gian đa thức không nhiều mà chủ yếu gặp tốn tối ưu mà việc tìm lời giải tốn khơng thời gian đa thức (cịn gọi lớp NP, NPC) Để giải tốn này, nói chung người ta phải xây dựng thuật tốn tìm nghiệm gần tối ưu cho toán Các thuật toán thường gọi thuật toán xấp xỉ thuật toán gần Các thuật toán mục tiêu nghiên cứu quan trọng công nghệ thông tin đặc biệt lớp toán liệu lớn Nội dung luận văn nghiên cứu sở toán học thuật toán gần giải lớp toán thuộc lớp NP NPC, tìm hiểu chi tiết bước mơ tả thuật toán yêu cầu thiết kế thuật toán Trên sở thuật toán nghiên cứu, luận văn phân tích số tốn thuộc lớp NP, NPC, xây dựng lời giải gần đúng, đánh giá kết Dự kiến nội dung báo cáo luận văn gồm: Phần mở đầu, chương chính, phần kết luận, tài liệu tham khảo, phụ lục Bố cục trình bày sau: Phần mở đầu luận văn đưa lý chọn đề tài hướng nghiên cứu luận văn Chương 1: Trình bày kiến thức thuật toán độ phức tạp thuật toán bao gồm: khái niệm thuật toán, Vấn đề đánh giá độ phức tạp thuật toán Phân lớp toán dựa độ phức tạp thuật tốn Chương 2: Trình bày sở toán học số thuật toán xấp xỉ bao gồm: thuật toán tham lam, thuật toán quy hoạch động, Thuật tốn GA số mơ hình thực tế toán NP, NPC như: Bài toán Knapsack , toán đổi tiền, toán Domino với thuật giải tương ứng Chương 3: Nghiên cứu mơ hình tốn lập lịch trực ca bệnh viện A Thái Nguyên bao gồm: Tìm hiểu xây dựng mơ hình tốn, xây dựng ràng buộc thực tế hàm mục tiêu, thiết lập điều kiện tối ưu Xây dựng thuật giải toán thuật toán tham lam GA cài đặt thuật tốn máy tính điện tử Tất thuật tốn tình bày luận văn cài đặt máy tính điện tử ngơn ngữ lập trình C++ Matlab CHƯƠNG MỘT SỐ KIẾN THỨC CƠ BẢN VỀ THUẬT TOÁN VÀ ĐỘ PHỨC TẠP CỦA THUẬT TỐN Nội dung chương trình bày kiến thức thuật toán độ phức tạp thuật toán bao gồm: khái niệm thuật toán, Vấn đề đánh giá độ phức tạp thuật toán Phân lớp toán dựa độ phức tạp thuật toán Các kiến thức tham khảo tài liệu [1, 2, 3, 5, 6, 7] 1.1 Thuật toán 1.1.1 Khái niệm toán Một toán tin học toán thỏa mãn: xuất phát từ INPUT đầu vào, phải thu OUTPUT đầu Một số vấn đề cần quan tâm + Bài tốn giải máy tính điện tử + Cần làm rõ: liệu cần đưa vào máy tính (Input) cần lấy (Output) thơng tin gì? + Làm để từ Input ta có Output? (Thuật tốn giải) Hiển nhiên toán tin học nghiên cứu thuật toán giải toán tương ứng 1.1.2 Khái niệm thuật toán Định nghĩa 1.1: Thuật toán dãy hữu hạn thao tác xếp theo trình tự định để sau thực dãy thao tác đó, từ input ta có output cần tìm [1] Trong lý thuyết thuật tốn, cụm từ “thuật tốn” đơi người ta dùng từ khác “giải thuật” 1.1.3 Các yêu cầu thuật toán Thuật toán phải đảm bảo yêu cầu sau đây: - Tính tổng quan: thuật tốn phải liệu đầu vào - Tính xác định: Các bước thuật tốn phải trình bày rõ ràng, mạch lạc, đảm bảo cho người đọc hiểu theo nghĩa - Tính khả thi: Thuật tốn phải thực được, nghĩa ta sử dụng máy tính kết hợp ngơn ngữ lập trình để thể thuật tốn thời gian hữu hạn - Tính dừng: Nếu liệu vào thỏa mãn điều kiện đầu vào thuật tốn phải kết thúc cho kết sau số hữu hạn bước - Tính xác (tính đắn): Thuật tốn phải cho kết xác thể đắn sở tốn học - Tính tối ưu: Thuật tốn phải có chi phí khơng gian nhớ chạy thời gian nhanh 1.1.4 Các phương pháp mơ tả thuật tốn Thuật toán thể cách sau:  Phương pháp liệt kê: Liệt kê bước để thực thuật toán, bước ta sử dụng ký hiệu toán học kết hợp với ngơn ngữ tự nhiên (cách dùng)  Phương pháp sử dụng sơ đồ khối Sử dụng ba loại hình khối để thể là: hình elip điểm bắt đầu hay kết thúc, hình thoi khối kiểm tra hình chữ nhật khối tính tốn Có cung định hướng để hướng thuật toán Khối bắt đầu (kết thúc) Khối kiểm tra Khối tính tốn Cung định hướng Ta kết hợp ba loại hình khối cung định hướng để biểu diễn thuật tốn  Mơ tả thuật tốn chương trình Sử dụng ngơn ngữ lập trình để thể thuật toán, cấu trúc chặt chẽ ngơn ngữ lập trình cho phép thể thuật toán cách rõ ràng dễ hiểu Phương pháp áp dụng rộng rãi Trong tài liệu, thủ tục thể thuật toán thường mô tả ngôn ngữ tựa Algol 51 Bộ số liệu Test + Số bác sĩ tham gia trực NBS=10 + Số y tá tham gia trực NYT=14 + Số phòng khám NP=7 + Số buổi lịch: NT=14 Bảng 3.5: Bảng bác sĩ phù hợp chun mơn với phịng khám (1-Phù hợp, 0-Không phù hợp) Bs Bs Bs Bs Bs Bs Bs Bs Bs Bs 10 Phòng Phòng Phòng Phòng Phòng 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Phòng Phòng 1 0 1 1 1 1 1 1 Bảng 3.6: Bảng y tá phù hợp chun mơn với phịng khám (1-Phù hợp, 0-Không phù hợp) Yta Yta Yta Yta Yta Yta Yta Yta Yta Yta 10 Yta 11 Yta 12 Yta 13 Yta 14 Phòng Phòng Phòng Phòng Phòng 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 Phòng Phòng 1 0 1 1 1 1 1 1 1 1 1 1 52 Bảng 3.7: Bảng Bác sĩ sẵn sàng nhận buổi trực (1-Sẵn sàng, 0-Không sẵn sàng) Bs Bs Bs Bs Bs Bs Bs Bs Bs Bs 10 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Bảng 3.8: Bảng Y tá sẵn sàng nhận buổi trực (1-Sẵn sàng, 0-Không sẵn sàng) Yta Yta Yta Yta Yta Yta Yta Yta Yta Yta10 Yta11 Yta12 Yta13 Yta14 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 53 Kết chạy chương trình số liệu thực tế đưa bảng 3.9 3.10 3.11 (Lap_lich_tham_lam_2) Bảng 3.9: Lịch trực phòng buổi (Số hiệu bác sĩ – Số hiệu y tá) P1 P2 P3 P4 P5 P6 P7 B1 2-2 1-4 9-11 8-7 3-3 7-12 4-5 B2 3-5 4-1 10-2 7-4 6-6 1-7 5-13 B3 5-3 6-6 2-4 8-8 10-5 9-1 4-9 B4 7-7 8-8 1-6 9-2 3-3 2-9 4-4 B5 10-10 9-9 4-5 5-12 1-1 3-3 6-4 B6 2-11 1-1 5-7 4-13 3-10 6-6 10-5 B7 3-12 4-4 6-8 2-9 10-3 8-10 1-6 B8 5-13 6-6 7-9 8-11 1-5 10-8 3-10 B9 7-14 8-8 9-10 2-2 6-6 3-11 5-12 B10 10-2 9-9 1-11 7-14 6-10 2-12 6-13 B11 2-3 1-12 10-13 9-7 3-11 6-14 8-8 B12 3-5 4-13 2-12 5-4 8-14 1-1 9-11 B13 5-7 6-14 4-1 7-8 9-13 8-2 10-3 B14 7-10 8-1 5-14 4-9 10-2 9-3 1-14 Bảng 3.10: Số buổi trực bác sĩ Bs1 11 Bs Bs3 10 Bs4 10 Bs5 10 Bs6 10 Bs7 Bs8 10 Bs9 10 Bs10 10 Bảng 3.11: Số buổi trực y tá YT1 YT2 YT3 YT4 YT5 YT6 YT7 YT8 YT9 YT10 YT11 YT12 YT13 YT14 7 8 7 7 7 7 Nhận xét: Kết nhận kết gần Điều kiện tối ưu chưa đảm bảo tốt thuật tốn khơng xét đến hàm mục tiêu (Chỉ xét theo thứ tự bác sĩ y tá để xếp vào lịch mà không đánh giá hàm mục tiêu) Phương án 2: Thuật toán GA Xây dựng cấu trúc liệu  Lựa chọn cấu trúc cá thể: Kí hiệu phương án xếp lịch cặp ma trận [ZBS(NPK,NBT) ;ZYT(NPK,NBT] - ZBS(p,t)=k : Phân cơng bác sĩ có số hiệu k trực phịng khám p, buổi t, - ZYT(p,t)=k : Phân cơng Y tá có số hiệu k trực phòng khám p, p  PK buổi t Như tập hợp phương án tập hợp cặp ma trận phần tử số nguyên dương có giá trị số hiệu Bác sĩ Y tá Điều kiện phân công hợp lệ cột ma trận ZBS ZYT 54 phần tử có giá trị trùng tức thời điểm bác sĩ y tá trực phòng khám  Hàm CBS(k) có giá trị tổng tất phần tử ma trận phương án ZBS thỏa mãn điều kiện ZBS(p,t)=k, với  p  NPK ;1  t  NBT ; Như CBS(k) tổng số buổi trực bác sĩ k tồn lịch trực  Hàm CYT(k) có giá trị tổng tất phần tử ma trận phương án ZYT thỏa mãn điều kiện XYT(p,t)=k, với  p  NPK ;1  t  NBT ; Như CYT(k) tổng số buổi trực y tá s toàn lịch trực Các ràng buộc toán + R1: Tại thời điểm t, bác sĩ trực nhiều phòng khám tương đương với điều kiện: Trên cột ma trận ZBS không tồn phần tử Xây dựng hàm R1(ZBS) để kiểm tra điều kiện R1 phương án ZBS + R2: Tại thời điểm t, y tá trực nhiều phòng khám tương đương với điều kiện: Trên cột ma trận ZYT không tồn phần tử Xây dựng hàm R2(ZYT) để kiểm tra điều kiện R2 phương án XY + R3: Chỉ xếp lịch trực cho bác sĩ sẵn sàng buổi trực tương ứng tương đương với điều kiện: Nếu ZBS(p,t)=s MBS(s,t)=1 hay MBS(ZBS(p,t),t)=1 + R4: Chỉ xếp lịch trực cho y tá sẵn sàng buổi trực tương ứng tương đương với điều kiện: Nếu ZYT(p,t)=s MYT(s,t)=1 hay MYT(ZYT(p,t),t)=1 + R5: Các bác sĩ Y tá phép trực phịng khám phù hợp chun mơn đào tạo tương đương với điều kiện: Nếu ZBS(p,t)=s PK(s,p)=1 hay PK(ZBS(p,t),p)=1 Nếu ZYT(p,t)=s PK(s,p)=1 hay PK(XY(p,t),p)=1 Kết hợp điều kiện R3,R4 R5, điều kiện thỏa mãn đồng thời 55 BT(XB(p,t),t)× PBS(XB(p,t),p) × BT(XY(p,t),t)× PYT(X(p,t),p)=1; với  p  NP;1  t  NT ; Xây dựng hàm R345(X) hàm kiểm tra điều kiện H3, H4 H3 phương án Z =[ZBS;ZYT] + R6: Tại thời điểm, phịng khám phải có bác sĩ trực y tá tương đương với tất phần tử cặp ma trận Z=[ZBS;ZYT] dương ZBS(p,t)>0; ZYT(p,t)>0; với  p  NP;1  t  NT ; Chúng ta kí hiệu hàm R6(X) để kiểm tra điều kiện H6 Hàm mục tiêu tốn: Vì tổng số buổi trực bác sĩ y tá ln NP×NT (Giả thiết tất phịng khám phải xếp kín tất buổi), sử dụng bất đẳng thức Bunhiakovski: “Tổng phần tử khơng đổi tích đạt giá trị lớn tất phần tử nhau”, ta suy để đảm bảo yêu cầu toán: số buổi trực bác sĩ xấp xỉ tương đương với: Hãy xác định phương án Z=[ZBS;ZYT] thỏa mãn tất ràng buộc để cho hàm mục tiêu: NBS FB( X )   CBS ( s )  max s 1 NYT FY ( X )   CYT (t )  max t 1 Như toán lập trực đưa toán: Hãy xác định phương án X thỏa mãn cás sĩc ràng buộc mô tả hàm ràng buộc R1(X), R2(X), R345(X), R6(X) để cho hàm mục tiêu F ( Z )  FB( ZBS )  FY ( ZYT )  max Thuật toán GA B1: Khởi tạo quần thể ban đầu 1.1 Sử dụng phương pháp khởi tạo ngẫu nhiên N cặp ma trận Z=[ZBS;ZYT] kích thước NBS×NYT phần tử khoảng (0,NBS+1);(0,NYT+1), cột ma trận thỏa mãn điều kiện R1 R345 1.2 Xác định độ thích nghi các cá thể quần thể xuất phát 56 1.3 Xác định giá trị hàm mục tiêu ban đầu B2: Quá trình lai ghép + Để đảm bảo ràng rành buộc, dụng phương pháp lai ghép điểm cắt theo chiều thời gian t cá thể thứ i (Bố) với cá thể thứ j (i
- Xem thêm -

Xem thêm: (Luận văn thạc sĩ) thuật toán xấp xỉ ứng dụng vào một số bài toán lớp NP , (Luận văn thạc sĩ) thuật toán xấp xỉ ứng dụng vào một số bài toán lớp NP