KIẾN THỨC CHUẨN BỊ 13Đường đi duyệt các đỉnh bằng thuật toán DF S: v1v2v3v5 và v1v2v4v6.Minh họa thuật toán BFS Bước Hàng đợi Đỉnh v lấy ra từ hàngđợi Hàng đợisau khi lấy v ra Các đỉnh u
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
KHOA TOÁN
***********
NGUYỄN THỊ MINH PHƯƠNG
BÀI TOÁN GHÉP CẶP TRÊN
ĐỒ THỊ HAI PHẦN VÀ ỨNG DỤNG
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
HÀ NỘI - 2018
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
KHOA TOÁN
NGUYỄN THỊ MINH PHƯƠNG
BÀI TOÁN GHÉP CẶP TRÊN
Trang 3LỜI CẢM ƠN
Trước khi trình bày nội dung chính của khóa luận, tôi xin bày tỏlòng cảm ơn tới các thầy cô khoa Toán, trường Đại học Sư phạm HàNội 2, các thầy cô trong tổ bộ môn Toán ứng dụng, các thầy cô thamgia giảng dạy đã tận tình truyền đạt những tri thức quý báu, luônđộng viên, quan tâm, tạo điều kiện thuận lợi để tôi hoàn thành tốtnhiệm vụ khóa học và khóa luận
Bên cạnh đó, tôi cũng xin bày tỏ lòng cảm ơn tới các thầy cô trongViện Toán học đã tạo điều kiện cho tôi được học tập và làm việc, cácanh chị trong nhóm nghiên cứu đã giúp đỡ, trao đổi để tôi hiểu vấn
đề Đặc biệt, tôi xin bày tỏ sự kính trọng và lòng biết ơn sâu sắc tớiPGS TSKH Phan Thị Hà Dương, người đã trực tiếp hướng dẫn,chỉ bảo tận tình giúp đỡ để tôi có thể hoàn thành khóa luận này
Hà Nội, tháng 5 năm 2018
Sinh viên
Nguyễn Thị Minh Phương
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan đề tài này là do tôi thực hiện Khóa luận là kếtquả quá trình tìm tòi, nghiên cứu của tôi dưới sự hướng dẫn tận tìnhcủa PGS.TSKH Phan Thị Hà Dương và đề tài này không trùngvới các kết quả của tác giả khác
Hà Nội, tháng 5 năm 2018
Sinh viên
Nguyễn Thị Minh Phương
Trang 5Mục lục
1.1 Các khái niệm cơ sở 3
1.2 Các loại đồ thị 5
1.3 Đường đi, chu trình, tính liên thông 7
1.4 Biểu diễn đồ thị bằng ma trận 8
1.5 Các thuật toán tìm kiếm trên đồ thị 10
1.5.1 Thuật toán tìm kiếm đồ thị theo chiều sâu (DFS) 10 1.5.2 Thuật toán tìm kiếm đồ thị theo chiều rộng (BFS) 11 1.6 Kết luận chương 13
2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 14 2.1 Các khái niệm 14
2.2 Thuật toán tìm ghép cặp lớn nhất 16
2.3 Một số kết quả của bài toán ghép cặp trên đồ thị hai phần 20
2.4 Mở rộng bài toán ghép cặp với đồ thị hai phần có trọng số 28
2.4.1 Bài toán ghép cặp với trọng số cực tiểu 28
ii
Trang 6MỤC LỤC iii
2.4.2 Bài toán ghép cặp với trọng số lớn nhất 35
3 MỘT SỐ ỨNG DỤNG CỦA BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 38 3.1 Bài toán hôn nhân bền vững 38
3.1.1 Giới thiệu bài toán 38
3.1.2 Giải quyết bài toán 40
3.1.3 Tính đúng đắn của thuật toán 45
3.1.4 Tính tối ưu của kết quả 46
3.1.5 Mở rộng bài toán 48
3.2 Một số bài toán THPT có thể giải được bằng bài toán ghép cặp trong đồ thị hai phần 48
3.3 Kết luận chương 54
Trang 7LỜI MỞ ĐẦU
1 Lí do chọn đề tài
Cùng với sự phát triển không ngừng của công nghệ thông tin, lý thuyết
đồ thị đã trở thành một lĩnh vực toán học quan trọng và cần thiếtcho nhiều ngành khoa học và ứng dụng Những tư tưởng của lý thuyết
đồ thị được đề xuất từ những năm đầu thế kỉ 18 bởi nhà toán họcLeonhard Euler Ông là người đã sử dụng đồ thị để giải bài toán nổitiếng về bảy cây cầu ở thành phố Konigsberg Từ đó, lý thuyết đồ thịngày càng khẳng định được tầm quan trọng trong việc ứng dụng đểgiải các bài toán vật lý, kinh tế
Đồ thị hai phần là một cặp G = (X ∪ Y, E) trong đó X, Y là haitập hữu hạn các đỉnh rời nhau, còn E là tập hữu hạn các cạnh Đồthị hai phần được gặp rất nhiều trong mô hình thực tế như quan hệhôn nhân, giáo viên chọn tiết trong thời khóa biểu Khi đó việc giảinhiều bài toán thực tế sẽ được đưa về việc giải các bài toán trên đồthị hai phần
Bài toán ghép cặp trên đồ thị hai phần là một bài toán nổi tiếng trong
lý thuyết đồ thị Thuật toán ghép cặp được nghiên cứu bởi hai nhàkhoa học David Gale và Lloyd Shapley từ năm 1962 Từ đó đã có rấtnhiều công trình nghiên cứu về vấn đề này Gần đây nhất, năm 2012ứng dụng của thuật toán này đã mang lại giải Nobel kinh tế cho hainhà khoa học người Mỹ Alvin E.Roth và Lloyd Shapley với nghiêncứu “Lý thuyết phân phối ổn định và thực tiễn thiết kế thị trường” cókhả năng ứng dụng rộng rãi trên khắp thế giới
Trang 8MỤC LỤC 2
Với lòng yêu thích và mong muốn tìm hiểu sâu nội dung này trongphạm vi của một khóa luận tốt nghiệp, chúng tôi xin trình bày nhữnghiểu biết của mình về đề tài “Bài toán ghép cặp trên đồ thị hai phần
và ứng dụng”
2 Mục đích nghiên cứu
- Nghiên cứu một bài toán ghép cặp trên đồ thị hai phần;
- Ứng dụng bài toán ghép cặp trên đồ thị hai phần trong bài toánhôn nhân bền vững và các bài toán thi học sinh giỏi THPT
3 Phương pháp và công cụ nghiên cứu
- Nghiên cứu tổng hợp tài liệu
4 Cấu trúc khóa luận
Nội dung đề tài bao gồm các chương sau:
• Chương 1: Kiến thức chuẩn bị
Chương này chúng tôi trình bày các khái niệm cơ bản về đồ thị,cách biểu diễn đồ thị bằng ma trận và các thuật toán duyệt đồ thị
• Chương 2: Bài toán ghép cặp trên đồ thị hai phần
Chương này chúng tôi trình bày về bài toán ghép cặp trên đồ thịhai phần và đồ thị hai phần có trọng số
• Chương 3: Một số ứng dụng của bài toán ghép cặp trên đồ thị haiphần
Chương này chúng tôi trình bày về bài toán hôn nhân bền vững vàmột số bài toán thi học sinh giỏi (HSG) ở bậc trung học phổ thông(THPT) có thể giải được bằng các kết quả của bài toán ghép cặptrên đồ thị hai phần
Trang 9Định nghĩa 1.1 (3) Một đồ thị vô hướng là G là một cặp có thứ tự
3
Trang 10CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 4
G = (V, E) với V là một tập và E là một tập con của tích Đề-các
V × V Các phần tử của V được gọi là đỉnh, các phần tử của E đượcgọi là cung của đồ thị có hướng G Nếu e = {a, b} thì a được gọi làđỉnh đầu, b được gọi là đỉnh cuối của e hay các đỉnh liên thuộc với e
b a
Hình 1.2: Đồ thị có hướng G2 với các đỉnh a, b, c, d và các cung e1, e2, e3, e4, e5, e6
Định nghĩa 1.3 (3) Cho một đồ thị vô hướng không có khuyên G =(V, E) và v ∈ V Kí hiệu:
N (v) = {x ∈ V | x 6= v và {x, v} ∈ E}
Khi đó, N (v) được gọi là tập các láng giềng của v
Bậc của đỉnh v ∈ V trong đồ thị G, kí hiệu deg(v), deg(v) = |N (v)|
Trang 11CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 5
Định nghĩa 1.5 (3) Đồ thị G = (V, E) được gọi là đồ thị có trọng
số nếu ít nhất một trong hai hàm f : V → WV, g : E → WE được xácđịnh, ở đây WV và WE là các tập nào đấy Các phần tử của WV và
WE định lượng giá trị f (v), v ∈ V được gọi là trọng số của đỉnh v,giá trị g(e), e ∈ V được gọi là trọng số của cung hay cạnh e, có thể
kí hiệu trọng đồ G = (V, E, f ) hay G = (V, E, g) hay G = (V, E, f, g)tùy thuộc vào việc chỉ có một hàm f , một hàm g hay cả hai hàm f và
g xác định
Trang 12CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 6
4
6 7
Định nghĩa 1.7 (2) Một đồ thị hai phần là một đơn đồ thị vô hướng
G = (X ∪ Y, E) trong đó X, Y là hai tập hữu hạn các đỉnh rời nhau,còn E là tập hữu hạn các cạnh Mỗi cạnh nối một đỉnh của X với Y Định nghĩa 1.8 (2) Đồ thị hai phần G = (X ∪ Y, E) với |X| =
m, |Y | = n được gọi là đồ thị hai phần đầy đủ, kí hiệu Km,n nếu mọiđỉnh trong tập X được nối với tất cả các đỉnh trong tập Y
K2,3
Hình 1.6: Đồ thị hai phần đầy đủ (hình bên trái) và không đầy đủ (hình bên phải)
Trang 13CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 7
Định nghĩa 1.9 (3) Đồ thị vô hướng H = (V0, E0) được gọi là một
đồ thị con của đồ thị vô hướng G = (V, E) nếu V0 ⊆ V và E0 ⊆ E
Đồ thị con cảm sinh bởi tập đỉnh V0 ⊆ V của G được kí hiệu G[V0] là
đồ thị con của G với tập đỉnh V0 và các cạnh là tất cả các cạnh của
G có hai đầu mút thuộc V0
Chu trình là một đường đi bắt đầu và kết thúc tại cùng một đỉnh
Định nghĩa 1.11 (10) Cho đồ thị có hướng G = (V, E)
Một đường đi độ dài n, n ∈ Z+ trong G là một dãy v0e1v1e2 envnsao cho vi ∈ V ∀i = 1, n còn ei ∈ E ∀i = 1, n và ei = (vi−1, vi) v0được gọi là đỉnh đầu, vn được gọi là đỉnh cuối
Đường đi đơn là đường đi không đi qua một cung quá một lần
Ví dụ 1.3.1 Trong đồ thị vô hướng ở Hình 1.1 ta thấy
a) v1e1v2e4v3e2v1e1v2 là một đường đi của G1
b) v1e2v3e4v2 là một đường đi đơn của G1
c) v1e1v2e4v3e2v1 là một chu trình của G1
Trang 14CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 8
Định nghĩa 1.12 (3) Đồ thị vô hướng G được gọi là liên thông nếu
có đường đi giữa hai đỉnh bất kì
Định nghĩa 1.13 (3) Đồ thị con liên thông G0 = (V0, E0) của một
đồ thị vô hướng G = (V, E) được gọi là một thành phần liên thông của
G nếu G0 = G[V0] và với mọi V00 6⊆ V0 đồ thị G[V00] không liên thông.Định lý 1.1 (2) Đồ thị G là đồ thị hai phần khi và chỉ khi G khôngchứa chu trình có độ dài lẻ
Định nghĩa 1.14 (10) Ma trận kề A(G) của một đơn đồ thị vô hướng
G với thứ tự các đỉnh v1, v2, , vn là ma trận [Aij] vuông cấp n trongđó
1 nếu viliên thuộc ej;
0 nếu ngược lại
Ví dụ 1.4.1 Trong hình 1.1, ma trận kề và ma trận liên thuộc của
đồ thị G được thể hiện như sau:
Trang 15CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 9
Trang 16CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 10
Khi giải quyết nhiều bài toán lý thuyết đồ thị, ta luôn phải duyệt quatất cả các đỉnh của đồ thị đó Vậy nên, cần có thuật toán duyệt toàn
bộ các đỉnh của đồ thị Gọi chung là thuật toán duyệt đồ thị
1.5.1 Thuật toán tìm kiếm đồ thị theo chiều sâu (DFS)
Từ đỉnh gốc đang xét, thuật toán duyệt đi xa nhất theo từng nhánh,khi nhánh đã duyệt hết, lùi về từng đỉnh để tìm và duyệt những nhánhtiếp theo Quá trình duyệt chỉ dừng lại khi tìm thấy đỉnh cần tìm hoặctất cả đỉnh đều đã được duyệt qua
Thuật toán
Bước 1 Khởi tạo:
Các đỉnh đều ở trạng thái chưa đánh dấu, ngoại trừ đỉnh s.Ngăn xếp (Stack), ban đầu chỉ có s Ngăn xếp dùng để chứacác đỉnh sẽ được duyệt theo thứ tự ưu tiên chiều sâu
Bước 2 Lặp các bước sau đến khi ngăn xếp chỉ còn s
Lấy v nằm cuối ngăn xếp ra khỏi ngăn xếp, thăm đỉnh v.Xét tất cả các đỉnh u kề với v chưa được đánh dấu, khi đó:
(1) Nếu tồn tại u, đánh dấu thăm u, ghi nhận vết đường đi
từ v tới u và đẩy u vào ngăn xếp;
(2) Nếu không tồn tại u, quay lại đỉnh đã thăm ngay trước
v và tiếp tục quá trình trên
Trang 17CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 11
Bước 3 Truy vết tìm đường đi
Thuật toán sẽ dừng khi ngăn xếp rỗng
1.5.2 Thuật toán tìm kiếm đồ thị theo chiều rộng (BFS)
Từ một đỉnh gốc đang xét, xác định và lần lượt duyệt các đỉnh kềxung quanh đỉnh gốc Tiếp tục quá trình duyệt qua các đỉnh kề đỉnhvừa xét cho đến khi đạt được kết quả cần tìm hoặc duyệt qua tất cảcác đỉnh
Thuật toán
Bước 1 Khởi tạo:
Các đỉnh đều ở trạng thái chưa đánh dấu, ngoại trừ đỉnh s
đã đánh dấu
Hàng đợi (Queue), ban đầu chỉ có s Hàng đợi dùng để chứacác đỉnh sẽ được duyệt theo thứ tự ưu tiên chiều rộng
Bước 2 Lặp các bước sau đến khi hàng đợi rỗng
Lấy v khỏi hàng đợi, thông báo thăm v
Xét tất cả các đỉnh u kề với v chưa được đánh dấu, với mỗiđỉnh u đó:
(1) Đánh dấu u;
(2) Ghi nhận vết đường đi từ v tới u;
(3) Đẩy u vào hàng đợi
Bước 3 Truy vết tìm đường đi
Trang 18CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 12
Thuật toán sẽ dừng khi hàng đợi rỗng
Ví dụ 1.5.1 Duyệt đồ thị sau đây, xuất phát từ đỉnh v1
v kề u ngăn xếp
sau mỗibước
Giải thích
1 v1 v1 v2 v1, v2 Tiến sâu thăm v2
2 v1, v2 v2 v3 v1, v2, v3 Tiến sâu thăm v3
3 v1, v2, v3 v3 v5 v1, v2, v3, v5 Tiến sâu thăm v5
4 v1, v2, v3, v5 v5 Không có v1, v2, v3 Lùi lại
5 v1, v2, v3 v3 Không có v1, v2 Lùi lại
6 v1, v2 v2 v4 v1, v2, v4 Tiến sâu thăm v4
7 v1, v2, v4 v4 v6 v1, v2, v4, v6 Tiến sâu thăm v6
8 v1, v2, v4, v6 v6 Không có v1, v2, v4 Lùi lại
9 v1, v2, v4 v4 Không có v1, v2 Lùi lại
10 v1, v2 v2 Không có v1 Lùi lại
Trang 19CHƯƠNG 1 KIẾN THỨC CHUẨN BỊ 13
Đường đi duyệt các đỉnh bằng thuật toán DF S: v1v2v3v5 và v1v2v4v6.Minh họa thuật toán BFS
Bước Hàng đợi Đỉnh v lấy
ra từ hàngđợi
Hàng đợisau khi lấy
v ra
Các đỉnh u
kề với v vàchưa lên lịch
Hàng đợisau khi đưa
Các kết quả quan trọng trong chương này gồm:
(1) Một số khái niệm cơ sở của lý thuyết đồ thị: các loại đồ thị, bậccủa đồ thị, đường đi, chu trình, tính liên thông;
(2) Cách biểu diễn đồ thị bằng ma trận;
(3) Các thuật toán duyệt trên đồ thị
Những đóng góp của chúng tôi là sắp xếp và trình bày lại một số kiếnthức về đồ thị Ngoài ra tôi còn đưa ra các ví dụ minh họa để làm rõcác định nghĩa
Trang 20Định nghĩa 2.1 (10) Cho G = (V, E) là một đồ thị vô hướng.
Một ghép cặp của G là một tập hợp M gồm các cạnh trong G đôi mộtkhông có đỉnh chung
Đỉnh của các cạnh trong ghép cặp M gọi là đỉnh đã ghép, những đỉnhkhác là đỉnh chưa ghép
Định nghĩa 2.2 (10) Cho G là một đồ thị vô hướng Trong G:Ghép cặp hoàn hảo là một ghép cặp chứa mọi đỉnh của đồ thị
Ghép cặp cực đại là ghép cặp mà ta không thể thêm cạnh nào vào
14
Trang 21CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 15
Ghép cặp lớn nhất là ghép cặp có nhiều cạnh nhất (trong số các ghépcặp)
Bài toán ghép cặp trên G là bài toán tìm ghép cặp lớn nhất của G
Hình 2.1: Ghép cặp hoàn hảo của K4,4
Ví dụ 2.1.2 Phân biệt ghép cặp cực đại và ghép cặp lớn nhất
Trang 22CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 16
Để xác định ghép cặp lớn nhất, chúng ta xây dựng dần dần từng bướcmột, mỗi bước lại cải thiện để có ghép cặp lớn hơn, chúng ta dùng cácđường mở để cải thiện ghép cặp
Định nghĩa 2.3 (10) Cho đồ thị vô hướng G và M là một ghép cặpcủa G
Đường xen kẽ của ghép cặp M là một đường đi đơn trên đồ thị saocho với bất kì hai cạnh kề nào trên đường đi, đúng một trong hai cạnhthuộc M
Đường mở của ghép cặp M là một đường xen kẽ mà đỉnh đầu và đỉnhcuối là hai đỉnh chưa ghép
Ví dụ 2.2.1 Xét đồ thị hai phần G như Hình 2.2, ghép cặp M ={X1Y1, X2Y2}
Đường (X3, Y2, X2, Y1) là một đường xen kẽ của M
Đường (X3, Y2, X2, Y1, X1, Y3) là một đường mở của M
Trong đường mở (X3, Y2, X2, Y1, X1, Y3), nếu ta xóa đi các cạnh củaghép cặp M thì các cạnh còn lại sẽ tạo thành một ghép cặp có nhiềucạnh hơn ghép cặp M ban đầu
Từ ví dụ trên, ta thấy được ý tưởng thuật toán "đường mở" của Bàitoán ghép cặp
Thuật toán Đường mở
Cho đồ thị vô hướng G
Bước 1 Tìm một ghép cặp M bất kì trong G
Trang 23CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 17
Bước 2 Tìm đường mở của M :
(1) Nếu tìm được một đường mở của M thì ta xóa bỏ nhữngcạnh đã ghép trên đường mở đó, các cạnh còn lại trên đường
mở và các cạnh đã ghép của M không nằm trên đường mởtạo thành một ghép cặp có số phần tử lớn hơn số phần tửcủa ghép cặp M là 1
(2) Nếu không tìm được đường mở thì ghép cặp hiện tại làlớn nhất
Tính đúng đắn của thuật toán sẽ được đảm bảo bởi định lí 2.1
Trong thuật toán Đường mở đã trình bày ở trên, bước quan trọngnhất là bước tìm đường mở
Thuật toán "Tìm đường mở" trên đồ thị hai phần
Bước 2 Lấy một đỉnh v khỏi Queue và đẩy lại Queue những đỉnh kề
v chưa được thăm:
(1) Nếu thăm tới một đỉnh chưa ghép thuộc Y thì ta đã tìm
Trang 24CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 18
được một đường mở, quá trình tìm kiếm dừng lại ngay.Cải thiện ghép cặp và quay lại bước 1
(2) Nếu thăm tới một đỉnh j ∈ Y đã ghép, ta đánh dấuthăm j , thăm luôn cả đỉnh đã ghép kề với j (thăm liền
2 bước), tiếp tục quá trình duyệt
Bước 3 Truy vết tìm đường đi
c) Tính đúng đắn của thuật toán
Thuật toán kết thúc sau hữu hạn bước Do số đỉnh của đồ thị
là hữu hạn nên quá trình duyệt đồ thị sẽ kết thúc sau hữu hạn bước.Thuật toán "Tìm đường mở" tìm hết tất cả các đường mởđối với ghép cặp M trong G
Chứng minh bằng phản chứng, giả sử thuật toán kết thúc mà trong Gvẫn còn đường mở đối với ghép cặp M Đường mở này phải xuất phát
từ một đỉnh v0 chưa ghép thuộc X và kết thúc tại một đỉnh u0 chưaghép thuộc Y Do thuật toán BF S tìm đường mở đã kết thúc nên ta
đã duyệt tất cả các đỉnh có thể đến từ v ∈ Queue qua một đường điđơn Như vậy thuật toán BF S tìm đường mở đã duyệt qua đỉnh u0,
mà u0 chưa ghép, nên cần cải thiện ghép cặp (Bước 1) Điều này vô
lý với giả thiết thuật toán "Tìm đường mở" đã kết thúc
Ví dụ 2.2.2 Tìm đường mở đối với ghép cặp M = {(X1, Y1)} trong
đồ thị G ở Hình 2.2
Bước Hàng đợi Đỉnh v lấy
ra từ hàngđợi
Hàng đợisau khi lấy
v ra
Các đỉnh u
kề với v vàchưa lên lịch
Hàng đợisau khi đưa
u vào
Trang 25CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 19
Chúng ta tiếp tục sử dụng thuật toán tìm đường mở:
Bước Hàng đợi Đỉnh v lấy
ra từ hàngđợi
Hàng đợisau khi lấy
v ra
Các đỉnh u
kề với v vàchưa lên lịch
Hàng đợisau khi đưa
Trang 26CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 20
thị hai phần
Định lý 2.1 (Berge,1957) (10) Ghép cặp M của đồ thị G là ghép cặplớn nhất khi và chỉ khi trong G không tồn tại đường mở đối với M
Để chứng minh định lí trên ta sử dụng bổ đề:
Bổ đề 2.1 Cho đồ thị vô hướng G, M và M0 là 2 ghép cặp trong G.Khi đó hiệu đối xứng M4M0 có mỗi thành phần liên thông là mộtđường xen kẽ hoặc một chu trình có số cạnh chẵn
Đầu tiên, ta nhắc lại khái niệm hiệu đối xứng của hai tập hợp:Cho 2 tập hợp A và B Hiệu đối xứng của A và B, kí A4B là tậphợp xác định như sau:
A4B = (A\B) ∪ (B\A)
Chứng minh Bổ đề 2.1
Xét các ghép cặp M và M0, đặt F = M4M0 Vì M và M0 là các ghépcặp nên mỗi đỉnh của F có nhiều nhất một cạnh liên thuộc trong mỗighép cặp Vì vậy, trong F có nhiều nhất là hai cạnh qua mỗi đỉnh
Vì ∆(F ) ≤ 2 nên mỗi thành phần liên thông của F phải là mộthành trình hoặc một chu trình Hơn nữa, mỗi hành trình hoặc chutrình của F có sự xen kẽ giữa các cạnh của M \M0 và M0\M Vì vậy,mỗi chu trình đều có độ dài chẵn với số cạnh trong M và M0 là bằngnhau
Ví dụ 2.3.1 Trong đồ thị gồm các cạnh nét liền và nét đứt dưới đây,
Trang 27CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 21
M là một ghép cặp với 5 cạnh nét liền và M0 là ghép cặp với 6 cạnhnét đậm Hai ghép cặp có chung cạnh e, cạnh này không thuộc hiệuđối xứng của M và M0 Các cạnh của M4M0 tạo thành một chu trình
độ dài bằng 6 và một đường đi có độ dài bằng 3
e
Hình 2.3: M 4 M0
Chứng minh định lí 2.1
Ta chứng minh phản chứng cho mỗi chiều
⇒] Giả sử M là một ghép cặp lớn nhất trong đồ thị vô hướng G, P
là một đường mở đối với M Khi đó M4P là một ghép cặp có nhiềuhơn M 1 cạnh Vậy giả sử M là ghép cặp lớn nhất là sai
⇐] Giả sử ghép cặp M trong đồ thị G không có đường mở nào, nhưng
M không phải ghép cặp lớn nhất Trong G, tồn tại M0 là ghép cặplớn nhất Đặt F = M4M0 Theo Bổ đề 2.1, F gồm các đường đi vàchu trình có số chẵn cạnh Mỗi chu trình có số cạnh từ M và M0 bằngnhau Vì |M0| > |M | nên F phải có một thành phần với nhiều cạnhcủa M0 hơn của M Thành phần này chỉ có thể là một đường đi màkhởi đầu và kết thúc với một cạnh của M0, và đó là một đường mởđối với M trong G
Định lý 2.2 (P Hall,1935) (10) Cho G = (X ∪ Y, E) là đồ thị haiphần với |X| ≤ |Y | Khi đó đồ thị G có một ghép cặp có lực lượngbằng lực lượng của X khi và chỉ khi |N (S)| ≥ |S| với mọi tập S ⊆ X
Trang 28CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 22
Chứng minh
Giả sử G = (X ∪ Y, E) là đồ thị hai phần với |X| ≤ |Y |
⇒] Giả sử M là một ghép cặp có lực lượng bằng lực lượng của X, tức
là mỗi đỉnh v ∈ X đều là đỉnh đã ghép
Với mỗi tập con S ⊆ X, có ít nhất |S| đỉnh trong Y là láng giềng củacác đỉnh đã ghép trong S, vì mỗi đỉnh nối tới S phải được chọn từ tậphợp các đỉnh đó Ta dùng N (S) để kí hiệu tập hợp các đỉnh có lánggiềng trong S Vì vậy, |N (S)| ≥ |S| Rõ ràng |S| đỉnh nối tới S phảithuộc tập N (S)
⇐] Ta chứng minh bằng phản chứng
Nếu M là một ghép cặp cực đại trong G mà |M | < |X|, thì ta có đượcmột tập S ⊆ X mà |N (S)| < |S|
Bắt đầu từ đỉnh u ∈ X là đỉnh chưa ghép, xét tất cả các đường xen
kẽ xuất phát từ u Kí hiệu S là tập hợp các đỉnh chứa trong X củatất cả các đường xen kẽ trên, T là tập hợp các đỉnh chứa trong Y củatất cả các đường xen kẽ trên Chú ý rằng u ∈ S
Ta chỉ ra rằng M nối T với S\{u} Do M đã là ghép cặp lớn nhất nêntheo định lí Berge, trong G không tồn tại đường mở đối với M Vìvậy, đường xen kẽ từ u đến Y theo cạnh không có trong M và quaylại X theo cạnh ghép trong M Vì mỗi đỉnh của S\{u} được nối bởimột cạnh ghép trong M từ một đỉnh trong T nên số cạnh này của Mxác định một song ánh từ T vào S\{u} và |T | = |S\{u}|
Sự ghép cặp giữa T và S\{u} chỉ ra rằng T ⊆ N (S) Thực sự thì
T = N (S) Thật vậy, giả sử rằng tồn tại y ∈ Y \T có láng giềng
v ∈ S vy /∈ M , nếu ngược lại vy ∈ M thì v ∈ (S\{u}), mà số cạnh
Trang 29CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 23
|T | = |S\{u}| của M xác định một song ánh từ S\{u} vào T nên
y ∈ T Điều này trái với giả thiết y /∈ T , vì thế vy /∈ M Vậy tồn tạiđường mở từ đỉnh u chưa ghép tới y chưa ghép, trái với giả thiết M
Hệ quả 2.2 Cho G = (X ∪ Y, E) là đồ thị hai phần với |X| = |Y |
và cho d là một số tự nhiên Khi đó đồ thị G có ghép cặp có lực lượng
|X| − d khi và chỉ khi |S| − d ≤ |N (S)| với mọi tập S ⊆ X
Hệ quả 2.3 Cho G = (X ∪ Y, E) là đồ thị hai phần chính quy Khi
đó đồ thị G có ghép cặp hoàn hảo
Nhận xét 2.2 Định lí 2.2 cho ta cách chứng minh đồ thị hai phần
G = (X ∪ Y, E) không có ghép cặp nào bao phủ X bằng cách chỉ ramột tập con của X với rất ít láng giềng hơn |X|
Định nghĩa 2.4 (10) Cho đồ thị vô hướng G
Tập hợp Q ⊆ V (G) được gọi là bộ đỉnh phủ nếu mọi cạnh của đồ thịđều chứa ít nhất một đỉnh trong tập đỉnh phủ
Bộ đỉnh phủ tối tiểu là bộ đỉnh phủ mà không thể thêm đỉnh nào vào
Bộ đỉnh phủ cực tiểu là bộ đỉnh phủ có ít đỉnh nhất (trong các bộ đỉnhphủ)
Trang 30CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 24
Ví dụ 2.3.2 Trong đồ thị dưới đây, hình bên trái thể hiện một bộphủ đỉnh có kích thước bằng 2 và một ghép cặp có kích thước 2 đượcthể hiện bằng nét đậm Trong hình bên phải, bộ phủ đỉnh có kích thướcbằng 3 và một ghép cặp có kích thước 2 được thể hiện bằng nét đậm
Hình 2.4: Bộ đỉnh phủ và ghép cặp
Định lý 2.3 (Konig-Evervary,1931) (10)
Nếu G là đồ thị hai phần thì lực lượng của ghép cặp lớn nhất trong
G bằng lực lượng của bộ đỉnh phủ cực tiểu trong G
Chứng minh Xét đồ thị hai phần G = (X ∪ Y, E) Dễ thấy |Q| ≥ |M |với Q là một bộ đỉnh phủ và M là một ghép cặp trong G Xét bộ đỉnhphủ Q có kích thước nhỏ nhất trong G, ta xây dựng một ghép cặp cókích thước |Q| để chứng minh định lí trên
Phân chia Q thành các tập R = Q ∩ X và T = Q ∩ Y Gọi H và H0 lầnlượt là các đồ thị con của G cảm sinh trên R ∪ (Y \T ) và T ∪ (X\R)
∀S ⊆ R, ta xét tập NH(S), chứa trong Y \T Nếu |NH(S)| < |S| thì
ta có thể thay thế NH(S) cho tập S trong Q để tạo ra một bộ đỉnhphủ nhỏ hơn, vì NH(S) bao phủ toàn bộ các cạnh trong S mà chưađược phủ trong T Điều này trái với giả thiết Q là bộ đỉnh phủ nhỏnhất Như vậy ∀S ⊆ R, |S| ≤ |NH(S)| Đồ thị H thỏa mãn điều kiệncần của Định lí 2.2, do đó H có một ghép cặp lực lượng |R| Áp dụnglập luận tương tự với H0 ta có một ghép cặp lực lượng |T |
Trang 31CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 25
Vì H và H0 rời nhau nên hai ghép cặp của H và H0 tạo thành ghépcặp có kích thước |Q| trong G
Ví dụ
Bài toán phân công công việc
Trong một công ty có n công nhân x1, x2, , xn và n công việc
y1, y2, , yn Mỗi người công nhân có thể làm được một hoặc nhiềuhơn một việc Liệu có thể sắp xếp cho tất cả công nhân mỗi người làmmột công việc hay không?
Cách giải
Dựng một đồ thị hai phần G = (X, Y, E) với X = {x1, x2, , xn}biểu thị n người công nhân, Y = {y1, y2, , yn} biểu thị n công việc
và xi là kết hợp với yj nếu và chỉ nếu người công nhân xi làm đượccông việc yj Bài toán trở thành xác định có hay không một ghép cặphoàn hảo trong đồ thị G
Áp dụng thuật toán giải bài toán ghép cặp đã trình bày ở trên
Ví dụ 2.3.3 Có 8 người công nhân {A, B, C, D, E, F, G, H} và cáccông việc {a, b, c, d, e, f, g, h} Mỗi người công nhân là có thể làm đượccác công việc được cho trong đồ thị dưới đây Hãy tìm một ghép cặptối đại cho đồ thị hai phần này
Trang 32CHƯƠNG 2 BÀI TOÁN GHÉP CẶP TRÊN ĐỒ THỊ HAI PHẦN 26
A B C D E F G H
a b c d e f g h