Đề tài: “Nghiên cứu bài toán tô màu đồ thị và ứng dụng lập lịch thi trong đào tạo theo hệ thống tín chi” tap trung nghiên cứu về lý thuyết đồ thị mà cụ thể ở đây là bài toán “Tô màu đồ
Trang 1BO GIAO DUC VA DAO TAO
TRUONG DAI HOC SU PHAM HA NOI 2
NGUYEN VAN LUQNG
NGHIÊN CỨU BÀI TOÁN TÔ MÀU ĐÒ THỊ
VA UNG DUNG LAP LICH THI TRONG DAO TAO
THEO HE THONG TIN CHi
LUAN VAN THAC Si MAY TINH
HÀ NỘI, 2013
Trang 2
BO GIAO DUC VA DAO TAO TRUONG DAI HOC SU PHAM HA NOI 2
NGUYEN VAN LUQNG
NGHIEN CUU BAI TOAN TO MAU DO THI
VA UNG DUNG LAP LICH THI TRONG DAO TAO
THEO HE THONG TIN CHi
Chuyén nganh: Khoa hoc may tinh
Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ MÁY TÍNH
Người hướng dẫn khoa học: PGS TS Lê Huy Thập
HÀ NỘI, 2013
Trang 3
LOI CAM ON
Trước tiên, em xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới thầy giáo PGS TS Lê Huy Thập, người đã luôn động viên, tận tình hướng dẫn và giúp đỡ em rất nhiều về kiến thức, kinh nghiệm trong quá trình thực hiện dé tai
Em xin chân thành cảm ơn các thầy cô phòng Sau Đại học, các thầy cô
khoa Công nghệ thông tin, các thầy cô thuộc Viện Công nghệ Thông tin Viện Khoa học và Công nghệ Việt Nam, cũng như tất cả các thầy cô Trường Đại
học Sư phạm Hà Nội 2 đã tạo điều kiện và truyền đạt những kiến thức quý
báu cho em trong suốt quá trình học tập
Xin chân thành cảm ơn các anh, các chị và các bạn học viên lớp Cao học
KISKHMT- trường Đại học sư phạm Hà Nội 2 đã luôn động viên, giúp đỡ,
nhiệt tình chia sẻ những kinh nghiệm học tập và công tác trong suốt khoá học
Mặc dù rất cố gắng, song luận văn này không thể tránh khỏi những thiếu sót, kính mong được sự chỉ dẫn của các quý thầy cô và các bạn
Hà Nội, tháng 12 năm 2013
Tác giả
Nguyễn Văn Lượng
Trang 4LOI CAM DOAN
Tôi xin cam đoan rằng số liệu và kết quả nghiên cứu trong luận văn này
là trung thực và không trùng lặp với các đề tài khác Tôi cũng xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn này đã được cảm ơn và các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc
Hà Nội, tháng 12 năm 2013
Tác giả
Nguyễn Văn Lượng
Trang 51.2 Giới thiệu các thuật toán tô màu . ¿25525 +22 *£22* + £+zezseczz 11
1.2.1 Thuật toán thu gọn (hòa nhập) dinh (Contraction Algorithm) 11 1.2.2 Thuật toán tô màu tuần tự (Sequential Coloring) 14
1.2.3 Thuật toán duyệt theo chiều sâu có chặn nhánh - 19
1.2.4 Thuật toán tham lam (Greedy Coloring) - ‹ ++s++s++s>+ 20 1.3 Giới thiệu các phương pháp lập lịch thi 5-52 5<+s+<+x+x+e> 22 1.3.1 Các phương pháp thông thường - ¿5s +5 +++++ssxexsexssss 22
1.3.2 Phương pháp lập lịch thi dựa vào tô màu đồ thị .- 22
1.4 Kết luận chương ¿ 2c s S E1221121112111211121112111211 1111111111 26 Chuong 2: UNG DUNG LY THUYET DO THI VAO LAP LICH THI 27
QA Ma tran 1idtr kK oc ccceececcecccecseccscssecsecsevssecsucsesssecsessussasesucsussuessucsussaseaecsecesees 27
2.2 Xác định dé thi con day đủ dựa vào ma trận liền kề - s5: 29
2.3 Tô màu đồ thị dựa vào ma trận liền kề -¿- 2-52 xe+Et2EEvEEErEzrxsrs 34
2.3.1 Thuật toán sắp xếp đỉnh của đơn đồ thị -sccs+zszxzrvrs 34
2.3.2 Thuật toán tô màu đơn đồ thị với ma trận liền kề : 35
2.4.1 Đặt vấn đề
2.4.2 Bài toán lập lịch thi theo hệ thống tin chi
2.5 Kết luận chương . 22++2++2+EEEt2EEE222111221127111271122711.2711 2.1 xe 48
Trang 6Chuong 3: XAY DUNG UNG DUNG LAP LICH THI TRONG DAO TAO THEO HỆ THÓNG TÍN CHỈ 2-2 ©st+EÊEE+EESEEEEEEEEEEEESEEerkrrrrsrxrrk 49
3.1 Ứng dụng lập lịch thi tại Trường Đại học Sư phạm Hà Nội 2 49
3.1.1 Phân tích, thiết kế bằng ƯMIL - 22-22 E+2£E+EEtEErtrkesree 49
3.1.2 Các chức năng của chương trình - ++s+sss+sxserseeeereresrs 50
KET LUAN oeececccsssssecscssssssessussusssvssecsussuresecsussasesecsussasesecsussusesecsssassaecsessesenses 56 TAI LIEU THAM KHHẢO - 2-52 s9SE2EE+EEEESEEESEEEEEEEEEEEEEEEEEEErrkrrkrrk 57
Trang 7DANH MUC TU VIET TAT
Trang 8MO DAU
1 Ly do chgn dé tai
Lap lich biéu 1a viéc khong thể thiếu ở bất kì tổ chức nào hoạt động
trong xã hội loài người Từ ngàn xưa, con người đã thực hiện việc lập kế
hoạch bằng cách ghi chép bằng tay các kí hiệu hay số liệu, thông tin trên vách
đá, trên tre, trên vải và trên giấy, có thé gọi chung là trên sô sách
Ngày nay, cùng với tiến bộ xã hội, khoa học máy tính đã có những
bước tiến dài, đem lại sự tiện lợi và hiệu quả kinh tế cao trong rất nhiều lĩnh vực từ công nghiệp cho đến đời sống Việc lập lịch biểu bắt đầu có sự giúp sức của máy tính, giúp ghi nhớ các số liệu lớn một cách dễ dàng và thuận lợi
hơn so với ghi chép bằng tay trên số sách, nhất là khi vận chuyên Nhiều phần
mềm máy tính có chức năng hỗ trợ lập lịch như MS.Excel, MS.Project, nhưng sự “thiếu thông minh” của chúng vẫn làm cho con người phải tiêu tốn
nhiều thời gian cũng như công sức khi lập lịch Nhu cầu máy tính thông minh
như con người trở thành bức thiết
Các kỹ thuật mạnh mẽ của công nghệ tri thức đã sớm cho ra đời những
cỗ máy có trí thông minh nhân tạo dạng hệ chuyên gia như máy chan đoán
bệnh, máy dự báo thời tiết, hoặc dạng hệ tư vấn hỗ trợ con người ra quyết
định trong nhiều tình huống vô cùng hữu ích Từ đó, những kỹ thuật này cũng
hỗ trợ việc lập lịch biểu trên máy tính trở nên đễ dàng hơn
Thông thường, tại một trường đại học, nhu cầu có một công cụ hỗ trợ
tự động lập lịch biểu hết sức cần thiết cho hai việc cụ thể: lập lịch giảng dạy
(hay lịch công tác) và lập lịch thi Tùy vào đặc thù và nhu cầu của mỗi trường
mà các trường đã tự xây dựng công cụ lập lịch thi cho riêng mình, công cụ
này được xây đựng bằng những kỹ thuật khác nhau nhằm đạt kết quá càng gần với mong muốn càng tốt Một số kỹ thuật thường được dùng đề giải quyết
bài toán lập lịch thi như giải thuật di truyền, leo đồi, luyện thép, Thế
Trang 9nhưng, qua khảo sát cho thấy khi sử dụng các kỹ thuật trên kết quả của bai toán vẫn còn nhiều hạn chế Vì thế, con người vẫn hướng đến một giải pháp sao cho kết quả bài toán lập lịch thi “tối ưu” hơn nữa
Đề tài: “Nghiên cứu bài toán tô màu đồ thị và ứng dụng lập lịch thi
trong đào tạo theo hệ thống tín chi” tap trung nghiên cứu về lý thuyết đồ thị
mà cụ thể ở đây là bài toán “Tô màu đồ thị”, qua đó tác giả đề xuất một
phương pháp lập lịch thi đựa trên thuật toán tô màu đồ thị
2 Mục đích nghiên cứu
Nghiên cứu thuật toán tô mau dé thi
Ứng dụng xây dựng chương trình lập lịch thi với 2 tiêu chí: phân bổ
đều thời gian sao cho các môn học trong một hệ và các môn thi sử dụng chung phòng thực hành không thi trùng nhau, thời gian rải đều cho các môn trong một lớp và trong toàn thời gian
3 Nhiệm vụ nghiên cứu
Lưu các tham số của đơn đồ thị vô hướng hữu hạn vào cơ sở dữ liệu
quan hệ, tô màu và lập lịch biểu
4 Đối tượng và phạm vi nghiên cứu
Lý thuyết đồ thị là ngành khoa học được phát triển từ lâu nhưng lại có
nhiều ứng dụng hiện đại Một đồ thị là một tập hợp các đỉnh và các đường nối
các đỉnh gọi là cạnh (cung) Tô màu đồ thị là phép gán màu cho mỗi đỉnh sao cho không có hai đỉnh liền kề nhau được gán cùng màu
Bài toán lập lịch thi được mô hình hóa thành bài toán tô màu đồ thị như
sau: lập đồ thị có các đỉnh là các môn thi, hai môn thi kề nhau nếu có một sinh
viên thi cả hai môn này Thời điểm thi của mỗi môn được biểu thị bằng các
màu khác nhau
5 Những đóng góp mới của đề tài
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 Sư
Trang 10phạm Hà Nội 2 nói riêng, đề tài nguyên cứu của tác giả giúp phần tin học hóa công tác đào tạo cụ thê là công tác lập lịch thi của các khoa
Hiện nay các khoa Trường Đại học Sư phạm Hà Nội 2 vẫn còn lập lịch
thi thủ công, Trợ lý giáo vụ khoa xếp bằng tay trên file đữ liệu excel hoặc word Với đề tài của tác giả nghiên cứu sẽ thích hợp với thực tiễn sử dụng của Trường Đại học Sư phạm Hà Nội 2
6 Phương pháp nghiên cứu
Nghiên cứu tài liệu, tìm hiểu các thông tin trên Internet về các phương
pháp lập lịch biểu
Nghiên cứu về các thuật toán tô màu
Ứng dụng lý thuyết tô màu đồ thị vào việc lập lịch biểu, xây dựng
chương trình demo
Trang 11Chwong 1: CO SO LY THUYET 1.1 Téng quan don d6 thị vô hướng hữu hạn
1.1.1 Đơn đồ thị vô hướng liên thông
Định nghĩa:
Đơn đồ thị hữu hạn vô hướng được kí hiệu là G =(V,E) trong đó:
i) V là tập hợp khác rỗng mà các phần tử của nó gọi là đỉnh của Œ và card(V) =n <oo,
ii) E là tập các cặp (u,v) hai phần tử phân biệt không có thứ tự của E được gọi là cạnh của Œ Cạnh của E được kí hiệu là e = (u, v) hoặc e = uv
Mỗi cặp đỉnh có nhiều nhất một cạnh
s Một số khái niệm và tính chất cơ bản:
Bậc của đỉnh: Đồ thị vô hướng G=(7,E) Bậc của đỉnh v, ký hiệu là
deg(v), là số cạnh kề với v, trong đó một khuyên tại một đỉnh được đếm hai
lần cho bậc của đỉnh ấy
Định lý:
Cho đơn đồ thị G=(V,E), m là số cạnh (cung)
1) 2m=>° _, deg(v)
2) Số đinh bậc lẻ của dé thi la sé chin
Đăng cấu: Cho hai đơn đồ thị G=(,E) và G=(V,E') Ta nói rằng G
dang cdu G’, ky hiéu G = G’, néu tồn tai song anh f V— V’ sao cho:
y là cạnh của G © f(u)f(v) 1a canh cua G’
Néu G va G' là các đơn đồ thị vô hướng đẳng câu qua ánh xạ ƒ thì
chúng có: Cùng số đỉnh, cùng số cạnh, cùng số đỉnh với bậc cho sẵn và
deg(v)=deg(fv))
Do thi con:
© G’ duge goi la dé thi con cua G, ky hiéu G’< Gnéu V’ CV va EE’ cE
e Nếu V’=V va E’cE thi G’ duoc goi là đồ thị con khung của G.
Trang 12Liên thông: Đồ thị G=(7,E) được gọi 1a lién thông nếu có đường đi giữa mọi cặp đỉnh ø, v bất kỳ trong G
1.1.2 Đồ thị phẳng
Định nghĩa 1: Mot đồ thị được gọi là phẳng nếu nó có thể vẽ được trên
một mặt phẳng mà không có các cạnh nào cắt nhau (ở một điểm không phải là điểm mút của các cạnh) Hình vẽ như thế gọi là một biểu diễn phẳng của đồ thị
Thi du 1:
1) Một cây, một chu trình đơn là một đồ thị phẳng
2) K¿ là đồ thị phẳng bởi vì có thể vẽ lại như hình bên không có đường
cắt nhau:
Đồ thị K, K¿ vẽ không có đường cắt nhau
3) Xét đồ thị G như trong hình dưới đây Có thể biểu diễn G một cách
khác như trong hình bên phải, trong đó bất kỳ hai cạnh nào cũng không cắt
nhau
4) Dé thi day đủ K; là một thí dụ về đồ thị không phẳng
Định nghĩa 2: Cho G là một đồ thị phẳng Mỗi phần mặt phẳng giới hạn bởi một chu trình đơn không chứa bên trong nó một chu trình đơn khác, gọi
là một miền (hữu hạn) của đồ thị G Chu trình giới hạn miễn là biên của miễn.
Trang 13Mỗi đồ thị phẳng liên thông có một miền vô hạn duy nhất (là phần mặt phẳng
bên ngoài tất cả các miền hữu hạn) Số cạnh ít nhất tạo thành biên gọi là đai của G; trường hợp nếu G không có chu trình thì đai chính là số cạnh của G
Thí dụ 2:
1) Một cây chỉ có một miền, đó là miền vô hạn
2) Đồ thị phẳng ở hình dưới có 5 miền, M5 là miền vô hạn, miền MI có biên abgfa, miền M2 có biên là bcdhpgb, Chu trình đơn abcdhgfa không giới hạn một miền vì chứa bên trong nó chu trình đơn khác là abgfa
1.1.3 Dé thi vô hướng con đây đủ và màu đồ thị
Đồ thị đầy đủ ø đỉnh, ký hiệu la K,,, la don đồ thị vô hướng mà giữa hai
đỉnh bất kỳ của nó luôn có cạnh nối Đồ thị K„ có tất cả n(n-1)/2 canh No la
đơn đồ thị có nhiều cạnh nhất, đồng thời là đồ thị chinh quy bac n-J.
Trang 14Vi du:
Đề thị đầy đủ K;
Một đơn đồ thị vô hướng G là môt cap (VE) voi ƒ là một tập các đỉnh
và E là một tập các cạnh của đồ thị G, trong đó ø là một đỉnh liền kề v nếu và
chỉ nếu /,v} là một cạnh trong E
Đồ thị vô hướng con đầy đủ của G là một đồ thị vô hướng có tập đỉnh
€ ŒV sao cho mỗi cặp đỉnh trong C là kề nhau ở trong Ớ Bài toán xác định
đồ thị vô hướng con đây đủ là bài toán thuộc lớp NP- đầy đủ
Màu của đồ thị G (hay còn gọi là sắc số của đồ thị G) là số màu ít nhất
x(G) cần thiết để tô màu các đỉnh của G sao cho các đỉnh kề nhau được tô bởi
các màu khác nhau
Vi du:
Cho đơn đồ thị vô hướng G đưới đây:
Ta thay rang 4 dinh b, d, g, e đôi một kề nhau nên phải được tô bằng 4
màu khác nhau Do đó x(G) > 4 Ngoài ra, có thể đùng 4 màu đánh số 1, 2, 3,
4 để tô màu G như sau:
Trang 15
Như vậy x(G) = 4
s* Màu (sắc số) của một số đơn đồ thị vô hướng đặc biệt:
Trang 16
Định lý 5: Với một đồ thị G bat kỳ, ta có thể tìm được một cách phân
hoach V(G)= V1 U V2 (Vi, V2# ©) sao cho x(G[V;]) + x(G[V›])E x(G)
Định lý 6: Nếu G là đồ thi khong day đủ, ta có thể tìm được một cách phân hoạch V(G}= Vị v2 V¿ (Vị, V;# Ø) sao cho x(G[V¡]) + x(G[V›]) > x(G)
Định lý 7: Giả sử [V(G)|=n và V(G) có một phân hoạch {V¡,Vạ, ., Vụ}
sao cho (WV /<i <j <k, hai đỉnh bat ky xe Vi va ye V; |x vay khong ké nhau),
khi đó x(G) < n-k+1
Dinh ly 8: Nếu G là đơn đồ thị n đỉnh, khi đó ta có x(Œ ) +zx(Œ)< n+1
và x(É ) x(Œ ) >n
Định lý 9: (Định lý 5 màu của Kempe-Heawood): Mọi đồ thị phẳng
đều có thê tô đúng bằng 5 màu
Chứng minh: xem [5]
Định lý 10: (Định lý 4 màu của Appel-Haken): Mọi đồ thị phẳng đều
có thể tô đúng bằng 4 màu
Trang 1710
Định lý Bốn màu đầu tiên được đưa ra như một phỏng đoán vào năm
1850 bởi một sinh viên người Anh tên là F Guthrie và cuối cùng đã được hai nhà toán học Mỹ là Kenneth Appel và Wolfgang Haken chứng minh vào năm
1976 Trước năm 1976 cũng đã có nhiều chứng minh sai, mà thông thường rất khó tìm thấy chỗ sai, đã được công bố Hơn thế nữa đã có nhiều cố gắng một cách vô ích để tìm phản thí dụ bằng cách cô vẽ bản đồ cần hơn bốn màu đề tô
nó
Có lẽ một trong những chứng minh sai nồi tiếng nhất trong toán học là
chứng minh sai “bài toán bến màu” được công bố năm 1879 bởi luật sư, nhà
toán học nghiệp dư Luân Đôn tên là Alfred Kempe Nhờ công bố lời giải của
“bài toán bốn màu”, Kempe được công nhận là hội viên Hội Khoa học Hoàng gia Anh Các nhà toán học chấp nhận cách chứng minh của ông ta cho tới
1890, khi Percy Heawood phát hiện ra sai lầm trong chứng minh của Kempe Mặt khác, dùng phương pháp của Kempe, Heawood đã chứng minh được “bài toán năm màu” (tức là mọi bản đồ có thê tô đúng bằng 5 màu)
Như vậy, Heawood mới giải được “bài toán năm màu”, còn “bài toán bốn màu” vẫn còn đó và là một thách đó đối với các nhà toán học trong suốt
gần một thế kỷ Việc tìm lời giải của “bài toán bốn màu” đã ảnh hưởng đến sự
phát triển theo chiều hướng khác nhau của lý thuyết đồ thị
Mãi đến năm 1976, khai thác phương pháp của Kempe và nhờ công cụ máy tính điện tử, Appel và Haken đã tìm ra lời giải của “bài toán bốn màu” Chứng minh của họ dựa trên sự phân tích từng trường hợp một cách cần thận nhờ máy tính Họ đã chỉ ra rằng nếu “bài toán bốn màu” là sai thì sẽ có một phân thí dụ thuộc một trong gần 2000 loại khác nhau và đã chỉ ra không có loại nào dẫn tới phản thí dụ cả Trong chứng minh của mình họ đã dùng hơn
1000 giờ máy Cách chứng minh này đã gây ra nhiều cuộc tranh cãi vì máy tính đã đóng vai trò quan trọng biết bao Chẳng hạn, liệu có thê có sai lầm
Trang 1811
trong chương trình và điều đó dẫn tới kết quả sai không? Lý luận của họ có
thực sự là một chứng minh hay không, nếu nó phụ thuộc vào thông tin ra từ một máy tính không đáng tin cậy?
1.2 Giới thiệu các thuật toán tô màu
Một cách tô màu các đỉnh của đồ thị G=(7, E) là một anh xa F: VN, trong đó các đỉnh kề nhau được tô bởi các màu khác nhau trong A (A Ia tap
hợp các số nguyên không âm), tức là nếu wv e E thì F(u) # F(v) Sắc số x(Œ )
là số màu ít nhất cần thiết cho một cách tô màu đồ thị Œ Đồ thị Œ có sắc số k
nếu x(Œ )=&, và GŒ có thể tô bởi & màu nếu x(Œ ) < # Một lớp màu của một cách tô màu # chứa tất cả các đỉnh cùng màu Các lớp màu của # là một phân hoạch của tập đỉnh ƒ thành các tập con độc lập trong đó các đỉnh của nó
không kề nhau
1.2.1 Thuật toán thu gọn (hòa nhập) đính (Contraction Algorithm)
Thuật toán này dựa trên một định lý của Zykov Với các đỉnh x và y không kể nhau bất kỳ, chúng ta định nghĩa đồ thị G44, y la một đồ thị thu được
từ G bằng cách hợp nhất y và x thành một đỉnh, tức là ta xóa đỉnh y đi và nối x
với tắt ca các đỉnh kề với y trước đó G+xy là đồ thị thu được từ G bằng cách
thêm vào cạnh xy
G
Dinh ly 1: (@ )=minf x(x” ), (@ +*Y )} voi x, y là hai đỉnh không
ké nhau
Chứng minh: Gọi C(G) là tập các phép tô màu của G va |F] la sé mau
được sử dụng bởi “eC(G) Khi đó ta có:
x(Œ ) =min { |F]: FeC(G) }
=mmn { mn { ||: F(x) = FỤ), mỉm { |F|: F(x) # F(y) }}
Trang 1912
G
=min {z(% ` ),(Œ +4) }
Bằng cách áp dụng nhiều lần định lý 1, đồ thị Œ trở thành gốc của cây
nhị phân có các nút là các đồ thị, gọi là cây Zykov Cấu trúc của cây Zykov hoàn chỉnh khi ta không tìm được thêm một cách thu gọn G theo định lý 1
Khi đó các lá của cây Zykov là các đồ thị đầy đủ Œ;= (;, E;) Định lý 1 cho
ta x(Œ ) = min |V;| Đây là cơ sở của thuật toán Corneil - Graham sử dụng để tìm x(Œ ) Thuật toán sử dụng phép tìm kiếm theo chiều sâu trên cây Zykov
Mặc dù có một vài kỹ thuật chọn lọc được đưa vào thuật toán này, tuy nhiên
nó vẫn kém hiệu quả hơn thuật toán quay lui tuần tự trong mục 1.2.2
Cây Zykov ở trên không phải là duy nhất Nó phụ thuộc vào việc lựa chọn các cặp đỉnh x và y Mỗi cây Zykov có đúng một nhánh được sinh ra duy
nhất bởi việc thu gọn các đỉnh không liền kề Gọi Gc là đồ thị đầy đủ ở vị trí cuối cùng của nhánh này (nút lá) Số lượng các đỉnh |ƒ(Gc)| của đồ thị này là cận trên của x(Œ ) Vậy một cận trên càng tốt khi mà nhánh tới Œc càng dài
Do đó, một chiến lược tốt cho việc lựa chọn các cặp đỉnh không kể nhau x, y được thu gọn đó là làm sao cho số cặp đỉnh không kề nhau là nhiều nhất có thé Goi cn(x,y) là số lượng các đỉnh chung kề với cả x và y Khi đó ta có
|E(G)\| - |E(G⁄x,y)|E cn(x,y) Trong thuật toán Brigham - Dutton, các đỉnh không kể nhau với số lượng các đỉnh kề chung lớn nhất được thu gọn (hợp
thành một đỉnh) cho tới khi ta thu được một đồ thị đầy đủ
Một thuật toán hiệu quả hơn và cho kết quả tốt hơn thuật toán Brigham
- Dutton đó là thuật toán RLF (Recursive - Largest - First) của Leighton Ở
Trang 2013
nhat trong đồ thị còn lại sẽ được chọn Đỉnh x và tất cả các đỉnh hòa nhập với
x sé tao thành một lớp màu Nếu x có đỉnh không kề nó và các đỉnh này không
có đỉnh kề chung với x, khi đó đồ thị sẽ không thể thu gọn được thêm nữa và
x sẽ kề với tất cả các đỉnh trong đồ thị con chứa nó Trong trường hợp xấu
nhất, độ phức tạp của thuật toán RLF là (||)
Dưới đây là chương trình gia mã cho thuật toán RLFE:
Cho một đồ thị G=(V,E) với tập đỉnh V=ƒ(G) và tập cạnh E Yêu cầu của bài toán là trả về một phép tô màu F: V > N
while (|JMM| > 0) { // tìm đỉnh y e NN để có thé thu gon voi x
maxcn= -]; !Í số đỉnh kề chung với x lớn nhất
ydegree= -1; // bac cia đỉnh y cần tìm
for mgi dinh z € NN {
cn= số lượng đỉnh kề chung của z và x;
if (cn> maxcn or (cn==maxcn and bac cua z < ydegree)) {
Trang 211.2.2 Thuật todn to mau tudn tw (Sequential Coloring)
Một trong những phương pháp tơ màu đơn giản nhất đĩ là phương pháp
tơ màu tuần tự dựa trên mét tap dinh O=[ ap, ay, .,d,-)] đã được sắp thứ tự:
Ft(à=1
Nếu a„ .4;; (¡ > 1) đã được tơ màu, đặt Ƒ{z,) là màu nhỏ nhất chưa
được dùng bởi các đỉnh kề với a,
Thuật tốn LF (Largest First) dựa trên cách sắp xếp các đỉnh của đồ thị
G theo thứ tự giảm dần về bậc Nĩ cĩ độ phức tạp O(|Vj? Tư tưởng chính của thuật tốn như sau:
Algorithm LF:
Sắp xếp các đỉnh trong V theo thứ tự giảm dần về bậc: a[0], .,a[n-1];
optColorNumber=1; // Khoi tao số màu tối ưu cần sử dụng
while ( |V| >0) { // lặp cho đến khi tất cả các màu được tơ
x=a[0]; // xét đỉnh đầu tiên trong danh sách
F(x) = optColorNumber; // tơ màu optColorNumber cho đỉnh x
for (7=; <|H; tt) {
if (a[ï] khơng kề với x) {
Trang 2215
F(a{i])=optColorNumber; // t6 mau optColorNumber cho
các đỉnh không kề với đỉnh x
}
Loai khdi V tất cả các đỉnh đã được tô màu;
Cập nhật lại các đỉnh trong V theo thứ tự bậc giảm dần;
optColorNumber= optColorNumber +]; //tăng số mứu cần tô lẹn 1
}
return F // tra về phép tô màu tối ưu
Thuật toán DSATUR (Degree of Saturation) của Brèlaz là thuật toán tô màu tuần tự trong đó các đỉnh được sắp xếp động sau mỗi bước của thuật
toán Giả sử #' là một phép tô màu bộ phận các đỉnh của Œ Bậc bão hòa của
đỉnh x, đeg,(x) là số lượng các màu khác nhau ở các đỉnh kề với x DSATUR bắt đầu bằng việc gán màu 1 cho một đỉnh có bậc lớn nhất Đỉnh được tô tiếp
theo trong phương pháp này là đỉnh x với bậc đeg,(z) lớn nhất Độ phức tạp của thuật toán DSATUR là O(|W})
Định nghĩa I: Phép tô màu #;, #; của G=(ƑV,E) được gọi là tương đương khi chúng tạo ra cùng một cách phân hoạch tập đỉnh ƒ vào các lớp mầu
Định nghĩa 2: Một phép to mau F cac dinh ag, đ;, .,đ„.; của đồ thị G được gọi là chặt (sát) với thứ tự đã cho nếu:
F(a) < colors(i-1) +1 v6i moi i =0, 1, , n-1, trong đó colors() là số
mau khac nhau tai cac dinh ap, .,a; colors(-1)=0
Một thuật toán tô màu tuần tự sử dụng quay lui (Backtracking
Sequential Coloring - BSC), trả về giá trị chính xác của x(Œ ), lần đầu tiên được đề xuất bởi Brown Rất nhiều các nhánh của cây tìm kiếm có thể bị loại
bỏ bởi định lý dưới đây
Trang 2316
Định lý 2: Mọi phép tô màu #: ƒ—2Ñ của các đỉnh ø¿, aj, .,dy.7 cla đồ
thị G=(ƒ,E) là tương đương với một phép tô màu chặt (sát) với thứ tự đã cho của các đỉnh
Chứng minh: Xem [5Š]
Thuật toán gốc của Brown được cải tiến bởi Brẻlaz Các đỉnh của đồ thị
được lưu trữ trong một mảng A Ban dau chúng được sắp xếp theo thứ tự giảm dần về bậc Thứ tự này được thay đổi động trong quá trình thực hiện thuật toán Giả sử 4[0] , 4[7-1] đã được tô màu Số lượng các màu khác nhau được sử dụng tại các đỉnh này là co/ors(ï-1) = ï¡ Tập các màu chưa được
sử dụng (có thể t6) tai x=A[i], U= freeColors(x), la tap con cua tap {1, 2, ., 1+1} mà chưa được sử dụng trong các đỉnh kề với đinh x Nếu một cận trên optColorNumber, x(Œ ) < optColorNumber được thiết lập bởi một phép tô màu Ƒ, khi đó tất cả các màu > op/ColorNumber có thê loại bỏ khỏi Ư Đỉnh được tô tiếp theo giống như trong thuật toán DSATUR, tức là đỉnh có bậc bão
hòa lớn nhất Nó sẽ được tô với màu nhỏ nhất trong U Nếu rong, ta sẽ thực
hiện việc quay lui Dưới đây là thuật toán giả mã:
Algorithm BSC:
Sắp xếp các đỉnh A=[ ao, .,zn] theo thứ tự giảm dần về bậc
start=0;// chi sé dinh xuất phát
optColorNumber=|V|+1;// sé mau téi uu can str dung dé t6 G
x=A[0]; // dinh dau tién duoc t6 mau
colors(-1) =0; // colors(j) = số màu được sử dụng để tô 4[0], .„4[ï] U={[I]; // biến sử đụng để lưu tập hợp các màu có thê sử đụng để tô freeColors(x) = Ư;// tập hợp các màu có thé tô cho đỉnh x
while (start => 0) { // x dugc t6 mau trong vong lặp dưới đây Ta sẽ sử dụng quay /1lui khi U=ZØhoặc tìm thấy một phép tô màu mới
back=false; // bién logic str dung dé kiểm tra việc quay lui
Trang 25Xóa toàn bộ màu tô cho các đỉnh A[i] véi i > start;
for ((=0; i < start; i++) { x=A[i];
U= freeColors(x);
Xóa khỏi U tất cả các màu > opfColorNưmber;
#reeColors(x) = U; // phép tô màu hiện tại đã được cải tiến }⁄/1lưu ý; ở đây ta có x = A[start] va U= freeColors(x)
return Fopt // tra về phương án tô màu tối ưu
Ở thuật toán trên ta có thé cải tiễn như sau:
Nếu tập các đỉnh 4 của đồ thị được xuất phát theo thứ tự một đồ thị con
đầy đủ kích thước z là 4[0], , 4[z-1], khi đó các đỉnh này sẽ được cô định
các màu I, ., z Thuật toán trên có thể dừng khi trong quá trình quay lui gặp
phải một chỉ số xuất phát < r Một cận dưới 1b < x(Œ ) có thể được thiết lập bằng cách áp dụng thuật toán BSC cho một đồ thị con chặt của đồ thị Œ.
Trang 2619
Thuật toán có thé kết thúc khi ta tìm được một cách tô màu mà sử dụng không
nhiéu hon /b mau
1.2.3 Thuật toán duyệt theo chiều sâu có chặn nhánh
void Try (int k) { // duyệt các cách tô màu cho đỉnh k
if (ok==false){ // k khéng t6 duoc bang mot trong cdc mau da t6
số màu đã tô = số_màu_ đã, tô + ];
Đặt trạng tháisố màu đã tô,k);
Try(k+1); // đệ quy tô màu cho đỉnh &+1 Trả trạng tháisố màu đã tô, k);
SỐ màu đã tô = số màu đã, tô - l;
Trang 2720
Thuật toán trên cho kết quả chính xác, tuy nhiên với đữ liệu đầu vào lớn một chút thì thuật toán không đáp ứng được về mặt thời gian
1.2.4 Thuật toán tham lam (Greedy Coloring)
1.2.4.1 Thuật giải tham lam đơn giản nhất:
Bước L:
i=0; // khởi tạo số màu cần tô
Bước 2:
i=i+l; // tăng số màu cần tô
Tô màu ï cho tất cả các đỉnh có thể tô được;
Bước 3:
Lap lai bước 2 cho đến khi tất cả các đinh đều được tô màu
1.2.4.2 Thuật giải sắp thứ tự + tham lam:
Bước l:
Sắp xếp các đỉnh theo chiều giảm dần của bậc;
i=0; // khởi tạo số màu cần tô
Bước 2:
i=i+l; // tăng số màu cần tô
Tô màu ¡ cho tất cả các đỉnh có thể tô được (xét từ trái sang);
Bước 3:
Lap lai bước 2 cho đến khi tất cả các đinh đều được tô màu
1.2.4.3 Tìm kiếm nhị phân + tham lam:
dau=0;
cudi=N; // sé mau téi đa có thé tô
while ( cudi > đẩu){ // tìm kiếm nhị phân
Lim= (ddu+cudi) / 2;
if (T6_dwoc){
cuoi=Lim;
Trang 2821
}
else đầu=Lim;
}
Lim=cuối chính là số màu nhỏ nhất cần dùng đề tô đồ thị G
Hàm kiểm tra 76, được ta sẽ áp dụng thuật toán tham lam Có nhiều cách tham lam khác nhau để chọn Tác giả xin đưa ra một cách như sau: tại mỗi bước ta tìm tập có nhiều đỉnh nhất thỏa mãn và tô màu cho chúng Muốn
tìm như vậy mỗi lần ta tìm đỉnh kề với ít đỉnh nhất mà không kề với đỉnh đã
có trong tập đang xét, ta cập nhật đỉnh đó vào tập đỉnh có thể tô màu Cứ làm như vậy, nếu số tập tìm được > /m thì sẽ không 7ô_ được còn ngược lại thì ta
có thể Tô được
Cả 3 thuật toán ở trên có thời gian chạy rất nhanh, tuy nhiên trong nhiều trường hợp cho ra kết quả không chính xác Đề khắc phục nhược điểm
trên, tác giả đề xuất một thuật toán dựa trên tư tưởng tham lam nhưng với ý
tưởng khá mới mẻ như sau:
1.2.4.4 Sắp thứ tự đỉnh + hòa nhập đỉnh + tham lam:
- Bude 1: Tìm đỉnh có bậc cao nhất trên đồ thị (gọi là đỉnh u)
- Bước 2: Tăng số màu cần tô lên 1 và tô màu này cho đỉnh u vừa tìm
- Bước 3: Tìm đỉnh v để tô màu giống u thỏa mãn các điều kiện sau: v đi đến u thông qua duy nhất I đỉnh w khác và v có số bậc lớn nhất Nếu
không tìm được đỉnh v như vậy ta sẽ tìm đỉnh v có số bậc lớn nhất mà
không kề với u Nếu tìm được v thỏa mãn thì ta tô màu cho v chính là màu của đỉnh u Sau đó nhập đỉnh u và v vào làm 1 đỉnh, tức là đỉnh w
kề với v thì cũng coi như kề với u
-_ Bước 4: lặp lại bước 3 cho đến khi v=0
- Bước 5: lặp lại bước I cho đến khi tô hết màu các đỉnh của đồ thị
Trang 2922
Thuật toán trên chạy với tốc độ khá nhanh và cho kết quả tối ưu với độ
chính xác rất cao (đã chạy thử nghiệm với các bộ dữ liệu chuẩn trên website http://www.nlsde.buaa.edu.cn/~kexu/benchmarks/graph-benchmarks.htm)
Truong hop tồi tệ nhất, khi cài đặt thuật toán theo ma tran ké, d6 phức
tạp của thuật toán 1a O(N’) Néu cài đặt theo danh sách kề hoặc danh sách liên kết độ phức tạp của thuật toán chỉ cỡ O(V7og(N))
1.3 Giới thiệu các phương pháp lập lịch thi
1.3.1 Các phương pháp thông thường
Bài toán lập lịch thi cũng như bài toán xếp lịch thi nói chung thuộc lớp bài toán NP - Complete Có rất nhiều công trình nghiên cứu về vấn đề này, trong đó một số giải thuật như leo đổi (Hill-climbing), luyện thép (Simulated Annealing), di truyền (Genetic Algorithms) là những thuật toán được sử dụng phô biến nhất Thế nhưng, theo một số đánh giá cho thấy hai thuật toán leo đôi và luyện thép có nhiều nhược điểm, chỉ cung cấp các giá trị tối ưu cục
bộ và những giá trị này phụ thuộc nhiều vào điểm khởi đầu, mà xác suất thành
công thấp khi không gian tìm kiếm khống lồ Đối với các thuật toán cho kết
quả chính xác như “vét cạn” hay “duyệt có chặn nhánh” thì việc sử dụng tài nguyên hệ thống cũng như thời gian thực hiện lại không thể chấp nhận được
khi kích thước dữ liệu lớn Vì thế, con người vẫn hướng đến một giải pháp
sao cho kết quả bài toán lập lịch thi “tối ưu” hơn nữa
1.3.2 Phương pháp lập lịch thi dựa vào tô màu đồ thị
Tùy vào mô hình đảo tạo, cơ sở vật chất và các đặc thù riêng của từng
trường đại học mà yêu cầu lập lịch thi có sự khác nhau Đề hình dung được một cách tông quát về phương pháp lập lịch thi đựa vào tô màu đồ thị, ta sẽ đi
xem xét bài toán lập lịch thi kinh dién mà ở đó số ràng buộc đưa vào là tối
thiểu (chỉ chứa các ràng buộc bắt buộc phải có cho mọi yêu cầu lập lịch thi của bất kỳ một trường đại học nào)
Trang 3023
s* Đài toán lập lịch thi kinh điển được phát biểu nhự sau:
Các trường đại học tổ chức học theo tín chỉ Nếu sinh viên tích lũy đủ tổng số tín chỉ cho các môn quy định của một ngành là có quyền nhận bằng tốt nghiệp của ngành đó Đối với các đại học như thế, việc học và thi không tổ chức theo lớp mà theo các môn học Hàng năm nhà trường thông báo các môn
sé hoc dé sinh viên tự đăng ký học các môn học theo ngành mình chọn Cuối
kỳ hoặc cuối năm nhà trường tô chức thi cho các môn đã giảng trong năm Mỗi môn thi trong một ngày nhưng trong một ngày có thể tô chức thi nhiều môn Do một sinh viên có thê đăng ký thi nhiều môn nên lịch thi cần phải bố
trí để nếu có một sinh viên đăng ký thi nhiều môn nào đó thì các môn đó
không được thi cùng ngày
Yêu cầu: Hãy lập lich thi sao cho tông số ngày tổ chức thi là ít nhất có
thể
Ta sẽ tiếp cận bài toán trên theo phương pháp tô màu đồ thị như sau: Bước I: Xây dựng một đơn đồ thị vô hướng G với các đỉnh và các cạnh
được định nghĩa như sau:
- Mỗi môn thi là một đỉnh của đồ thị G
-_ Hai đỉnh của đồ thị G có cạnh nối (kề nhau) nếu có ít nhất một sinh
viên tham gia thi đồng thời cả hai môn thi đó
Bước 2: Áp dụng thuật toán tô màu đồ thị (lựa chọn một trong các thuật
toán phù hợp đã nghiên cứu ở mục 1.2) để tô màu các đỉnh của đồ thị G
-_ Số màu tôi ưu cần sử dụng đề tô màu đồ thị G chính là số ngày thi ít nhất cần sử dụng dé tổ chức thi
-_ Mỗi màu sử dụng đề tô cho một đỉnh sẽ ứng với ngày tổ chức môn thi
đó
Bước 3: Lập lịch thi đựa trên kết quả thu được ở bước 2
Trang 3124
Căn cứ vào kết quả tô màu cho từng đỉnh (môn học) ở bước 2 ta sẽ đưa
ra được lịch thi (ngày sẽ tô chức thi) cho từng môn học
Hiển thị lịch thi hết môn cho sinh viên
Thi du 1:
Một đợt thi có 7 sinh viên (nhóm thí sinh, có thể thay 7 bởi n) sẽ tham
gia thi hết môn các môn học, danh sách thi cụ thể như sau:
1
2
Nhóm thứ nhất thi các môn học: Maths, English, Biology, Chemistry
Nhóm thứ hai thi các môn học: Maths, English, Computer Sclence,