Một số bài toán tối ưu rời rạc trong lý thuyết đồ thị

57 918 0
Một số bài toán tối ưu rời rạc trong lý thuyết đồ thị

Đ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

1 MỤC LỤC Trang 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ả Nguyễn Anh Văn 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 Tác giả Nguyễn Anh Văn năm 2014 DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Ký hiêu Từ viết tắt V Tập đỉnh đồ thị E Tập cạnh đồ thị G=(V,E) Đồ thị G với tập đỉnh V, tập cạnh E G=(V,E,A) Đồ thị G với tập đỉnh V, tập cạnh E, tập cung A e = (u,v) e cạnh đồ thị, u,v đỉnh deg(v) Bậc đỉnh v deg-(v), deg+(v) Bán bậc vào, bán bậc đỉnh v P Polynomial NP Nondeterministic Polynomial NP-C Nondeterministic Polynomial-Complete NP-Hard Nondeterministic Polynomial-Hard NTM Nondeterministic Turing Machine DTM Deterministic Turing Machines Diễn giải DANH MỤC BẢNG Trang Bảng 1.1 Liệt kê tất đỉnh kề với đỉnh đồ thị Bảng 1.2 Biểu diễn đồ thị có hướng hình 1.10 Bảng 2.1: Sắp xếp cạnh theo thứ tự trọng số tăng dần 12 12 23 DANH MỤC HÌNH Trang Hình 1.: Đồ thị vô hướng Hình 1.2: Đồ thị có hướng Hình 1.3: Đa đồ thị Hình 1.4: Đồ thị hỗn hợp Hình 1.5 Đồ thị có hướng Hình 1.6 Đường đồ thị vô hướng Hình 1.7 Đường đồ thị có hướng Hình 1.8 Đồ thị liên thông G đồ thị H gồm thành phần liên thông H1, H2, H3 Hình 1.9 Đơn đồ thị Hình 1.10 Đồ thị có hướng Hình 1.11 Đơn đồ thị Hình 1.12 Giả đồ thị Hình 1.13 Đồ thị vô hướng Hình 1.14 Mô hình phân lớp toán Hình 2.1 Đồ thịtrọng số biểu thị tiền thuê bao hàng tháng đường truyền thông mạng máy tính Hình 2.2 Đồ thịtrọng số G Hình 2.3 Đơn đồ thịtrọng số Hình 2.4 Dùng thuật toán Dijsktra tìm đường ngắn từ đỉnh a tới đỉnh z Hình 2.5 Đồ thị vô hướng Hình 2.6 Đơn đồ thị Hình 2.7 Hai đồ Hình 2.8 Các đồ thị đối ngẫu đồ hình 2.7 Hình 2.9 Đồ thị đơn G H Hình 2.10 Đồ thị G H tô màu Hình 2.11 Tô màu đồ thị vô hướng Hình 3.1 Bảng danh sách môn thi Hình 3.2 Đồ thị biểu diễn môn thi Hình 3.3 Đồ thị môn thi lên lịch Hình 3.4 Mẫu quản bậc học Hình 3.5 Mẫu quản phòng thực hành Hình 3.6 Mẫu quản thi Hình 3.7 Mẫu chọn nhóm cho môn thi Hình 3.8 Mẫu chọn phòng thực hành Hình 3.9 Mẫu xếp lịch thi 5 10 11 11 12 13 14 15 19 20 22 25 30 32 35 36 37 38 39 40 41 44 45 53 53 54 54 55 56 56 57 Hình 3.10 Mẫu đăng kí tài khoản Hình 3.11 Mẫu đăng nhập hệ thống Hình 3.12 Mẫu đổi mật 57 MỞ ĐẦU chọn đề tài Trong vài trăm năm qua người đạt nhiều thành tựu khoa học, thành tựu bùng nổ ngành khoa học máy tính Sự phát triển kỳ diệu máy tính kỷ gắn liền với phát triển toán học đại, toán rời rạc Toán học rời rạc nghiên cứu cấu trúc có tính chất rời rạc không liên tục Toán rời rạc bao gồm lĩnh vực quan hệ, thuyết đồ thị, logic toán, ngôn ngữ hình thức Trong thuyết đồ thị phận trọng tâm với nhiều khối lượng kiến thức thú nghiên cứu nhiều Toán rời rạc nói chung thuyết đồ thị nói riêng công cụ thiết yếu cho nhiều ngành khoa học kỹ thuật, thành phần quan trọng học vấn sinh viên ngành kỹ thuật thuyết đồ thị, với cách tiếp cận đối tượng nghiên cứu phương pháp tư độc đáo thực ngày hữu ích có nhiều ứng dụng phong phú gây không bất ngờ thuyết đồ thị lĩnh vực nghiên cứu có ý nghĩa thực tiễn cao lâu Những tư tưởng thuyết đồ thị đề xuất vào năm đầu kỷ 18 nhà toán học lỗi lạc người Thụy Sỹ: Leonhard Euler Chính ông người sử dụng đồ thị để giải toán tiếng cầu thành phố Konigberg Một cách không thức, đồ thị tập đối tượng gọi đỉnh (hoặc nút) nối với cạnh (hoặc cung) Cạnh có hướng vô hướng Đồ thị thường vẽ dạng tập điểm (các đỉnh nối với đoạn thẳng (các cạnh) Có nhiều loại đồ thị nghiên cứu cây, đồ thị ngẫu nhiên, đồ thị có hướng vô hướng, đồ thị trọng số trọng số Tuy nhiên, việc tính toán đồ thị thường cần khối lượng tính toán không gian nhớ lớn,vì gần với phát triển mạnh mẽ kỹ thuật máy tính điện tử, toán tối ưu đồ thị ngày quan tâm đạt nhiều kết khả quan Ngày nay, với phát triển mạnh mẽ khoa học công nghệ, đặc biệt máy tính, người ta có khả giải nhiều toán phức tạp Tuy nhiên, vấn đề “không giải được” cho dù kỹ thuật máy tính có phát triển có vấn đề xem “quá phức tạp”, vượt khả tính toán thực tế nhiều thời gian Việc nghiên cứu độ phức tạp thuật toán cho phép phân loại lớp toán theo mức độ phức tạp khác nhau, ranh giới lớp toán giải lớp toán giải thời gian đa thức Trong khuôn khổ luận văn thạc sỹ, chọn đề tài “Một số toán tối ưu rời rạc thuyết đồ thị” nhằm nghiên cứu thuyết đồ thị, độ phức tạp thuật toán Đối tượng nghiên cứu Tìm hiểu tổng quan tối ưu rời rạc, số toán tối ưu thuộc lớp P , NP-C thuyết đồ thị Phạm vi nghiên cứu Luận văn nghiên cứu kiến thức chung tối ưu rời rạc thuyết đồ thị, tập trung vào số toán tối ưu thuộc lớp P, NP-C thuyết đồ thị thuật giải chúng Nhiệm vụ nghiên cứu Tìm hiểu chung tối ưu rời rạc thuyết đồ thị Tìm hiểu số toán tối ưu thuộc lớp P (Polynomial) thuyết đồ thị thuật giải - Tìm hiểu số toán tối ưu thuộc lớp NP-hard thuyết đồ thị thuật giải - Cài đặt thuật toán thử nghiệm Những nội dung nghiên cứu - Bố cục luận văn gồm phần mở đầu trình bày chọn đề tài, đối tượng nhiệm vụ nghiên cứu đề tài Chương một, tập trung trình bày số kiến thức thuyết đồ thị toán NP-C Chương hai, trình bày số toán tối ưu lớp P đồ thị Chương 3, số toán tối ưu thuộc lớp NP-C đồ thị, chương trình bày phần cài đặt chương trình ứng dụng Với kết đạt được, phần cuối luận văn nêu tính hiệu nghiên cứu, đánh giá thuật toán nêu vài đề xuất nhằm tối ưu thuật toán, đánh giá kết đạt được, hạn chế đề xuất hướng nghiên cứu đề tài Phương pháp nghiên cứu - Phương pháp đọc tài liệu - Phương pháp quan sát - Phương pháp phân tích – tổng hợp thuyết - Phương pháp thực nghiệm 10 Chương 1: MỘT SỐ KIẾN THỨC CƠ BẢN VỀ THUYẾT ĐỒ THỊ CÁC BÀI TOÁN NP-C 1.1 Các khái niệm đồ thị Định nghĩa đồ thị Trong toán học tin học, đồ thị đối tượng nghiên cứu thuyết đồ thị Một cách không thức, đồ thị tập đối tượng gọi đỉnh nối với cạnh Thông thường, đồ thị vẽ dạng tập điểm (đỉnh, nút) nối với đoạn thẳng (cạnh) Tùy theo ứng dụng mà số cạnh có hướng Chúng ta phân biệt loại đồ thị khác kiểu số lượng cạnh nối hai đỉnh đồ thị Định nghĩa 1.1 [3] Đơn đồ thị vô hướng G=(V, E) bao gồm V tập đỉnh, E tập cặp thứ tự gồm hai phần tử khác V gọi cạnh Hình 1.: Đồ thị vô hướng Định nghĩa 1.2.[3] Đa đồ thị vô hướng G=(V, E) bao gồm V tập đỉnh, E họ cặp thứ tự gồm hai phần tử khác V gọi cạnh Hai cạnh e1 e2 gọi cạnh lặp chúng tương ứng với cặp đỉnh Định nghĩa 1.3.[3] Đơn đồ thị có hướng G=(V, E) bao gồm V tập đỉnh, E tập cặp có thứ tự gồm hai phần tử khác V gọi cung Hình 1.2: Đồ thị có hướng Định nghĩa 1.4 [3] Đa đồ thị có hướng G=(V, E) bao gồm V tập đỉnh, E họ cặp có thứ tự gồm hai phần tử khác V gọi cung Hai cung e1 e2 gọi cung lặp chúng tương ứng với cặp đỉnh 43 Chương ÁP DỤNG THUẬT TOÁN TÔ MÀU ĐỒ THỊ, XÂY DỰNG CHƯƠNG TRÌNH XẾP LỊCH THI CHO KHOA KHOA HỌC CƠ BẢN CỦA TRƯỜNG CAO ĐẲNG NGHỀ CƠ GIỚI NINH BÌNH 3.1 Nghiệp vụ xếp lịch thi Khoa Khoa học Vào cuối học kỳ năm học, giáo vụ Khoa Khoa học phải lên lịch thủ công Excel cho nhiều học phần học kì bảng sau: Hình 3.1 Bảng danh sách môn thi Với 50 học phần học kì xếp lịch thủ công thời gian dễ có sai sót Vì với phát triển công nghệ thông tin việc xếp lịch thi cần thiết phải tin học hóa 3.2 Mối liên quan tô màu đồ thị xếp lịch thi Tô màu đồ thị có nhiều ứng dụng, có ứng dụng cho việc xếp lịch thi Thật ta phát biểu toán xếp lịch thi sau: xếp lịch thi gán thời gian thi cho học phần, cho sinh viên phải thi nhiều môn thời điểm Mối liên quan tô màu đồ thị xếp lịch thi rõ ràng, tô màu đồ thị gồm có yếu tố: tập đỉnh, tập cạnh tập màu tô Xếp lịch thi bao gồm: môn thi, sinh viên thời điểm thi Từ ta chuyển toán xếp lịch thi thành toán tô màu đồ thị sau: môn thi xem đỉnh đồ thị, môn thi kề môn có sinh viên đăng kí học ( không tô màu hay nói cách khác không thi thời điểm) từ nói sinh viên cạnh nối môn mà họ học, thời điểm thi xem tập màu tô Xây dựng thuật toán xếp lịch thi dựa thuật toán tô màu đồ thị Input: Danh sách môn thi, danh sách thời gian thi, danh sách phòng thực hành, danh sách nhóm 44 Output: Danh sách môn thi lên lịch, môn thực hành phải gán phòng thực hành Các bước thực hiện: B1: Gom nhóm môn thi theo nhóm cho môn không thi trùng thành nhóm (các môn cao đẳng, môn trung cấp, môn sử dụng chung phòng thi viết, vấn đáp thực hành,….) B2: Xếp phòng thực hành môn thi thực hành B3: Thiết lập đồ thị cho toàn môn thi: hai môn thi nhóm nối với B4: Áp dụng thuật toán tô màu đồ thị để gán thời điểm thi cho môn thi: B4.1: Lập danh sách môn thi theo thứ tự giảm bậc, đặt i=1, với i thứ tự thời điểm thi B4.2: Gán thời điểm thi thứ i cho môn đầu tiên, duyệt môn gán thời điểm thứ i cho môn chung cạnh với môn gán thời điểm thứ i B4.3: Nếu gán xong thời điểm thi cho môn dừng thuật toán, lịch thi xếp i thời điểm, ngược lại chuyển sang B4.4 B4.4: Xóa khỏi danh sách môn thi xếp lịch, lập lại danh sách với môn thi chưa lên lịch với thứ tự bậc giảm dần, đặt i=i+1; quay lại B4.2 Ví dụ: Xếp lịch thi cho môn sau: Mạng máy tính, hệ cao đẳng, thi máy Toán rời rạc, hệ cao đẳng, thi tự luận Lập trình web, hệ trung cấp, thi máy Phát triển ứng dụng web với ASP.NET, hệ cao đẳng, thi máy Kiến trúc tổ chức máy tính, hệ trung cấp, thi tự luận Tin học sở, hệ trung cấp, thi máy Chuyên đề 1, hệ trung cấp, thi tự luận Với phòng thực hành: A6.MT, A21.3 Thời gian thi: 7h-15/10, 9h-15/10, 13h-15/10, 15h-15/10, 7h-16/10, 9h16/10 Xếp lịch: B1: phân nhóm + Nhóm cao đẳng: Toán rời rạc(2) + Nhóm trung cấp: Kiến trúc tổ chức máy tính(5), Chuyên đề 1(7) + Nhóm cao đẳng, thực hành: Mạng máy tính(1), Phát triển ứng dụng web với ASP.NET(4) + Nhóm trung cấp, thực hành: Lập trình web(3), Tin học sở(6) B2: gán phòng cho môn thực hành + Mạng máy tính(1): phòng A21.3 + Phát triển ứng dụng web với ASP.NET(4): phòng A6.MT 45 + Lập trình web(3): phòng A6.MT + Tin học sở(6): phòng A21.3 B3: tạo đồ thị tương ứng với môn học Hình 3.2 Đồ thị biểu diễn môn thi Số đỉnh số thứ tự môn thi B4: áp dụng thuật toán tô màu đồ thị để tiến hành xếp lịch thi cho môn B4.1: tạo danh sách môn theo bậc giảm dần E’=(3,6,1,4,5,7,2), đặt i=1; B4.2: lấy thi thứ xếp cho môn thứ (3), duyệt danh sách xếp cho môn thứ (1) B4.3: môn chưa xếp lịch xong, chuyển sang B4.4 B4.4: loại bỏ môn (3) (1) khỏi danh sách, xếp lại E’ ta E’=(6,4,5,7,2), tăng i=2, trở B4.2 B4.2: lấy thi thứ hai xếp cho môn thứ (6), duyệt danh sách xếp cho môn thi thứ (4) B4.3: môn chưa xếp lịch xong, chuyển sang B4.4 B4.4: loại bỏ môn (6) (4) khỏi danh sách, xếp lại E’ ta E’=(5,7,2), tăng i=3, trở B4.2 B4.2: lấy thi thứ xếp cho môn thi thứ (5), duyệt môn danh sách xếp cho môn thứ (2) B4.3: môn chưa xếp lịch xong, chuyển sang B4.4 B4.4: loại bỏ môn (5) (2) danh sách, xếp lại E’ ta E’=(7), tăng i=4, quay lại B4.2 B4.2: lấy màu thứ tư xếp cho môn thi thứ (7) B4.3: môn thi xếp lịch, dừng thuật toán, cần dùng thi để xếp lịch cho môn thi 46 Hình 3.3 Đồ thị môn thi lên lịch 3.3 Xây dựng chương trình xếp lịch thi Cài đặt bước thuật toán: Trong chương trình sử dụng khái niệm sau: Có nhóm thi: Cao đẳng; Trung cấp; nhóm thực hành, vấn đáp, thi máy; nhóm thi lại - Các nhóm Cao đẳng nối với - Các nhóm Trung cấp nối với - Các nhóm thực hành, vấn đáp, thi máy dùng chung phòng nối với (số lượng phòng thực hành có hạn ) Bước 1: Gom nhóm môn thi theo nhóm cho môn không thi trùng thành nhóm (các môn cao đẳng, môn trung cấp, môn thực hành sử dụng chung phòng thực hành,….) Bước 2: Xếp phòng thực hành môn thi thực hành Bước 3: Thiết lập đồ thị cho toàn môn thi: hai môn thi nhóm nối với ( Cài đặt bước hàm sau) DanhSachMonThi DsMonThi() { DanhSachMonThi Dsmt = newDanhSachMonThi(newList()); foreach (DataGridViewRow r in grwDanhSach.Rows) if (Convert.ToString(r.Cells["NHÓM"].Value) != "") //Duyệt qua tất môn thi mà xét thuộc hệ (Cao đẳng, Trung cấp ) { MonThi mt = newMonThi(Convert.ToString(r.Cells["MÃ HP"].Value)); // Với môn, tạo đối tượng môn học 47 string phong1 =Convert.ToString (((DataGridViewTextBoxCell) r.Cells["PHÒNG"]).Value); // xem môn xếp vào phòng string nhom1 = Convert.ToString(r.Cells["NHÓM"].Value); // vào thuộc nhóm thi (cao đẳng hay trung cấp) if (phong1 != "") // không xếp phòng phòng thi máy mt.DungPhongMay = true; foreach (DataGridViewRow r2 in grwDanhSach.Rows) //Duyệt qua danh sách môn học lần nữa, tìm môn học hệ với môn học xét cho vào danh sách láng giềng { if (r2.Index != r.Index) //những môn học "khác" có nghĩa không xét { string nhom2 = Convert.ToString(r2.Cells["NHÓM"].Value); // xem môn thuộc nhóm string phong2 = Convert.ToString(((DataGridViewTextBoxCell) r2.Cells["PHÒNG"]).Value); // thuộc phòng if (DuLieu.KiemTraTrung(nhom1, nhom2) || DuLieu.KiemTraTrung(phong1, phong2)) // chung hệ , khác hệ mà chung phòng, ta xét cho láng giềng mt.ThemMonCungNhom(Convert.ToString(r2.Cells[1].Valu e)); // xét cho môn r2 láng giềng môn r1 } } Dsmt.ds.Add(mt); // thêm r1 vào danh sách môn thi } return Dsmt; // duyệt qua tất dòng ta trả danh sách môn thi với đầy đủ thông tin môn thi láng giềng } Bước 4: Áp dụng thuật toán tô màu đồ thị để gán thời điểm thi cho môn thi: Sau có danh sách môn thi rồi, ta tiến hành thực xếp lịch Input cho lịch thi list môn cần xếp list thi thi privatevoid btnXepLichThi_Click(object sender, EventArgs e) 48 { LenLichThi llt = newLenLichThi(DsMonThi(), GioThi.GetAll);//Tạo đối tượng xếp lịch thi với đầy đủ input if (llt.ThucHien())// Sau thực sếp lịch thi với thuật toán tô màu XuLyDataGridView.ShowData(llt.DsMonThiDaXep, grwDanhSach, "NGÀY", "GIỜ THI"); } Hàm quan trọng thuật toán tô màu phải tìm số lượng màu tối thiểu để tô cho đỉnh đồ thị Ở màu số tiết đỉnh môn cần xếp Số lượng màu tối thiểu số bậc lớn đồ thị (bậc số lượng môn thi nhóm) publicint SoLuongMau { get { int sl = 0; foreach (MonThi mt in ds) if (sl < mt.DSMonCungNhom.Count) sl = mt.DSMonCungNhom.Count; return sl; } } // Sắp xếp danh sách giảm dần theo bậc publicvoid SortGiam() { ds.Sort(delegate(MonThi mt1, MonThi mt2) { return -mt1.DSMonCungNhom.Count.CompareTo(mt2.DSMonCungNhom.Count); } } publicbool ThucHien() { if (DsMonThi.SoLuongMau > DSGioThi.Count) //Nếu số lượng màu số lượng màu tối thiểu, báo lỗi 49 return BatLoi.ThongBao2("Số lượng thi sử dụng không đủ để xếp lịch Vui lòng kiểm tra lại"); try { TienTrinh = newThread(ShowProcess); TienTrinh.Start(); int TietXep = 0; // đánh dấu tiết xét while (DsMonThi.Length > 0) //duyệt qua danh sách môn thi { DsMonThi.SortGiam(); // Bước 4.1 xếp giảm dần theo bậc if (DuocPhepTo(DsMonThi[0], TietXep)) // Với môn thi đầu tiên, kiểm tra môn thi "có thể gán cho tiết i" hay không { DsMonThi.SetGio(DsMonThi[0], DSGioThi[TietXep]); // Nếu được, bước 4.2 Gán thời điểm thi thứ i cho môn đầu tiên, UpdateDs(DsMonThi[0]); // thực việc cập nhật lại dánh sách môn thi } for (int i = 0; i < DsMonThi.Length; i++) // Duyệt qua danh sách môn thi lại { MonThi mt2 = DsMonThi[i]; if (!GioDaDung(DsMonThi[i], TietXep) && DuocPhepTo(DsMonThi[i], TietXep)) //Kiểm tra xem tiết có tô hay không { DsMonThi.SetGio(mt2, DSGioThi[TietXep]); // Nếu phép gán tiết cho môn học UpdateDs(mt2); //Sau update lại danh sách môn thi i- -; } } TietXep++; // Với màu thứ nhất, không môn xếp cho màu này, ta chuyển qua màu }//B4.4: Xóa khỏi danh sách môn thi xếp lịch, lập lại danh sách với môn thi chưa lên lịch với thứ tự bậc giảm dần, đặt i=i+1; quay lại B4.2 } catch (Exception) 50 { TienTrinh.Abort(); returnfalse; } TienTrinh.Abort(); returntrue; } } void UpdateDs(MonThi mt) { DsMonThi.ThemTietDaTo(mt, DSGioThi.IndexOf(mt.Tiet)); // sử dụng hàm bên để đánh dấu màu cấm DsMonThi.Remove(mt); //Xóa môn khỏi danh sách cần xếp DsMonThiDaXep.Add(mt); // thêm vào danh sách môn xếp } // Hàm sử dụng để đánh dấu tiết sử dụng để tô màu cho môn học (nghĩa cho vào danh sách cấm) publicvoid ThemTietDaTo(MonThi mthi, int Tiet) { foreach (string mhp in mthi.DSMonCungNhom) //Duyệt qua danh sách môn chung nhóm với môn sau try { this[mhp].ThemMauCam(Tiet); // thêm tiết i vào danh sách màu cấm cho môn } catch (Exception) { } } 51 Các chức chương trình: a) Chức quản bậc học Hình 3.4 Mẫu quản bậc học Chức cho phép người sử dụng nhập tên bậc học vào textbox để thêm vào danh sách, nút xóa sau tên bậc học danh sách cho phép xóa bậc học không quản nữa, để hoàn tất cài đặt Bậc học, nhấn lưu để lưu lại thay đổi, ngược lại nhấn thoát để thoát b) Chức quản phòng thực hành Hình 3.5 Mẫu quản phòng thực hành Tương tự chức quản bậc học, chức quản phòng thực hành cho phép người dùng nhập tên phòng thực hành, sức chứa phòng, nút xóa để xóa phòng không quản nữa, nút lưu để hoàn tất trình cài đặt, nút thoát để thoát khỏi cài đặt mà không lưu lại thay đổi c) Chức quản thời gian Hình 3.6 Mẫu quản thi 52 Chức quản thời gian thi cho phép người dùng chọn ngày bắt đầu ngày kết thúc mùa thi, click vào lấy ngày chương trình tự động lấy thi khoảng thời gian với quy tắc ngày có ca thi(7h, 9h, 13h 15h) để đưa vào danh sách, thi danh sách có nút xóa để xóa thuộc cấm d) Chức chọn nhóm Hình 3.7 Mẫu chọn nhóm cho môn thi Chức chọn nhóm lấy danh sách môn thi ta đưa vào chương trình, từ cho phép người dùng chọn nhóm thủ công cho môn thi cách click chuột vào nút chọn môn thi để thêm nhóm cho môn thi đó, chọn tự động, để chương trình tự động xếp nhóm cho môn thi, chức tự động phân nhóm cho nhóm trung cấp trung cấp 53 e) Chức chọn phòng Hình 3.8 Mẫu chọn phòng thực hành Chức tự động lọc môn thi có hình thức thi thực hành lên form CHỌN PHÒNG THI để thực gán phòng thi cho môn thi, nút chấp nhận để lưu lại thay đổi người dùng hủy để thoát khỏi cài đặt mà không lưu lại thay đổi f) Chức xếp lịch Hình 3.9 Mẫu xếp lịch thi Sau chọn nhóm phòng thực hành cho môn thi, người dùng nhấp nút Xếp Lịch để chương trình tự động gắn thời gian thi cho môn thi 54 Các chức phụ chương trình: a) Chức tạo tài khoản, đăng nhập Hình 3.10 Mẫu đăng kí tài khoản Hình 3.11 Mẫu đăng nhập hệ thống Nếu chương trình chạy lần đầu tiên, chưa có thông tin người sử dụng chương trình có phép người dùng tạo tài khoản hệ thống, lần sử dụng sau bắt buộc phải đăng nhập để sử dụng chương trình b) Chức đổi mật Hình 3.12 Mẫu đổi mật Chức cho phép người dùng thay đổi mật trình sử dụng để bảo đảm an toàn thông tin 55 c) Chức lưu kết tập tin excel Sau xếp lịch, chương trình cho phép lưu kết lại dạng file excel để tiện xem lại d) Chức in ấn Sau xếp lịch chương trình cho phép in kết xếp lịch e) Chức hướng dẫn sử dụng Chức hướng dẫn sử dụng hướng dẫn cho người dùng bước để sử dụng chương trình cách hiệu 56 KẾT LUẬN Với mục đích nghiên cứu vấn đề số toán tối ưu rời rạc thuyết đồ thị Luận văn tập trung nghiên cứu giải vấn đề sau: Kiến thức thuyết đồ thị, thuyết toán lớp P, NP NPC Trình bày vấn đề xoay quanh toán tìm khung bé - thuật toán Kruskal, toán tìm đường ngắn -thuật toán Dijkstra, toán phủ đỉnh, toán bè cực đại, toán tô màu đồ thị Từ thuyết thuật toán tô màu đồ thị, đề xuất thuật toán xếp lịch thi với môn thi nút, thời điểm thi màu tô Xây dựng hoàn chỉnh chương trình xếp lịch thi triển khai áp dụng cho khoa Trường Cao đẳng nghề Cơ Giới Ninh Bình Chương trình chạy thử nghiệm cho kết tốt với mẫu liệu lấy từ Khoa Khoa học học kì I học kì II năm học 2013-2014 57 DANH MỤC TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt [1] Đặng Quang Á, Bài giảng Một số phương pháp toán học chọn lọc CNTT [2] Kenneth H Rosen (Người dịch: Phạm Văn Thiều, Đặng Hữu Thịnh), Toán rời rạc ứng dụng tin học, NXB Khoa học Kỹ thuật, 2003 [3] Nguyễn Tô Thành, Nguyễn Đức Nghĩa, Giáo trình Toán rời rạc NXB, Trường Đại học Bách Khoa Hà Nội [4] Nguyễn Đức Nghĩa, Nguyễn Thanh Hùng, Giáo trình thuyết đồ thị NXB Đại học Quốc gia TPHCM Tài liệu tiếng Anh [5] Panos M Pardalos and Jue Xue, The Maximum Clique Problem Journal of Global Optimization, 4:301–324, 1994 [6] C Fulves and M Gardner, The Kruskal Principle, The Pallbearers Review, June 1975 [7] C.L Liu, Introduction to Combinatorial mathematics, McGraw-Hill Book Com-pany, 1968 ... chọn đề tài Một số toán tối ưu rời rạc lý thuyết đồ thị nhằm nghiên cứu lý thuyết đồ thị, độ phức tạp thuật toán Đối tượng nghiên cứu Tìm hiểu tổng quan tối ưu rời rạc, số toán tối ưu thuộc lớp... Tìm hiểu chung tối ưu rời rạc lý thuyết đồ thị Tìm hiểu số toán tối ưu thuộc lớp P (Polynomial) lý thuyết đồ thị thuật giải - Tìm hiểu số toán tối ưu thuộc lớp NP-hard lý thuyết đồ thị thuật giải... lớp P , NP-C lý thuyết đồ thị Phạm vi nghiên cứu Luận văn nghiên cứu kiến thức chung tối ưu rời rạc lý thuyết đồ thị, tập trung vào số toán tối ưu thuộc lớp P, NP-C lý thuyết đồ thị thuật giải

Ngày đăng: 14/04/2017, 22:48

Từ khóa liên quan

Mục lục

  • 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 1: MỘT SỐ KIẾN THỨC CƠ BẢN VỀ LÝ THUYẾT ĐỒ THỊ CÁC BÀI TOÁN NP-C

    • 1.1. Các khái niệm cơ bản về đồ thị

      • Định nghĩa đồ thị

      • 1.1.1. Các thuật ngữ cơ bản

      • 1.1.2. Đường đi, chu trình và đồ thị liên thông

      • 1.1.3. Đồ thị có trọng số

      • 1.1.4. Các cấu trúc dữ liệu biểu diễn đồ thị

      • 1.2. Khái niệm về lớp các bài toán P và NP

        • 1.2.1. Khái niệm các loại thời gian tính

        • 1.2.2. Lớp bài toán P.

        • Ví dụ 1.11: [2] Thuật toán Kruskal tìm cây khung bé nhất của một đồ thị có V là số đỉnh và E là số cạnh với thời gian O(E log V). Thời gian thực hiện bởi máy Turing cũng cùng bậc như vậy.

        • 1.2.3. Lớp bài toán NP.

        • Định nghĩa 1.20.[1] Ngôn ngữ L thuộc lớp NP (Nondeterministic Polynomial) nếu  máy Turing không đơn định M và một độ phức tạp thời gian T(n) sao cho L=L(M) và khi M được cho một nguyên liệu có độ dài n thì nó sẽ kiểm nhận sau không quá T(n) bước chuyển.

        • 1.2.4. Lớp bài toán NP-đầy đủ (NP-Complete).

        • 1.2.5. Lớp bài toán NP-khó (NP-Hard).

        • Chương 2. MỘT SỐ BÀI TOÁN TỐI ƯU LỚP P, NP-C TRONG ĐỒ THỊ

          • 2.1. Bài toán tìm cây khung bé nhất -Thuật toán Kruskal

          • 2.2. Bài toán tìm đường đi ngắn nhất -Thuật toán Dijkstra [2]

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

Tài liệu liên quan