Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
Trang 1THÔNG TIN CHUNG VỀ ĐỀ TÀI
trong hệ tín chỉ
2 Nhóm sinh viên thực hiện
Khoa CNTT
Chủ nhiệm đề tài
Khoa CNTT Trường ĐH Đà Lạt
Trang 2LỜI CẢM ƠN
Trước tiên, nhóm nghiên cứu chúng tôi xin được gửi lời cảm ơn và lòng biết ơn sâusắc nhất tới thầy Thái Duy Quý, người đã tận tình chỉ bảo và hướng dẫn chúng tôitrong suốt quá trình thực hiện việc nghiên cứu đề tài này
Chúng tôi xin chân thành cảm ơn các thầy, cô giáo trong khoa Công nghệ thôngtin, trường Đại học Đà Lạt đã hỗ trợ chúng tôi rất nhiều về kiến thức chuyên môn đểhoàn thành tốt đề tài nghiên cứu khoa học này
Chúng tôi cũng xin chân thành cảm ơn các anh chị, bạn bè và các em sinh viêntrong khoa Công nghệ thông tin đã ủng hộ, giúp đỡ chúng tôi trong quá trình nghiêncứu
Cuối cùng, chúng tôi xin gửi lời biết ơn vô hạn tới gia đình và bạn bè, những ngườithân yêu luôn bên cạnh và động viên chúng tôi trong suốt quá trình thực hiện đề tàinày
Chúng tôi xin chân thành cảm ơn
Đà Lạt, tháng 8 năm 2012Nhóm nghiên cứu
Trang 3MỞ ĐẦU
Lý thuyết đồ thị là một lĩnh vực đã có từ lâu và có nhiều ứng dụng hiện đại Những
tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những năm đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sỹ Lenhard Eurler Chính ông là người đã sử dụng đồ thị để giải bài toán nổi tiếng về các cái cầu ở thành phố Konigsberg.
Đồ thị được sử dụng để giải các bài toán trong nhiều lĩnh vực khác nhau Chẳng hạn, đồ thị có thể sử dụng để xác định các mạch vòng trong vấn đề giải tích mạch điện Chúng ta có thể phân biệt các hợp chất hóa học hữu cơ khác nhau với cùng công thức phân tử nhưng khác nhau về cấu trúc phân tử nhờ đồ thị Chúng ta có thể xác định hai máy tính trong mạng có thể trao đổi thông tin được với nhau hay không nhờ mô hình đồ thị của mạng máy tính Đồ thị có trọng số trên các cạnh có thể sử dụng để giải các bài toán như: Tìm đường đi ngắn nhất giữa hai thành phố trong mạng giao thông Chúng ta cũng còn sử dụng đồ thị để giải các bài toán về lập lịch, thời khóa biểu, và phân bố tần số cho các trạm phát thanh và truyền hình.
Trong đề tài này chúng tôi trước hết trình bày thuật toán tô màu đồ thị, sau đó áp dụng thuật toán để xây dựng chương trình xếp lịch thi học kỳ với các môn học là các đỉnh và thời gian thi là các màu Dữ liệu chúng tôi áp dụng là lịch thi khoa Công nghệ Thông tin trong học kỳ gần nhất.
Trang 4DANH M C CÁC HÌNH, B NG ỤC CÁC HÌNH, BẢNG ẢNG
Hình 1 Đồ thị vô hướng 7
Hình 2 Đồ thị có hướng 8
Hình 3 Đồ thị đơn 8
Hình 4 Đa đồ thị 8
Hình 5 Đồ thị hỗn hợp 9
Hình 6 2 đồ thị đơn G và H 10
Hình 7 Đồ thị G và H đã được tô màu 10
Hình 8 Tô màu đồ thị vô hướng 11
Hình 9 Đồ thị biểu diễn các môn thi 15
Hình 10 Đồ thị các môn thi đã được lên lịch 16
Hình 11 Mẫu quản lý bậc học 16
Hình 12 Mẫu quản lý phòng thực hành 17
Hình 13 Mẫu quản lý giờ thi 17
Hình 14 Mẫu chọn nhóm cho các môn thi 18
Hình 15 Mẫu chọn phòng thực hành 19
Hình 16 Mẫu xếp lịch thi 19
Hình 17 Mẫu đăng kí tài khoản 20
Hình 18 Mẫu đăng nhập hệ thống 20
Hình 19 Mẫu đổi mật khẩu 20
Bảng 1 Bảng danh sách các môn thi 12
MỤC LỤC THÔNG TIN CHUNG VỀ ĐỀ TÀI……… 1
LỜI CẢM ƠN ……….…
2 MỞ ĐẦU ………
… 3
DANH MỤC CÁC HÌNH, BẢNG ……….……
4 MỤC LỤC ………
…….4
I.Tổng quan về tình hình nghiên cứu đề tài ……….…
… 6
II Sự cần thiết của đề tài ………
…….6
III Mục tiêu của đề tài ………
…… 6
IV Ý nghĩa khoa học, tính thực tiễn và khả năng ứng dụng ……….7
V Nội dung nghiên cứu ………7
1 Đồ thị và thuật toán tô màu đồ thị 7
a) Đồ thị 7
b) Thuật toán tô màu đồ thị 9
Thuật toán: 11
2 Nghiệp vụ xếp lịch thi của khoa Công nghệ thông tin 12
Trang 53 Mối liên quan giữa tô màu đồ thị và xếp lịch thi 12
4 Xây dựng thuật toán xếp lịch thi dựa trên thuật toán tô màu đồ thị 13
5 xây dựng chương trình xếp lịch thi 16
5.1 Các chức năng chính của chương trình: 16
a) Chức năng quản lý bậc học 16
b) Chức năng quản lý phòng thực hành 17
c) Chức năng quản lý thời gian 17
d) Chức năng chọn nhóm 18
e) Chức năng chọn phòng 19
f) Chức năng xếp lịch 19
5.2 Các chức năng phụ của chương trình 20
a) Chức năng tạo tài khoản, đăng nhập 20
b) Chức năng đổi mật khẩu 20
c) Chức năng lưu kết quả ra file excel 21
d) Chức năng in ấn 21
e) Chức năng hướng dẫn sử dụng 21
VI Kết luận và hướng phát triển ………
……… 21
Trang 6I Tổng quan về tình hình nghiên cứu đề tài.
Theo sự thống kê của Bộ giáo dục và đào tạo, tính đến ngày 31-5-2012, cả nước cótổng số 204 trường đại học (trong đó có 149 trường công lập, 55 trường ngoài cônglập) và 215 trường cao đẳng (trong đó có 187 trường công lập, 28 trường ngoài cônglập) Với sự phát triển rất nhanh số lượng trường đại học, cao đẳng và sự phát triểncủa công nghệ thông tin như hiện nay, công tác xếp lịch thi trong các trường hiện đã
và đang được tin học hóa thay cho phương pháp thủ công như trước đây
Bài toán xếp lịch có một lịch sử phát triển dài, trải qua nhiều sự thay đổi lớn Kể từnhững thế hệ đầu tiên của máy tính, người ta đã nghĩ đến việc sử dụng máy tính để trợgiúp người xếp lịch Ban đầu đó chỉ là những công cụ trợ giúp cho việc phân côngnhững công việc điều hành phối hợp Sau này mới thực sự được phát triển thànhnhững công cụ xếp lịch cụ thể
II Sự cần thiết của đề tài.
Với sự phát triển của nền giáo dục như hiện nay đặc biệt là giáo dục cao đẳng, đạihọc, công tác xếp lịch thi dần trở nên khó khăn, tốn thời gian và kém hiệu quả Bàitoán xếp lịch thi sao cho không có một sinh viên nào thi nhiều hơn một môn trongcùng một thời điểm là một bài toán mà rất nhiều trường đại học, cao đẳng chưa giảiquyết một cách tối nhất
Với sự phát triển mạnh mẽ của công nghệ thông tin, đã giúp con người giải quyếtrất nhiều bài toán, công việc khó khăn Việc áp dụng khoa học kĩ thuật để tự động hóaviệc xếp lịch thi là hết sức cần thiết
Đề tài này nhóm chúng em áp dụng thuật toán tô màu đồ thị để xây dựng mộtchương trình xếp lịch thi cho các khoa thuộc trường Đại học Đà Lạt
III Mục tiêu của đề tài.
Nhóm tìm hiểu về thuật toán tô màu đồ thị Tìm hiểu về nghiệp vụ xếp lịch thi củakhoa Công nghệ thông tin, trường đại học Đà Lạt, tìm hiểu mối liên quan giữa tô màu
đồ thị và xếp lịch thi trong hệ tín chỉ, từ đó xậy dựng một thuật toán xếp lịch thi chocác khoa trong trường đại học Đà Lạt
Nhóm xây dựng một chương trình hoàn chỉnh phụ vụ cho việc xếp lịch thi tự độngcho các khoa với mẫu dữ liệu của trường đại học Đà Lạt, tiến hành kiểm thử chươngtrình với mẫu dữ liệu của khoa Công nghệ thông tin
Trang 7Nhóm đề xuất một thuật toán xếp lịch thi cải tiến từ thuật toán tô màu để tối ưuviệc xếp lịch thi, tránh lãng phí tài nguyên phòng máy, và rãi đều thời gian thi cho cáclớp.
IV Ý nghĩa khoa học, tính thực tiễn và khả năng ứng dụng.
Sự phát triển nhanh chóng của giáo dục song song với sự phát triển mạnh mẽ củacông nghệ thông tin nói chung và đối với trường đại học Đà Lạt nói riêng, đề tàinguyên cứu của nhóm giúp phần tin học hóa công tác đào tạo cụ thể là công tác xếplịch thi của các khoa
Đề tài đã được nhóm xây dựng hoàn thiện và đã áp dụng được trên dữ liệu củakhoa Công nghệ thông tin, đề tài rất thích hợp với thực tiễn sử dụng của trường đạihọc Đà Lạt, vì các khoa hiện nay còn xếp lịch thi thủ công, giáo vụ xếp bằng tay trênfile dữ liệu excel
Nhóm nghiên cứu chúng em cũng đang tiến hành để hoàn thiện hơn chương trìnhnhầm trợ giúp cho công tác xếp lịch của các khoa ngày càng nhanh chóng và hiệu quảhơn
V Nội dung nghiên cứu.
1 Đồ thị và thuật toán tô màu đồ thị
a) Đồ thị
Đồ thị có nhiều loại: đồ thị vô hướng, đồ thị có hướng, đồ thị đơn, đa đồ thị và đồthị hỗn hợp
Đồ thị vô hướng là tập không thứ tự các đỉnh và cạch nối giữa hai cạnh của đồ thị:
G=(V,E), trong đó V là tập hữu hạn các cạnh của đồ thị, E là tập hữu hạn các cặp
không thứ tự chứa các đỉnh phân biệt, được gọi là cạnh Hai đỉnh thuộc một cạnhđược gọi là các đỉnh đầu cuối của cạnh đó
Hình 1 Đồ thị vô hướng
Đồ thị có hướng là một tập có thứ tự các đỉnh và cạnh có hướng nối hai cạnh của
đồ thị: G=(V,A) trong đó V là tập hữu hạn các đỉnh, A là tập các cặp có thứ tự chứa
Trang 8các đỉnh, được gọi là các cạnh có hướng hoặc cung Một cạnh e = (x, y) được coi là có hướng từ x tới y; x được gọi là điểm đầu/gốc và y được gọi là điểm cuối/ngọn của cạnh.
Trang 9b) Thuật toán tô màu đồ thị
Các khái niệm cơ bản:
Định nghĩa 1: Phép tô màu của một đồ thị đơn là một quy tắc tô mỗi đỉnh đồ thịmột màu cụ thể sao cho không có 2 đỉnh kề nhau nào được tô cùng màu Đồ thị có thể
tô màu bằng các màu khác nhau cho mỗi đỉnh Tuy nhiên, trong phần lớn các đồ thị,
ta có thể tô bằng số màu ít hơn số đỉnh Vậy số màu tối thiểu cần sử dụng là baonhiêu?
Định nghĩa 2: Số màu của một đồ thị G ( kí hiệu (G)) là số màu tối thiểu cần sử
dụng để tô màu đồ thị này Chú ý rằng số màu của 1 đồ thị phẳng chính là số màu tốithiểu cần sử dụng để tô màu các miền bản đồ phẳng sao cho không có 2 miền nào kềnhau và được tô cùng màu Bài toán này đã được nghiên cứu hơn 100 năm, dẫn đếnmột trong các định lí nổi tiếng nhất của toán học
Định lí 4 màu: Số màu của 1 đồ thị phẳng không lớn hơn 4 Giả thuyết 4 màu được
đề ra từ những năm 1850 Nó cuối cùng đã được chứng minh bởi 2 nhà toán học Mĩ là
Kenneth Appel và Wolfgang Haken năm 1976 Trước đó, nhiều người đã đề ra các
cách chứng minh khác nhau của bài toán, nhưng tất cả đều sai và thường mắc phảinhững lỗi khó phát hiện Bên cạnh đó là những cố gắngvô ích trong việc phủ định giảthuyết bằng cách chỉ ra những bản đồ đòi hỏi nhiều hơn 4 màu Định lí 4 màu chỉ ứngdụng trên đồ thị phẳng Đồ thị không phẳng có thể có số màu lớn hơn 4
Hình 6 2 đồ thị đơn G và H Lời giải: Số màu của đồ thị G tối thiểu là 3 do 3 đỉnh a, b, c phải đôi một khác màu nhau Giả sử G có thể tô bằng 3 màu Giả sử ta tô a màu đỏ, b màu xanh và c màu vàng Tiếp theo, d phải tô màu đỏ vì nó kề các đỉnh b , c; e phải tô màu vàng vì nó chỉ
Trang 10kềcác đỉnh màu màu đỏ và xanh; f phải tô màu xanh vì nó chỉ kề các đỉnh màu đỏ
vàvàng Cuối cùng g phải tô màu đỏ vì nó chỉ kề các đỉnh màu vàng và xanh Như
vậy, ta có thể tô màu G bằng 3 màu ->c(G)=3 Đồ thị H biến đổi từ đồ thị G thông qua việc nối 2 đỉnh a và g.
Lí luận tương tự như trên, ta thấy H phải tô tối thiểu bằng 3 màu Khi cố gắng tô H bằng 3 màu ta phải thông qua các lí luận tương tự như G khi tô màu tất cả các đỉnh trừ g Cuối cùng, g sẽ liền kề với các đỉnh có cả 3 màu đỏ, vàng, xanh, và ta buộc phải
sử dụng thêm màu thứ 4 (màu nâu) để tô màu nó Tóm lại, c(H)=4
Hình 7 Đồ thị G và H đã được tô màu
B2: Tô màu i cho đỉnh đầu tiên trong danh sách Duyệt lần lượt các đỉnh tiếp theo
và tô màu i cho đỉnh không kề đỉnh đã được tô màu i.
B3: Nếu tất cả các đỉnh đã được tô màu thì kết thúc, đồ thị được tô bằng i màu.
Ngược lại, sang B4
B4: Loại khỏi E’ các đỉnh đã tô màu Sắp xếp lại các đỉnh trong E’ theo thứ tự bậc giảm dần Đặt i := i + 1 và quay lại B2.
Trang 11Ví dụ: áp dụng thuật toán tô màu đồ thị phía dưới
Hình 8 Tô màu đồ thị vô hướng
Lời giải:
B1: Lập danh sách các đỉnh theo thứ tự giảm của bậc ta được E’=(A,D,B,E,F,C), đặt i = 1.
B2: Tô màu (1) cho đỉnh A, duyệt các đỉnh còn lại và tô màu (1) cho đỉnh C.
B3: Đồ thị chưa được tô màu hết, chuyển sang bước 4
B4: Loại đỉnh A và C ra khỏi E’, ta được E’=(D,B,E,F), tăng i lên i=2, quay lại
bước 2
B2: Tô màu (2) cho đỉnh D, duyệt các đỉnh còn lại nhưng không thể tô màu (2) cho
đỉnh nào nữa
B3: Đồ thị chưa được tô màu hết, chuyển sang bước 4
B4: Loại đỉnh D ra khỏi E’, ta được E’=(B,E,F), tăng i lên i=3, quay lại bước 2 B2: Tô màu (3) cho đỉnh B, duyệt các đỉnh còn lại và tô màu (3) cho đỉnh E.
B3: Đồ thị chưa được tô màu hết, chuyển sang bước 4
B4: Loại đỉnh B và E ra khỏi E’, ta được E’=(F), tăng i lên i=4, quay lại bước 2 B2: Tô màu (4) cho đỉnh F.
B3: Tất cả các đỉnh đã được tô màu hết, kết thúc thuật toán với số màu tô là 4
2 Nghiệp vụ xếp lịch thi của khoa Công nghệ thông tin
Vào cuối mỗi học kỳ của các năm học, giáo vụ khoa Công nghệ thông tin, hiện tại
là thầy Nguyễn Hữu Dương phải lên lịch thủ công trên excel cho rất nhiều các họcphần trong học kì như bản sau:
Trang 12Bảng 1 Bảng danh sách các môn thi
Với hơn 50 học phần trong mỗi học kì và xếp lịch thủ công như thế này rất mấtthời gian và dễ có sai sót Vị vậy cùng với sự phát triển của công nghệ thông tin nhưhiện nay việc xếp lịch thi cần thiết phải được tin học hóa
3 Mối liên quan giữa tô màu đồ thị và xếp lịch thi
Tô màu đồ thị có rất nhiều ứng dụng, và trong đó có cả ứng dụng cho việc xếp lịchthi Thật vậy ta có thể phát biểu bài toán xếp lịch thi như sau: xếp lịch thi là gán thờigian thi cho các học phần, sao cho không có sinh viên nào phải thi nhiều hơn một môntrong cùng một thời điểm
Mối liên quan giữa tô màu đồ thị và xếp lịch thi rất rõ ràng, tô màu đồ thị gồm có 3yếu tố: tập các đỉnh, tập các cạnh và tập các màu tô Xếp lịch thi bao gồm: các mônthi, sinh viên và thời điểm thi Từ đó ta chuyển bài toán xếp lịch thi thành bài toán tômàu đồ thị như sau: các môn thi được xem như các đỉnh của đồ thị, 2 môn thi kề nhau
là 2 môn có cùng sinh viên đăng kí học( không được tô cùng màu hay nói cách khác
là không được thi cùng một thời điểm) từ đó có thể nói sinh viên là một cạnh nối 2môn mà họ cùng học, các thời điểm thi được xem như tập màu tô
4 Xây dựng thuật toán xếp lịch thi dựa trên 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
Trang 13Output: Danh sách các môn thi đã được lên lịch, nếu là môn thực hành thì phảiđược gán phòng thực hành.
Các bước thực hiện:
B1: Gom nhóm các môn thi theo nhóm sao cho các môn không được thi trùng nhauthành một nhóm(các môn đại học, các môn cao đẳng, các môn thực hành sử dụngchung phòng thực hành,….)
B2: Xếp phòng thực hành đối với các môn thi thực hành
B3: Thiết lập đồ thị cho toàn bộ các môn thi: hai môn thi cùng nhóm thì nối vớinhau
B4: Áp dụng thuật toán tô màu đồ thị để gán các thời điểm thi cho các môn thi:
B4.1: Lập danh sách các môn thi theo thứ tự giảm của bậc, đặt i=1, với i là thứ tự
các thời điểm thi
B4.2: Gán thời điểm thi thứ i cho môn đầu tiên, duyệt lần lượt các môn tiếp theo và
gán thời điểm thứ i cho môn không có chung cạnh với môn đã được gán thời điểm thứ i.
B4.3: Nếu đã gán xong thời điểm thi cho các môn thì dừng thuật toán, lịch thi được
xếp bởi i thời điểm, ngược lại chuyển sang B4.4.
B4.4: Xóa khỏi danh sách các môn thi đã xếp lịch, lập lại danh sách mới với các
môn thi chưa được 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 7 môn như sau:
1 Mạng máy tính, hệ đại học, thi máy
2 Toán rời rạc, hệ đại học, thi tự luận
3 Lập trình web, hệ cao đẳng, thi máy
4 Phát triển ứng dụng web với ASP.NET, hệ đại học, thi máy
5 Kiến trúc và tổ chức máy tính, hệ cao đẳng, thi tự luận
6 Tin học cơ sở, hệ cao đẳng, thi máy
7 Chuyên đề 1, hệ cao đẳng, thi tự luận
Với các phòng thực hành: A6.MT, A21.3
Thời gian thi: 7h-15/10, 9h-15/12, 13h-15/10, 15h-15/10, 7h-16/10, 9h-16/10
Xếp lịch:
B1: phân nhóm
Trang 14+ Nhóm đại học: Toán rời rạc(2)
+ Nhóm cao đẳng: Kiến trúc và tổ chức máy tính(5), Chuyên đề 1(7)
+ Nhóm đại học, thực hành: Mạng máy tính(1), Phát triển ứng dụng web vớiASP.NET(4)
+ Nhóm cao đẳng, thực hành: Lập trình web(3), Tin học cơ sở(6)
B2: gán phòng cho các 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
+ Lập trình web(3): phòng A6.MT
+ Tin học cơ sở(6): phòng A21.3
B3: tạo đồ thị tương ứng với các môn học
Hình 9 Đồ thị biểu diễn các môn thi
Số trên mỗi đỉnh là số thứ tự của môn thiB4: áp dụng thuật toán tô màu đồ thị để tiến hành xếp lịch thi cho các môn
B4.1: tạo danh sách các môn theo bậc giảm dần E’=(3,6,1,4,5,7,2), đặt i=1;
B4.2: lấy giờ thi thứ nhất xếp cho môn thứ (3), duyệt lần lượt danh sách và xếp giờ này cho môn thứ (1).
B4.3: các môn chưa được xếp lịch xong, chuyển sang B4.4
B4.4: loại bỏ 2 môn (3) và (1) ra khỏi danh sách, và sắp xếp lại E’ ta được E’=(6,4,5,7,2), tăng i=2, trở về B4.2.
B4.2: lấy giờ thi thứ hai xếp cho môn thứ (6), duyệt lần lượt danh sách và xếp giờ này cho môn thi thứ (4).