Tải bản đầy đủ (.doc) (22 trang)

Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (698.59 KB, 22 trang )

Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
THÔNG TIN CHUNG VỀ ĐỀ TÀI
1. Tên đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch
thi trong hệ tín chỉ
2. Nhóm sinh viên thực hiện
STT Họ Tên Lớp, Khoa Vai trò
1 Nguyễn Đoàn Quang Thái
CTK33,
Khoa CNTT
Chủ nhiệm đề
tài
2 Mai Ngọc Nam
CTK33,
Khoa CNTT
Cộng tác viên
3. Giảng viên hướng dẫn: Kỹ sư. Thái Duy Quý
Khoa CNTT Trường ĐH Đà Lạt
4. Thời gian thực hiện: 10 tháng ( từ tháng 11/2011 – tháng 09/2012 )
5. Đơn vị chủ trì đề tài: Khoa Công nghệ thông tin, Trường Đại Học Đà Lạt
1 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
LỜ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âu
sắ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ôi
trong 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ông
tin, 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ên
trong khoa Công nghệ thông tin đã ủng hộ, giúp đỡ chúng tôi trong quá trình nghiên
cứ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ười
thâ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ài
này.
Chúng tôi xin chân thành cảm ơn.
Đà Lạt, tháng 8 năm 2012
Nhóm nghiên cứu
2 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
MỞ ĐẦ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.
3 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
DANH MỤC CÁC HÌNH, BẢNG
Bảng 1. Bảng danh sách các môn thi 11

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. 5
II.Sự cần thiết của đề tài. 5
III.Mục tiêu của đề tài. 5
IV.Ý nghĩa khoa học, tính thực tiễn và khả năng ứng dụng. 6
V.Nội dung nghiên cứu. 6
1.Đồ thị và thuật toán tô màu đồ thị 6
a)Đồ thị 6
b)Thuật toán tô màu đồ thị 8
Thuật toán: 9
2.Nghiệp vụ xếp lịch thi của khoa Công nghệ thông tin 10
3.Mối liên quan giữa tô màu đồ thị và xếp lịch thi 11
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ị 11
5.xây dựng chương trình xếp lịch thi 15
5.1.Các chức năng chính của chương trình: 15
a)Chức năng quản lý bậc học 15
b) Chức năng quản lý phòng thực hành 16
c)Chức năng quản lý thời gian 16
d)Chức năng chọn nhóm 17
e)Chức năng chọn phòng 18
f)Chức năng xếp lịch 18
5.2.Các chức năng phụ của chương trình 19
a)Chức năng tạo tài khoản, đăng nhập 19
b)Chức năng đổi mật khẩu 19
c)Chức năng lưu kết quả ra file excel 20

d)Chức năng in ấn 20
e)Chức năng hướng dẫn sử dụng 20
VI.Kết luận và hướng phát triển 20
4 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
I. 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ông
lập) và 215 trường cao đẳng (trong đó có 187 trường công lập, 28 trường ngoài công
lậ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ển
củ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ông
nhữ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ành
nhữ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, đại
họ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ài
toá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 trong
cù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ải
quyế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ết
rấ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óa
việ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ột
chươ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ủa

khoa 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 cho
cá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ự động
cho 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ương
trình với mẫu dữ liệu của khoa Công nghệ thông tin.
5 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
Nhó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 ưu
việ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ác
lớ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ủa
công nghệ thông tin nói chung và đối với trường đại học Đà Lạt nói riêng, đề tài
nguyê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ếp
lị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ủa
khoa 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 đại
họ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ên
file 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ình
nhầ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
6 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
cá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.
Hình 2. Đồ thị có hướng
Đồ thị đơn là đồ thị mà không có khuyên và không có cạnh song song.
Hình 3. Đồ thị đơn
Đa đồ thị là đồ thị mà không thỏa đồ thị đơn.
Hình 4. Đa đồ thị
Đồ thị hỗn hợp G là một bộ ba có thứ tự G := (V,E,A) với V, E và A được định
nghĩa như trên.
Hình 5. Đồ thị hỗn hợp
7 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
b) 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à bao
nhiê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ối
thiể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 đến
mộ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ải
nhữ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ỉ ứng
dụ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ỉ
8 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
kề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
Đ: đỏ X: xanh V: vàng N: nâu
Thuật toán:
Thuật toán tô màu đồ thị
Input: đồ thị G = (V, E).
Output: đồ thị G = (V, E) có các đỉnh đã được gán màu.
Các bước:

B1: Lập danh sách các đỉnh của đồ thị E’:=[v1,v2,…,vn] được sắp xếp theo thứ tự
bậc giảm dần của bậc: d(v1) ≥ d(v2) ≥ … ≥ d(vn), Đặt i := 1;
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.
9 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
Ví 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ọc
phần trong học kì như bản sau:
10 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
Bả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ất
thờ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ịch
thi. 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ời
gian 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ôn trong 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ó 3
yế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ôn
thi, 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 2
mô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.
11 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
Output: 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 nhau
thà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ụng

chung 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ới
nhau.
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
12 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
+ 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ới
ASP.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 thi
B4: á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).
13 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
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 (6) và (4) ra khỏi danh sách, và sắp xếp lại E’ ta được
E’=(5,7,2), tăng i=3, trở về B4.2.
B4.2: lấy giờ thi thứ 3 xếp cho môn thi thứ (5), duyệt lần lượt các môn trong danh
sách và xếp giờ này cho môn thứ (2).
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 (5) và (2) ra danh sách, và sắp xếp lại E’ ta được 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: các môn thi đã được xếp lịch, dừng thuật toán, cần dùng 4 giờ thi để sắp xếp
lịch cho 7 môn thi này.
14 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
Hình 10. Đồ thị các môn thi đã được lên lịch
5. xây dựng chương trình xếp lịch thi
5.1. Các chức năng chính của chương trình:
a) Chức năng quản lý bậc học
Hình 11. Mẫu quản lý bậc học
Chức năng này 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, và các nút xóa sau tên mỗi bậc học trong danh sách cho phép xóa đi những
bậc học không còn quản lý nữa, để hoàn tất cài đặt Bậc học, nhấn lưu để lưu lại những
thay đổi, ngược lại nhấn thoát để thoát.
15 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
b) Chức năng quản lý phòng thực hành
Hình 12. Mẫu quản lý phòng thực hành
Tương tự như đối với chức năng quản lý bậc học, chức năng quản lý 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 của phòng, nút xóa để
xóa các phòng không còn quản lý nữa, và nút lưu để hoàn tất quá trình cài đặt, nút
thoát để thoát khỏi cài đặt mà không lưu lại những gì đã thay đổi.
c) Chức năng quản lý thời gian
Hình 13. Mẫu quản lý giờ thi
Chức năng quản lý thời gian thi cho phép người dùng chọn ngày bắt đầu và ngày
kết thúc của mùa thi, click vào lấy ngày chương trình tự động lấy ra các giờ thi trong
khoảng thời gian đó với quy tắc mỗi ngày sẽ có 4 ca thi(7h, 9h, 13h và 15h) để đưa
vào danh sách, mỗi giờ thi trong danh sách đều có nút xóa để xóa nếu nó thuộc giờ
cấm.
16 Báo cáo nghiên cứu khoa học sinh viên năm 2012

Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
d) Chức năng chọn nhóm
Hình 14. Mẫu chọn nhóm cho các môn thi
Chức năng chọn nhóm lấy ra danh sách môn thi ta đưa vào chương trình, từ đó cho
phép người dùng có thể chọn nhóm thủ công cho từng môn thi bằng cách click chuột
vào từng nút chọn của mỗi môn thi để thêm nhóm cho môn thi đó, hoặc cũng có thể
chọn tự động, để chương trình tự động xếp nhóm cho các môn thi, chức năng tự động
này chỉ mới phân nhóm được cho 2 nhóm đại học và cao đẳng.
17 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
e) Chức năng chọn phòng
Hình 15. Mẫu chọn phòng thực hành
Chức năng này tự động lọc các môn thi có hình thức thi là thực hành lên form
CHỌN PHÒNG THI để thực hiện gán phòng thi cho các môn thi, nút chấp nhận để
lưu lại những thay đổi của người dùng và hủy để thoát khỏi cài đặt mà không lưu lại
những thay đổi.
f) Chức năng xếp lịch
Hình 16. Mẫu xếp lịch thi
18 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
Sau khi đã chọn nhóm và phòng thực hành cho các môn thi, người dùng có thể
nhấp vô nút Xếp Lịch để chương trình tự động gắn thời gian thi cho các môn thi.
5.2. Các chức năng phụ của chương trình
a) Chức năng tạo tài khoản, đăng nhập
Hình 17. Mẫu đăng kí tài khoản
Hình 18. 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
sẽ có phép người dùng tạo tài khoản trên hệ thống, và những lần sử dụng sau bắt buộc
phải đăng nhập để có thể sử dụng được chương trình.
b) Chức năng đổi mật khẩu

Hình 19. Mẫu đổi mật khẩu
19 Báo cáo nghiên cứu khoa học sinh viên năm 2012
Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
Chức năng này cho phép người dùng thay đổi mật khẩu trong quá trình sử dụng để
bảo đảm an toàn thông tin.
c) Chức năng lưu kết quả ra file excel
Sau khi xếp lịch, chương trình cho phép lưu kết quả lại dưới dạng file excel để tiện
xem lại.
d) Chức năng in ấn
Sau khi xếp lịch chương trình cho phép in ra kết quả xếp lịch.
e) Chức năng hướng dẫn sử dụng
Chức năng hướng dẫn sử dụng hướng dẫn cho người dùng các bước để sử dụng
chương trình một cách hiệu quả.
VI. Kết luận và hướng phát triển
1. Kết quả đạt được:
Hiểu rõ về đồ thị và thuật toán tô màu đồ thị.
Xây dựng được thuật toán xếp lịch thi từ thuật toán tô màu đồ thị.
Xây dựng hoàn chỉnh chương trình xếp lịch thi cho các khoa trường đại học Đà
Lạt.
Chương trình đã xếp được lịch với dữ liệu mẫu của khoa Công nghệ thông tin
trong 2 học kì I và học kì II năm học 2011-2012, cả thi lần 1 và thi lần 2.
2. Hạn chế: chương trình được xây dựng khi nhóm chúng em là sinh viên năm 3
với nhiều kiến thức chuyên ngành chưa được tiếp cận nên còn nhiều thiếu xót.
3. Hướng phát triển: do chương trình dùng để xếp lịch trong hệ tín chỉ, nhưng
trường đại học Đà Lạt vẫn chưa giáo dục theo tín chỉ hoàn toàn, nên chương trình
chưa thực sự tối ưu hóa. Nhóm đang phấn đấu để thay đổi cải tiến chương trình sao
cho việc xếp lịch là tự động hoàn toàn: tự động phân nhóm, tự động xếp phòng thực
hành, và điều nhóm muốn hướng tới nhất đó là phần bổ đều thời gian thi cho các lớp
học.
20 Báo cáo nghiên cứu khoa học sinh viên năm 2012

Đề tài: Áp dụng thuật toán tô màu đồ thị, xây dựng chương trình xếp lịch thi
TÀI LIỆU THAM KHẢO
[1] Nguyễn Văn Ba, Phát triển hệ thống hướng đối tượng với UML, ĐHBKHN,
2004.
[2] Nguyễn Minh Hiệp, Giáo trình Công cụ & Môi trường lập trình 1, Đại học Đà
Lạt, 2009
[3] Phạm Hữu Khang, Lập trình C#, Nxb Lao động xã hội, 2006.
[4] Trần Nguyên Phong, SQL Server 2000, ĐHKH Huế, 2004.
[5] Nguyễn Tô Thành, Nguyễn Đức Nghĩa, Giáo trình toán rời rạc, ĐHBKHN,
1994.
[6] Sổ tay dành cho sinh viên, Quy chế đào tạo theo học chế tín chỉ.
21 Báo cáo nghiên cứu khoa học sinh viên năm 2012

×