ONONT NYA NJANON HNIL AVI IS OVHL NYA NVM €10¢ - L110 VOH
BO GIAO DUC VA DAO TAO
TRUONG DAI HOC SU PHAM HA NOI 2
NGUYEN VAN LUQNG
NGHIÊN CỨU BÀI TỐ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 3LOI 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 khố 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ả
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ả
Trang 5MUC LUC
„I9 1
Chuong 1: CO SO LY THUYET onc eeececccecseesseessesssesssesssesseessesssesssesssessssssecsses 4 1.1 Tổng quan đơn đồ thị vơ hướng hữu hạn -2- 2© 2+zz+£z2zxz+rxeee 4
1.1.1 Đơn đồ thị vơ hướng liên thơng 2-2 2+2+++czxe+czecee 4
1.1.2 Đồ thị phẳng 2- 2+2 s22 E221127112711221122112211 21121 rreg 5 1.1.3 Đồ thị vơ hướng con đầy đủ và màu đồ thị s¿-+- 6
1.2 Giới thiệu các thuật tốn tơ màu . ¿25525 +22 *£22* + £+zezseczz 11
1.2.1 Thuật tốn thu gọn (hịa nhập) dinh (Contraction Algorithm) 11 1.2.2 Thuật tốn tơ màu tuần tự (Sequential Coloring) 14
1.2.3 Thuật tốn duyệt theo chiều sâu cĩ chặn nhánh - 19
1.2.4 Thuật tố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 tốn sắp xếp đỉnh của đơn đồ thị -sccs+zszxzrvrs 34
2.3.2 Thuật tốn tơ màu đơn đồ thị với ma trận liền kề : 35
Pin 44 37
2.4.1 Đặt vấn đề
2.4.2 Bài tốn lập lịch thi theo hệ thống tin chi
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
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 lồ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 đố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
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 tố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 tốn lập lịch thi “tối ưu” hơn nữa
Đề tài: “Nghiên cứu bài tố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 tố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 tốn tơ màu đồ thị 2 Mục đích nghiên cứu
Nghiên cứu thuật tố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 tồ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 tốn lập lịch thi được mơ hình hĩa thành bài tố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
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 tố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
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:
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
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 ngồ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 Định lý (Euler, 1752): Nếu một đồ thị phẳng liên thơng cĩ n đỉnh, p cạnh và d miễn thì ta cĩ hệ thức: n-pt+d=2 Chứng minh: xem [2, 3, 4, 6]
Hệ quả: Trong một đồ thị phẳng liên thơng tuỳ ý, luơn tồn tại ít nhất một đỉnh cĩ bậc khơng vượt quá 5
Chứng minh: xem [5]
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
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 tốn xác định
đồ thị vơ hướng con đây đủ là bài tố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 Ngồi ra, cĩ thể đùng 4 màu đánh số 1, 2, 3,
Trang 16s* Một số định lý và mệnh đề về màu (sắc số) đồ thị: Định lý 1: Nếu đồ thị G chứa một đồ thị con đăng cấu với đồ thị đầy đủ K; thì x(G) > n Chứng minh: xem [5] Định lý 2: Nếu đơn đồ thị G khơng chứa chu trình độ dài lẻ thì x(G) =2 Chứng minh: xem [5] Định lý 3: Với mỗi số nguyên dương n, tồn tại một đồ thị khơng chứa K¿ và cĩ sắc số bằng n Chứng minh: xem [5] Định lý 4:
Nếu mọi đỉnh của đồ thị G cĩ bậc khơng lớn hơn k thì x(G) < k+] Ching minh: xem [5]
Đị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
Trang 1710
Định lý Bốn màu đầu tiên được đưa ra như một phỏng đố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à tố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 tốn học là
chứng minh sai “bài tốn bến màu” được cơng bố năm 1879 bởi luật sư, nhà
tố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 tốn bốn màu”, Kempe được cơng nhận là hội viên Hội Khoa học Hồng gia Anh Các nhà tố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 tố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 tốn năm màu”, cịn “bài tốn bốn màu” vẫn cịn đĩ và là một thách đĩ đối với các nhà tốn học trong suốt
gần một thế kỷ Việc tìm lời giải của “bài tố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ị
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 tố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 tốn thu gọn (hịa nhập) đính (Contraction Algorithm)
Thuật tố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) }
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 hồ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 tốn Corneil - Graham sử dụng để tìm x(Œ ) Thuật tố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 tốn này, tuy nhiên
nĩ vẫn kém hiệu quả hơn thuật tố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 tố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 tốn hiệu quả hơn và cho kết quả tốt hơn thuật tốn Brigham
- Dutton đĩ là thuật tốn RLF (Recursive - Largest - First) của Leighton Ở
đây, x là một đỉnh cố định cĩ bậc lớn nhất Một đỉnh y khơng kề x cĩ số đỉnh
kể chung với x là lớn nhất sẽ được chọn đề hịa nhập với x cho tới khi x kề với tất cá các đỉnh khác (tạo thành một đồ thị con đầy đủ) Đề tăng tính hiệu qua
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 tốn RLF là (||)
Dưới đây là chương trình gia mã cho thuật tố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 tốn là trả về một phép tơ màu F: V > N Algorithm RLF: colornumber=0; // Số lượng các màu được sử dụng đề tơ Œ while (|V(G)| > 0) { x= đỉnh cĩ bậc lớn nhất trong G; colornumber = colornumber+1; F(x)=colornumber; NN= tập hợp các đỉnh khơng kề với x;
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;
Trang 2114 y= đỉnh cĩ bậc lén nhat trong NN; } F(y) = colornumber; hịa nhập y và x thành một đỉnh; cập nhật lại tập hợp VN - các đỉnh khơng kề với x; } G =Œ—x; // loại bỏ x khoi G } return F
1.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) {
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 tốn DSATUR (Degree of Saturation) của Brèlaz là thuật tố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
tố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 tố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 tố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
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 tố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 tố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 tố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 tố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
Trang 2518 } else { //truong hợp kết thúc vịng lặp for ở trên mà khơng phải lệnh break Fopt =F; /! lưu phương án tơ màu tơi ưu hiện tại optColorNumber =colors ( |V|-1); ¡ = chỉ số đỉnh nhỏ nhất trong các đỉnh cĩ F(4[7])=optColorNumber; SfarfE i-]; if (start < 0){ breack; // thốt khỏi vịng lặp while }
Xĩa tồ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 tố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 tốn trên cĩ thể dừng khi trong quá trình quay lui gặp
Trang 2619
Thuật tố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 tố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 boolean ok; if (k > N){// da xét hết tất cả các đỉnh của G Cập nhật giá trị tối ưu; Exit; } ok=false; for (int =1; i< s6_mdu_da_t6; i++) { // duyét trong sé cdc mau đã tơ if (t6_dwoc_mau(i,k)){ ok=true; Dat_trang_thai(i,A);// Ghi nhận & cĩ màu ¡, đánh số các đỉnh kể & cĩ màu khác Try(k+1); // đệ quy tơ màu cho đỉnh k+I Trả trạng thái(i,&); }
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);
Trang 2720
Thuật tố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 tốn khơng đáp ứng được về mặt thời gian
1.2.4 Thuật tố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){
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 tố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 tố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 tố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
Trang 2922
Thuật tố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 tốn theo ma tran ké, d6 phức
tạp của thuật tố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 tố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 tốn lập lịch thi cũng như bài tốn xếp lịch thi nĩi chung thuộc lớp bài tố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 tố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 tố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 tố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 tố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 tốn lập lịch thi kinh dién mà ở đĩ số ràng buộc đưa vào là tối
Trang 3023
s* Đài tố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 tố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 tốn tơ màu đồ thị (lựa chọn một trong các thuật
tốn phù hợp đã nghiên cứu ở mục 1.2) để tơ màu các đỉnh của đồ thị G
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, Geography Nhĩm thứ ba thi các mơn học: Biology, Psychology, Geography, Spanish Nhĩm thứ tư thi các mơn học: Biology, Computer Sclence, History, French Nhĩm thứ năm thi các mơn học: English, Psychology, History, Computer Science Nhĩm thứ sau thi cac mon hoc: Psychology, Chemistry, Computer Science, French Nhom thu bay thi cac m6n hoc: Psychology, Geography, History, Spanish
Yêu cầu: Hãy tìm ra số ngày thi ít nhất đề thi 10 mơn học trên, hơn nữa các thí sinh tham gia thi các mơn khơng bị trùng ngày thi
Lời giải:
Để giải quyết vấn đề này chúng ta dùng phương pháp tơ màu đơn đồ thị đã đề cập ở trên
Trang 3225
Ký hiệu B thay cho Blue, R thay cho Red, W thay cho White, G thay cho Green, Y thay cho Yellow, O thay cho Orange
Áp dụng thuật tốn tơ mau dé thi LF (Largest First) da trinh bay trong mục 1.2.2 ta được kết quả tơ màu như sau:
Phải sử đụng 06 màu đề tơ màu đồ thị G, cụ thể màu tơ cho các đỉnh: - Các đỉnh Ø cĩ màu Ư - Các đỉnh Ð, M/ cĩ màu R - Các đỉnh CS, % cĩ màu - Các đỉnh E, cĩ màu - Các đỉnh C, G co mau Y
- Cac dinh Hed mau O
Từ kết quả trên, ta cĩ thể đưa ra một lịch thi được chia làm 6 dot (6
ngày thi) cụ thể như sau: Dot | Biology
Dot 2 Psychology, Maths
Dot 3 Computer Science, Spanish Dot 4 English, French
Dot 5 Chemistry, Geography Dot 6 History
Trang 3326
Rõ ràng việc áp đụng phương pháp tơ màu đồ thị như trên sé cho ra lời đã cho vì:
-_ Hai đỉnh kề nhau sẽ được tơ bởi hai màu khác nhau, tức là nếu một sinh viên tham gia thi hai mơn thi thì hai mơn thi này sẽ tổ chức thi vào hai ngày khác nhau
- Các đỉnh khơng kề nhau cĩ thê được tơ bởi màu giống nhau, tức là cĩ thể tổ chức thi nhiều mơn trong cùng một ngày
- Tổng số màu sử dụng để tơ màu đồ thị là tối ưu (ít nhất cĩ thể), tức là tổng số ngày sử dụng để tơ chức thi là ít nhất cĩ thể
1.4 Kết luận chương
Trong chương ], tác giả đã cơ gắng trình bày một cách khái quát các kiến thức cơ sở đã nghiên cứu được về lý thuyết đồ thị, cụ thể ở đây là những
kiến thức liên quan đến đơn đồ thị vơ hướng hữu hạn như: đơn đồ thị vơ
hướng liên thơng, đồ thị phẳng, đồ thị vơ hướng con đầy đủ và màu đồ thị Trên cơ sở đĩ, tác giả trình bày một cách đầy đủ, chỉ tiết các thuật tốn tơ màu đồ thị khác nhau như thuật tốn hịa nhập đỉnh (Contraction Algorithm), các thuật tốn tơ màu tuần tự (Sequential Coloring Algorithms), thuật tốn duyệt cĩ chặn nhánh, các thuật tốn tham lam (Greedy Coloring Algorithms), cĩ đánh giá và phân tích mức độ hiệu quả cũng như độ phức tạp cho từng thuật tốn
Trang 3427
Chương 2: ỨNG DỤNG LÝ THUYET ĐỊ THỊ VÀO LẬP LỊCH THỊ
2.1 Ma trận liền kề
Để lưu trữ đồ thị và thực hiện các thuật tốn khác nhau với đồ thị trên
máy tính cần phải tìm những cấu trúc dữ liệu thích hợp để mơ tả đồ thị Việc
chọn cấu trúc dữ liệu nào đề biểu diễn đồ thị cĩ tác động rất lớn đến hiệu quả
của thuật tốn Vì vậy, việc chọn lựa cấu trúc đữ liệu để biểu diễn đồ thị phụ
thuộc vào từng tình huống cụ thể (bài tốn và thuật tốn cụ thể) Cĩ nhiều
cách để biểu diễn và lưu trữ đồ thị như biểu diễn bằng zma trận liễn kể, ma
trận liên thuộc, danh sách cạnh, danh sách kê, danh sách liên kết Trong mục
này chúng ta sẽ xét phương pháp cơ bản được sử dụng để biểu diễn đồ thị trên
máy tính đĩ là phương pháp biểu diễn và lưu trữ theo znz đrận liên kể, đồng
thời cũng phân tích một cách ngắn gọn những ưu điểm cũng như những nhược điểm của phương pháp này
Xét đơn đồ thị vơ hướng G=(V,E), với tập đỉnh V={I1, 2, .n}, tập
cạnh E={e\, e;, .,emụ } Ta gọi ma trận liền kê của đồ thị G là ma trận vuơng cấp nxn: A = [aj], Vi, j=1, n sao cho cac phan tử của ma trận A duge xac
định theo quy tắc sau đây:
® Aij= I nếu cạnh (¡,j) e E
e Aij =0 néu canh (i,j) ¢ E
Vi du: với đồ thị G cho bởi hình đưới đây
Trang 3528 Ma trận liền kề của G là: 1 4 I Of hk eo 1 1 0 1 0 k2 2 ta k2 34 BH 4.112) 4 H0 0 1 9 1 1 5 H210 i1 00: 6 0W 002110 4* Các tính chất của ma trận liền kề:
1) Rõ ràng ma trận liền kề của đồ thị vơ hướng là ma trận đối xứng, tức
la afi,j|=a[j,i], ij=1,2, .,.n nguge lai, mỗi (0,1)-ma trận đối xứng cấp n sé
tương ứng, chính xác đến cách đánh số đỉnh (cịn nĩi là: chính xác đến đẳng
cấu), với một đơn đồ thị vơ hướng n đỉnh
2) Tổng các phần tử trên dịng ¡ (cột j) của ma trận kề chính bằng bậc của đỉnh 1 (đỉnh ))
3) Nếu ký hiệu a,” , ij=1, 2, n là phần tử của ma trận A'=A.A A
(p thừa số) Khi đĩ ay’, ij=1, 2, n cho ta số đường đi khác nhau từ đỉnh i đến đỉnh j qua p-1 dinh trung gian
Chú ý: Trên đây chúng ta chỉ xét đơn đồ thị Ma trận liền kề của đa đồ thị cĩ thể xây dựng hồn tồn tương tự, chỉ khác là thay vì ghi 1 vào vị trí
a[i,j] néu (i,j) 14 canh của đồ thị, chúng ta sẽ ghi k là số cạnh nối hai đỉnh ¡, j
Trong rất nhiều vấn đề ứng dụng của lý thuyết đồ thị, mỗi cạnh e=(u,v) của đồ thị được gán với một con số c(e) (cịn viết là c(u,v) gọi là trọng số của cạnh e Đồ thị trong trường hợp như vậy được gọi là đồ thị cĩ trọng số Trong
trường hợp đồ thị cĩ trọng SỐ, thay vì ma trận liền kề, để biểu diễn đồ thị ta sử
Trang 3629
Cij = CŒ, j) nếu canh (i, j) e E
Cij = 0 néu canh (i, j) ¢ E
Trong đĩ, số 0 tùy từng trường hợp cụ thê, cĩ thể đặt bằng một trong
các giá trị sau: 0, +œ, -œ,
Ưu điểm lớn nhất của phương pháp biêu diễn đồ thị bằng ma trận liền kề (hoặc ma trận trọng số) là để trả lời câu hỏi: Hai đỉnh u,v cĩ kề nhau trên đồ thị hay khơng, chúng ta chỉ phải thực hiện một phép so sánh Nhược điểm lớn nhất của phương pháp này là: khơng phụ thuộc vào số cạnh của đồ thị, ta
luơn phải sử dụng nỶ đơn vị bộ nhớ đề lưu trữ ma trận liền kề của nĩ
Trong hai bài tốn xác định đồ thị con đầy đủ và tơ màu đồ thị dưới
đây, việc kiểm tra xem hai đỉnh cĩ kề nhau hay khơng được xem là điều kiện
tiên quyết Đối với bài tốn xác định đồ thị con đầy đủ thì phải kiểm tra xem
mọi cặp đỉnh của đồ thị con cĩ kề nhau hay khơng Cịn đối với bài tốn tơ màu đồ thị, ta phải tơ sao cho mọi cặp đỉnh kề nhau cĩ màu khác nhau (tức là phải kiểm tra xem cĩ hai đỉnh kề nhau bất kỳ nào cĩ màu giống nhau khơng)
Với tính chất như vậy thì việc cài đặt các thuật tốn xác định đồ thị con đầy
đủ và tơ màu đồ thị dựa trên cách lưu trữ theo ma trận liền kề là đơn giản và hiệu quả hơn cả
2.2 Xác định đồ thị con đầy đủ dựa vào ma trận liền kề
Việc xác định một đồ thị con đầy đủ cĩ ý nghĩa lớn trong các thuật tốn
tơ màu Trong thuật tốn 8SC ở mục 1.2.2, việc tìm một đồ thị con đầy đủ của G, đặc biệt là tìm một đồ thị con đầy đủ lớn nhất của Œ cĩ ý nghĩa vơ cùng
lớn trong việc cải thiện tốc độ của thuật tốn (thuật tốn quay lui loại bỏ sớm
Trang 3730
Khi lưu trữ đồ thi G theo ma trận liền kề, viéc kiém tra xem G c6 phai là một đồ thị đầy đủ khơng là một việc hết sức đơn giản
s* Hàm kiểm tra đồ thị đầy đủ “?sCompleteGraph(4)”:
- Pau vao: A 1a ma tran liền kề của đồ thị G véi kích thước nxn - Pau ra: true nếu G là đồ thị đầy đủ, false néu nguoc lai Thuật tốn: For (=l;1<n; ++){ For (=1; j<n; j+?){ If(Œ!=J))&&(A[1J]E70)) retum ƒølse; } return true;
s* Thuật tốn xác định tất cá các dé thi con đầy đủ & dinh của đồ thị G dựa
trên ma trận liền kề của Ơ:
- Dau vao: A là ma trận liền kề của đồ thị G với kích thước nxn, k 1a sé đỉnh của đồ thị con đầy đủ của G
- Đầu ra: các đồ thi con đầy đủ & đỉnh của Œ hoac null Thuật tốn:
Xuất phát từ đồ thị con đầy đủ cĩ 1 đỉnh, ta xây dựng dần cho đồ thị
con đầy đủ cĩ k-1 đỉnh, và từ đồ thị cĩ &-I đỉnh ta xây dựng đồ thị con đầy đủ
cĩ & đỉnh Để thuật tốn hoạt động hiệu quả hơn, ta cĩ thể sử dụng thêm
nhánh cận Dưới đây là chương trình giả mã:
List<CompleteGraph> findCompleteGraph(AdjacentMatrix A,int k) {
If (k==1){// dé thị con đầy đủ cĩ 1 đỉnh
S=new List<CompleteGraph>Q;// tạo danh sách S 1ưu kết quả
For (i=1; i <=n; i++){
Trang 3831 S.add(P); // thém P vào danh sách các đồ thi con đầy đủ 1 dinh; } return S; }
else {// tim do thi con day du co k>2 dinh
C=findCompleteGraph(A,k-1);// C la tap các đồ thị con đầy đủ cĩ
k-1 đỉnh
S=new List<CompleteGraph>();// tao danh sách S lưu kết qua
foreach (p in C){ // duyét với mỗi đồ thị con đầy đủ #-I đỉnh p
trong danh sách Œ
for (=1; i<=n; i++){// duyét lần lượt các đỉnh của G for (7 là đỉnh nằm trong ?)
1 (4[//7] !=1) break;// đỉnh ¡ khi thêm vào p
khơng tạo thành một đồ thị con đầy đủ
if (/ là đỉnh cuối cùng của p){/⁄/ đã duyệt hết các đỉnh trong ? H= p v i; // tao dé thi con day di H bang cách thém dinh i vao p; S.add(H);// thém H vao danh sach két qua S return S;
Thuật tốn trên gọi đệ quy dé tìm tất cả các đồ thị con đầy đủ cĩ & đỉnh
Trang 3932
được một đồ thi con đầy đủ cĩ & đỉnh ta sẽ trả về kết quả và thốt khỏi chương
trình
s4* Thuật tốn tìm một đồ thị con đầy đủ lớn nhất
Việc tìm một đồ thị con đầy đủ lớn nhất của đồ thị G cĩ vai trị quan
trọng trong lý thuyết đồ thị nĩi chung cũng như bài tốn tơ màu đồ thị nĩi riêng Bài tốn tìm đồ thị con đầy đủ lớn nhất là bài tốn NP - đầy đủ Bài tốn được phát biêu như sau:
Cho đơn đồ thị vơ hướng Œ Một đồ thị con đầy đủ Q của G là đơn đồ thị vơ hướng trong đĩ ƒ{@) c V{G) và tất cả các đỉnh của Q là kề nhau ở trong G Q là một đồ thị con đầy đủ cực đại của Ớ khi và chỉ khi ta thêm một
đỉnh bất kỳ trong G vào Ĩ sẽ khiến Ĩ khơng cịn là đồ thị con đầy đủ Đồ thị
Ĩ thỏa mãn điều kiện trên và cĩ nhiều đỉnh nhất được gọi là đồ thị con đầy đủ
lớn nhất của Œ Mục tiêu của bài tốn đặt ra là đi tìm đồ thị con đầy đủ lớn
nhất Q,„„ của một đơn đồ thị vơ hướng Ở cho trước
Sau đây, tác giả sẽ trình bày một số thuật tốn xác định đồ thị con đầy
đủ lớn nhất
Thuật tốn tìm kiếm theo chiều sâu kết hợp nhánh cận:
Từ một đồ thị con đầy đủ nhỏ, ta sẽ tìm những đồ thị con đầy đủ kích
thước lớn dần lên cho tới khi tìm được đồ thị con đầy đủ lớn nhất Sử dụng
các biến tồn cuc O va Omax, trong do @ là đề thị con đầy đủ hiện tại, max để
lưu đồ thị con đầy đủ lớn nhất Đặt § c ƒ là tập các đỉnh ứng cử viên (cĩ thé thêm vào Q đề tạo thành đồ thị con đầy đủ mới) Khởi tạo Q= Ø, Q„a„ = Ø, R = V (tap tất cả các đỉnh của đồ thị G) Chọn một đỉnh p # và thêm p vào Q
(Ĩ=@Ø U {p}) Sau đĩ ta tính R„ = R ¬ 7) là tập các đỉnh ứng cử viên mới
Trang 4033
một đồ thị con đầy đủ thì đồ thị nay cũng chỉ cĩ kích thước khơng lớn hơn
Øm„„ đã tìm được ở những bước trước đĩ Lúc này, ta sẽ khơng đi theo nhánh này nữa mà chuyển sang nhánh khác Đây chính là điều kiện thốt khỏi một nhánh trong quá trình tìm kiếm theo chiều sâu của thuật tốn trên Khi Ry =O
nghĩa là ta đã đi hết một nhánh, lúc này ta tìm được một đồ thị con đầy du OQ
cuc dai Néu |O| > |Omax| thi ta cap nhat gia tri mGi Omax = Q và tiến hành quay lui cho đến khi R=Ø Dưới đây là giả mã của thuật tốn:
void BasicMC (G =(V,£)) // tht tuc chinh
{
giobalQ = Ø- — /Ikhởi tạo
8lobal Q„„y = ZG // khởi tạo
EXPAND(/); // bat đầu với tập ứng cử viên V