Đề tài BÀI TOÁN GHÉP CẶP VÀ ỨNG DỤNG NHÓM 8 STT Họ tên Công việc (theo mục lục) Chữ ký Nhận xét của giáo viên 1 Lê Diêm Hùng Chương 1: Đại cương về đồ thị 2 Hồ Thị Mộng Điệp Chương 2: Bài toán ghép cặp 3 Đào Thị Anh Thư Chương 3: Ứng dụng 4 Nguyễn Thị Phương Anh Chương 3: Ứng dụng và báo cáo MỤC LỤC Chương 1. ĐẠI CƯƠNG VỀ ĐỒ THỊ 1.1 Các khái niệm cơ bản 3 1.2 Các loại đồ thị 5 1.3 Bậc, nửa bậc vào, nửa bậc ra 5 1.4 Đường đi, chu trình, tính liên thông 8 Chương 2. BÀI TOÁN GHÉP CẶP 2.1 Mạng 10 2.2 Bài toán ghép cặp 11 2.2.1 Phát biểu bài toán 11 2.2.2 Một số định nghĩa 12 2.2.3 Thuật toán giải bài toán ghép cặp 16 2.2.4 Bài toán ghép cặp tối ưu 23 Chương 3. ỨNG DỤNG CỦA BÀI TOÁN GHÉP CẶP 3.1 Bài toán phân công công việc 27 3.1.1 Phát biểu bài toán 27 3.1.2 Cách giải 27 3.2 Bài toán xếp thời khóa biểu ở trường học 30 3.2.1 Phát biểu bài toán 30 3.2.2 Cách giải 30 3.3 Bài toán dịch vụ hôn nhân 31 3.3.1 Phát biểu bài toán 31 3.3.2 Cách giải 31 KẾT LUẬN 33 DANH MỤC TÀI LIỆU THAM KHẢO 34 CHƯƠNG 1 ĐẠI CƯƠNG VỀ ĐỒ THỊ 1.1 CÁC KHÁI NIỆM CƠ BẢN 1.1.1 Đồ thị, đỉnh, cạnh, cung Định nghĩa 1.1. Đồ thị vô hướng G = (V, E) gồm tập V các đỉnh và tập E các cạnh. Mỗi cạnh được liên kết với một cặp đỉnh v, w (không kể thứ tự). Nếu cạnh e liên kết v, w thì ta nói cạnh e liên thuộc đỉnh v, w và các đỉnh v, w liên thuộc cạnh e. Ví dụ 1.1 Hình 1.1 là đồ thị vô hướng có tập đỉnh và tập cạnh E = {(1, 4), (3, 4), (3, 3), (3, 5), (4, 5), (5, 6)} Định nghĩa 1.2. Đồ thị có hướng G = (V, E) gồm tập V các đỉnh và tập E các cạnh có hướng gọi là cung. Mỗi cung được liên kết với một cặp đỉnh (v, w) có thứ tự.
Trang 1Đề tài BÀI TOÁN GHÉP CẶP VÀ ỨNG DỤNG
NHÓM 8
(theo mục lục) Chữ ký
Nhận xét của giáo viên
1 Lê Diêm Hùng Chương 1: Đại cương về
đồ thị
2 Hồ Thị Mộng Điệp Chương 2: Bài toán
ghép cặp
3 Đào Thị Anh Thư Chương 3: Ứng dụng
4 Nguyễn Thị Phương Anh Chương 3: Ứng dụng và
báo cáo
Trang 2MỤC LỤC
Chương 1 ĐẠI CƯƠNG VỀ ĐỒ THỊ
1.1 Các khái niệm cơ bản 3
1.2 Các loại đồ thị 5 1.3 Bậc, nửa bậc vào, nửa bậc ra 5
1.4 Đường đi, chu trình, tính liên thông 8
Chương 2 BÀI TOÁN GHÉP CẶP
2.1 Mạng 10
2.2 Bài toán ghép cặp 11
2.2.1 Phát biểu bài toán 11
2.2.2 Một số định nghĩa 12 2.2.3 Thuật toán giải bài toán ghép cặp 16
2.2.4 Bài toán ghép cặp tối ưu 23
Chương 3 ỨNG DỤNG CỦA BÀI TOÁN GHÉP CẶP
3.1 Bài toán phân công công việc 27
3.1.1 Phát biểu bài toán 27
3.1.2 Cách giải 27
3.2 Bài toán xếp thời khóa biểu ở trường học 30
3.2.1 Phát biểu bài toán 30
3.2.2 Cách giải 30
3.3 Bài toán dịch vụ hôn nhân 31
3.3.1 Phát biểu bài toán 31
3.3.2 Cách giải 31
KẾT LUẬN 33
DANH MỤC TÀI LIỆU THAM KHẢO 34
Trang 3
CHƯƠNG 1 ĐẠI CƯƠNG VỀ ĐỒ THỊ
1.1 CÁC KHÁI NIỆM CƠ BẢN
1.1.1 Đồ thị, đỉnh, cạnh, cung
Định nghĩa 1.1 Đồ thị vô hướng G = (V, E) gồm tập V các đỉnh và tập
E các cạnh Mỗi cạnh e E được liên kết với một cặp đỉnh v, w (không kểthứ tự)
Nếu cạnh e liên kết v, w thì ta nói cạnh e liên thuộc đỉnh v, w và cácđỉnh v, w liên thuộc cạnh e
4
5
6
Hình 1.1
Trang 4Ví dụ 1.2
Hình 1.2Hình 1.2 là một đồ thị có hướng với tập đỉnh V = {1, 2, 3, 4, 5, 6} vàtập cung E = {(1, 2), (2,3), (2, 4), (3, 4), (4, 5), (3, 5), (5, 6)}
Định nghĩa 1.3 Nếu thay mỗi cung của đồ thị có hướng G bằng một
cạnh, thì đồ thị vô hướng nhận được là đồ thị lót của G
Ví dụ 1.3
Đồ thị lót của đồ thị có hướng ở hình 1.2 là
Hình 1.3
1.1.2 Các khái niệm cơ bản khác
Hai cạnh kề nhau là hai cạnh cùng liên thuộc một đỉnh
Hai đỉnh kề nhau là hai đỉnh cùng liên thuộc một cạnh
Hai cạnh gọi là song song nếu chúng liên kết với cùng một cặp đỉnh
Khuyên là cạnh có hai đỉnh liên kết trùng nhau
Đỉnh cô lập là đỉnh không liên kết với bất kỳ đỉnh nào khác
Đỉnh treo là đỉnh chỉ liên kết với một đỉnh duy nhất
Trang 5 Số đỉnh của đồ thị gọi là bậc của đồ thị, ký hiệu d(G).
Số cạnh của đồ thị gọi là cỡ của đồ thị, ký hiệu card(G)
Hình 1.4
Trang 6 Bậc: Cho đồ thị G = (V, E) Bậc của đỉnh v V là tổng số cạnhliên thuộc với nó và ký hiệu là d(v).
Nếu đỉnh có khuyên thì khuyên được tính là 2 khi tính bậc, như vậy:
d(v) = số cạnh liên thuộc đỉnh v + 2* số khuyên
Như vậy đỉnh cô lập trong đồ thị đơn là đỉnh có bậc bằng 0 Đỉnh treo
là đỉnh có bậc bằng 1
Bậc lớn nhất của các đỉnh trong đồ thị G ký kiệu là ( )G và bậc nhỏnhất của các đỉnh trong G ký hiệu là ( )G
Nửa bậc: Cho đồ thị có hướng G = (V,E), v V
Nửa bậc ra của đỉnh v, kí hiệu d0(v) là số cung đi ra từ đỉnh v (v là đỉnhđầu)
Nửa bậc vào của đỉnh v, kí hiệu dI(v) là số cung đi tới đỉnh v (v là đỉnhcuối)
1.3.2 Các định lý về bậc
Định lý 1.5 Cho đơn đồ thị G có số đỉnh lớn hơn 1 Khi đó G có ít nhất
hai đỉnh có cùng bậc
Chứng minh
Xét đồ thị G có n đỉnh Trong G không thể có đồng thời một đỉnh bậc 0
và một đỉnh bậc n Thật vậy, nếu G có một đỉnh bậc 0 thì không có cạnh nàonối đỉnh này với n-1 đỉnh còn lại trong G, do đó n-1 đỉnh còn lại của G có bậc
là một trong n-2 số 1,2,3,…,n-2 Nếu G không có đỉnh bậc 0 thì n đỉnh có bậc
là một trong n-1 số 1,2,3,…,n-1 Theo nguyên lý Dirichlet trong cả hai trườnghợp G có ít nhất hai đỉnh có cùng bậc
Định lý 1.6 Cho đồ thị G = (V,E) Khi đó tổng bậc các đỉnh của đồ thị
Trang 7Mỗi cạnh e( , )u v E tham gia tính 1 bậc ở đỉnh u và 1 bậc ở đỉnh v.
Trang 8Số cạnh trên dãy gọi là độ dài của dãy Dãy từ đỉnh v đến đỉnh
w có độ dài n được biểu diễn như sau:
v e v e v, , , , , ,1 1 2 2 v n 1, ,we n
trong đó ,v i i 1,n 1 là các đỉnh trên dãy và ,e i i 1,n là các cạnh trên dãyliên thuộc đỉnh kề trước và kề sau nó Các đỉnh và cạnh trên dãy có thể lặp lại
Định nghĩa 1.16 Đường đi từ đỉnh v đến đỉnh w là dãy từ đỉnh v đến
đỉnh w trong đó các cạnh không lặp lại
Định nghĩa 1.17 Đường đi sơ cấp là đường đi không qua một đỉnh quá
một lần
Định nghĩa 1.18 Vòng là dãy có đỉnh đầu và đỉnh cuối trùng nhau Định nghĩa 1.19 Chu trình là đường đi có đỉnh đầu và đỉnh cuối trùng
nhau
Trang 9Định nghĩa 1.20 Chu trình sơ cấp là chu trình không đi qua một đỉnh
quá một lần
Định nghĩa 1.21 Đồ thị vô hướng được gọi là liên thông nếu mọi cặp
đỉnh của nó đều có đường đi nối chúng với nhau
Định lý 1.9 Mọi chu trình đồ thị phẳng có độ dài chẵn khi và chỉ khi
mọi mặt của đồ thị có bậc chẵn
Định lý 1.10 (Công thức Euler) Cho G là đồ thị liên thông phẳng có e
cạnh, v đỉnh và f mặt Khi đó ta có công thức: f=e-v+2
Định lý 1.11 Cho G là đơn đồ thị liên thông phẳng có e cạnh, v đỉnh và
đai g, không có đỉnh treo Khi đó ta có ( 2)
v ), không có đỉnh treo Khi đó ta có: e3v 6
Hệ quả 1.4 Cho G là đơn đồ thị phẳng liên thông với e cạnh và v đỉnh (
3
v ), không có đỉnh treo và không có chu trình độ dài 3 Khi đó ta có:
2 4
e v
Trang 10CHƯƠNG 2 BÀI TOÁN GHÉP CẶP
2.1 MẠNG
Mạng
Mạng là đơn đồ thị có hướng G = (V, E, c) thỏa mãn
(i) Có duy nhất 1 đỉnh, gọi là nguồn, không liên thuộc cung vào
(ii) Có duy nhất 1 đỉnh, gọi là đích, không liên thuộc cung ra
(iii) Trọng số cij của cung (i, j) là các số không âm và gọi là khả năngthông qua của cung
(iv) Đồ thị liên thông yếu
Ví dụ 2.1 Đồ thị sau là mạng với nguồn là đỉnh a và đích là đỉnh z
Ta có khả năng thông qua cab = 3, cbc = 2, cad = 5, cdc = 2, cde = 2, ccz = 4,
cez = 4
Luồng Cho mạng G với khả năng thông qua cij, ( i, j) G Tập các giátrị
{ fij│( i, j) G }gọi là luồng trên mạng G nếu thỏa mãn
(i) 0 ≤ fij ≤ cij (i, j) G
(ii) (i,k)G f ik = (k,j)G f kj k V \ { a; z}
Giá trị luồng Cho luồng f trên mạng G Giá trị của luồng f là đại lượng
Trang 11v(f) = (a ),iG f ai = (i,z)G f iz
2.2 BÀI TOÁN GHÉP CẶP
2.2.1 Phát biểu bài toán
Ta xét bài toán sau Cho tập X và Y Mỗi phần tử của X có thể ghépvới một số phần tử của Y Vấn đề đặt ra là tìm cách ghép mỗi phần tử của Xvới một số phần tử của Y sao cho số cặp ghép là lớn nhất
Ví dụ 2.3 Có 4 người A, B, C, D xếp làm các công việc 1, 2, 3, 4, 5.
Giả sử: A có thể làm công việc 2, 5
V1 = {A, B, C, D} V2 = { 1, 2, 3, 4, 5} và
E = { (A,2),(A,5),(B,2),(B,5),(C,1),(C,3),(C,4),(C,5),(D,2),(D,5) }
Hình 2.11
Trang 12Việc bố trí cho mỗi người một công việc phù hợp quy về tìm 4 cungđôi một không kề nhau của đồ thị.
Trước hết chúng ta định nghĩa bài toán tổng quát
2.2.2 Một số định nghĩa
Cho đồ thị G Một bộ ghép (matching) của đồ thị G là một tập hợp các
cạnh (cung) của G, đôi một không kề nhau
Bài toán ghép cặp (Matching problem) của G là tìm bộ ghép có số cạnh
(cung) lớn nhất của G
Bộ ghép cực đại là bộ ghép có số cạnh (cung) lớn nhất Lực lượng của
bộ ghép cực đại kí hiệu là α1(G)
Cho G = (X,Y,E) là đơn đồ thị lưỡng phân
Bộ ghép đầy đủ từ X vào Y là bộ ghép cực đại có lực lượng bằng lực
lượng của X
Bộ ghép hoàn hảo là bộ ghép đầy đủ từ X vào Y và từ Y vào X (suy ra
card(X) = card(Y))
Đưa bài toán ghép cặp về mạng chuẩn
Xét đơn đồ thị lưỡng phân G = (X, Y, E)
Ta sẽ đưa bài toán ghép cặp cuả đồ thị G về bài toán luồng cực đại nhưsau
Từ đồ thị G ta xây dựng mạng G’ gồm tập các đỉnh
V’ = {s} X Y {t }
Tập các cung E’ = {(s,x)│x X } E {(y,t)│yY}
và khả năng thông qua
Csx = 1 x X
Cyt = 1 y Y
Cxy = + x X, y Y, (x,y) E
2.2.3 Các định lý
Trang 13Định lý 2.5 Xét bài toán ghép cặp của G = (X, Y, E) và bài toán luồng cực
đại trên mạng G’ Khi đó
(i) Mọi luồng f = {fxy} của G’ sinh bởi thuật toán tìm luồng cực đạixác định một bộ ghép của G
(ii) Mọi luồng cực đại f = {fxy} của G’ sinh bởi thuật toán tìm luồngcực đại xác định một bộ ghép cực đại của G
(iii) Mọi luồng cực đại f = {fxy} của G’ sinh bởi thuật toán tìm luồngcực đại có giá trị │X│xác định một bộ ghép đầy đủ của G
Trang 14Sử dụng thuật toán tìm luồng cực đại ta dễ dàng tìm được luồng cực đại
có giá trị cực đại bằng 3 cho ở hình 2.13
Trang 15E(P) = {(x,y) E’│x P & y P } = E1 E2E3
Các tập E1, E2 và E3 rời nhau từng đôi một nên
│E(P)│=│E1+│E2+│E3│≥│X│-│PX│+R(PX)-│PY│+│PY│≥ │X│
Từ đó suy ra lát cắt cực tiểu có khả năng thông qua là│X│ Theo định
lý luồng cực đại lát cắt cực tiểu, luồng cực đại có giá trị │X│ Vậy bộ ghéptương ứng là đầy đủ
Định lý 2.7 (Định lí kết hôn Konig) Nếu đồ thị lưỡng phân đơn G=(X, Y, E)
là k- bậc (các đỉnh đều có bậc là k>0), thì tồn tại bộ ghép hoàn hảo
Chứng minh:
Cho A X bất kì và f(A) là tập các đỉnh trong Y kề với đỉnh trong A
Ký hiệu E1 là tập các cạnh liên thuộc các đỉnh trong A và E2 là tập các cạnhliên thuộc các đỉnh trong f(A) Khi đó card(E1) ≤ card(E2) Mặt khác ta cócard(E1) = k card(A) và card(E2) = k card(f(A)) Suy ra card(A) ≤ card(f(A)).Như vậy, theo định lý kết hôn Hall, tồn tại bộ ghép đầy đủ từ X vào Y
Trong đồ thị lưỡng phân G=(X,Y,E), mỗi cạnh sẽ tham gia tính 1 bậc
Trang 16bằng tổng bậc các đỉnh trong Y ( và bằng số cạnh) Vì các đỉnh trong G đều
có bậc k > 0, nên X và Y có số đỉnh bằng nhau Suy ra tồn tại bộ ghép hoànhảo của G
2.2.3 Thuật toán giải bài toán ghép cặp
Một đường mở (augmeting path) của M là 1 đường pha của M kết thúcbằng 1 đỉnh Y- đỉnh chưa ghép
Từ 1 đỉnh u thuộc X chưa ghép, ta có thể xây dựng 1 cây pha(alternating tree) gốc u gồm tất cả các đường pha bắt đầu từ u (các đường phanày không có đỉnh chung nào khác ngoài u)
Một cây pha có chứa ít nhất 1 đường mở gọi là cây mở (augmetingtree), nếu không ta gọi nó là 1 cây đóng (Hungarian tree), gốc u của cây đóngnày gọi là đỉnh đóng (Hungarian acorn)
Ý tưởng của giải thuật : Chúng ta bắt đầu với 1 bộ ghép M bất kì Nếu M
chứa mọi đỉnh trong X thì nó là 1 bộ ghép cực đại Nếu không, ta chọn 1 đỉnh
u chưa ghép thuộc X và tìm kiếm 1 cách hệ thống cho 1 đường mở M với gốcu
Để tìm bộ ghép tối đại của một đồ thị lưỡng phân G, ta dùng giải thuậtđường mở sau:
Giải thuật đường mở (Augmenting path/ Hungarian Algorithm)
Trang 17Xây dựng bộ ghép M như sau:
Bước 1: Mọi đỉnh thuộc X là chưa kiểm tra Đặt M = Ø
Bước 2: Nếu mọi đỉnh thuộc X chứa ghép đều đã kiểm tra thì dừng Bộghép nhận được là cực đại
Bước 3: Nếu không, chọn một đỉnh u thuộc X chưa ghép và chưa kiểmtra để xây dựng 1 cây pha gốc u
Bước 4: Nếu cây pha này là cây mở thì qua bước 5, nếu không, đánhdấu u là đã kiểm tra rồi quay về bước 2
Bước 5: Thực hiện thủ tục mở rộng M bằng cây mở như sau:
Trên đường mở, loại bỏ các cạnh trong M và thêm vào các cạnh ngoài
M để nhận được bộ ghép mới
Đánh dấu mọi đỉnh thuộc X là chưa kiểm tra
Quay về bước 2
Trang 18Sơ đồ khối của giải thuật này là
END
Xây dựng cây pha gốc u
Mở rộng M Đánh dấu tất cả các đỉnh X là “chưa kiểm
tra”
Đánh dấu u “đã kiểm tra”
Mọi đỉnh chưa kiểm tra M Ø
Các đỉnh thuộc tập X chưa ghép cặp, đã kiểm
Trang 19Định lí: Bộ ghép nhận được khi áp dụng giải thuật đường mở vào đồ thị
lưỡng phân G là cực đại
Trang 20Ma trận liên kết của G là:
a b c d e f g h
H G F E D C B A
1
1 1
1 1
1 1
1 1
1
1 1
1 1
1 1
1 1
1
1 1
1 1
Trang 23Cuối cùng, xét đỉnh H, cây gốc pha H là:
Không mất tính tổng quát, ta giả thiết G = Kn,n ( nếu cần, có thể thêm cácđỉnh giả và cạnh giả với trọng số +) với X=Y={1,2,…,n } Ký hiệu A=
aij là ma trận trọng số, trong đó aij là trọng số cạnh (i,j) Như vậy lời giảicủa bài toán ghép cặp tối ưu là tìm n phần tử của ma trận A thỏa
(i) không có hai phần tử nằm trên một hàng hoặc một cột
Trang 24Như vậy ghép cặp tối ưu của ma trận A cũng là ghép cặp tối ưu của ma trậnA’ và ngược lại.
Từ phân tích trên ta suy ra phương pháp tìm ghép cặp tối ưu như sau:
Với mỗi hàng của A ta trừ đi phần tử nhỏ nhất sao cho mỗi hàng có ít nhất một phần tử bằng 0.
Sau đó với mỗi cột của A ta trừ đi phần tử nhỏ nhất sao cho mỗi cột có ít nhất một phần tử bằng 0.
3 6
2 5
2 6
5 3
3 6
4 2
4 5
Trừ hàng 1 cho 2, hàng 2 cho 3, hàng 3 cho 2 và hàng 4 cho 2 ta nhận được
1 4
3 3
0 4
2 0
0 3
2 0
2 3
Tiếp tục trừ cột 1 cho 3 ta nhận được ma trận hiệu chỉnh A’
1 1
0 3
0 1
2 0
0 0
2 0
2 0
Ma trận đơn vị hoán vị ghép cặp với A’ là
0 0
1 0
0 0
0 0
1 0
0 0
0 1
Như vậy, ứng với các phần tử khác 0 của P ta có bộ ghép cực đại tối ưu
M ={(1,1),(2,2),(3,4),(4,3) }Với tổng trọng số
W(M) = 5 + 3 + 2 + 2 = 12
Thủ tục xác định ma trận đơn vị hoán vị ghép cặp
Nếu ma trận hiệu chỉnh A’ có ma trận đơn vị ghép cặp P, thì ta có thể tìm
ma trận P bằng thủ tục sau:
Trang 25Chọn hàng hoặc cột có số phần tử 0 là ít nhất Chọn phần tử 0 bất kì trên hàng hoặc cột được chọn và gạch loại hàng và cột chứa phần tử 0 đó khỏi ma trận.
Tiếp tục quá trình trên cho đến khi xác định được n phần tử 0 Các phần
tử 0 này sẽ ứng với các phần tử ≠ 0 của P.
Ví dụ 2.8 Ma trận trọng số A có ma trận hiệu chỉnh A’ như sau
5 6
7
1 4
3 2
5
1 1
4 3
1
5 4
2 2
6
4 2
3 1
2 3
4
0 3
2 1
4
0 0
3 2
0
3 2
0 0
4
3 1
2 0
3
Áp dụng thủ tục trên ta lần lượt chọn được các phần tử 0 trên các ô (1,2),
(2,3), (4,5), (3,1), (5,4) Từ đó ta có bộ ghép cực đại tối ưu
M = {(1,2),(2,3),(4,5),(3,1),(5,4) } Với tổng trọng số
W(M) = 1 + 2 + 1 + 1 + 3 = 8
Phương pháp Hungary
Thủ tục trên không phải khi nào cũng cho kết quả Chẳng hạn trongtrường hợp phần tử 0 duy nhất của hai hàng nằm trên 1 cột Trong trường hợpnhư vậy ta phải phân bố lại các phần tử 0 của ma trận hiệu chỉnh để có thểghép cặp với ma trận đơn vị hoán vị.Theo định lý Konig- Egervary, số phần
tử 0 cực đại, trong đó không có hai phần tử trên cùng hàng hoặc cùng cộtbằng số cực tiểu hàng và cột phủ tất cả phần tử 0
Giả thiết số cực tiểu hàng và cột phủ tất cả phần tử 0 là k < n Ta tìm
phần tử nhỏ nhất t trong các phần tử không bị phủ Sau đó ta trừ các phần tử
trên các hàng không phủ đi một lượng t Điều này sẽ làm xuất hiện các phần
tử âm (-t) trên các cột phủ Để khử các phần tử âm này, ta cộng các phần tử
Trang 26phần tử 0 được phân phối lại Tiếp tục quá trình này cho đến khi ta nhận được
n hàng và cột phủ
Trang 27CHƯƠNG 3
ỨNG DỤNG CỦA BÀI TOÁN GHÉP CẶP
3.1 BÀI TOÁN PHÂN CÔNG CÔNG VIỆC
3.1.1 Phát biểu bài toán
Trong 1 công ty, có n người công nhân x1, x2, …, xn và n công việc y1,
y2,…,yn Mỗi người công nhân là có thể làm được 1 hoặc nhiều hơn một việc.Tìm điều kiện để tất cả công nhân đều có việc phù hợp
3.1.2 Cách giải
Dựng 1 đồ thị lưỡng phân G = (X, Y, E) với X = {x1,x2, …, xn} biểuthị 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ợpvới yj nếu và chỉ nếu người công nhân xi là làm được công việc yj Bài toántrở thành xác định có hay không một bộ ghép hoà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 trong chương 2
Ví dụ 3.1 Có 8 người công nhân {A, B, C, D, E, F, G, H} và các công
việc {a, b, c, d, e, f, g, h} Mỗi người công nhân là có thể làm được các côngviệc được cho trong đồ thị dưới đây Hãy tìm một bộ ghép tối đại cho đồ thịlưỡng phân này
Hình 3.1
Trang 281 1
1 1
1 1
1 1
1 1
1
1 1
1 1
Trang 29Đây là cây đóng vì không chứa đường mở nào cả Bộ ghép sau cùng là
bộ ghép tối đại của G
Trang 303.2 BÀI TOÁN XẾP THỜI KHÓA BIỂU Ở TRƯỜNG HỌC
3.2.1 Phát biểu bài toán
Cho danh sách một số giáo viên và danh sách các lớp học được dạy bởicác giáo viên này Giả sử rằng có đủ phòng học để cho các giáo viên thựchiện các tiết giảng của mình tại các lớp nhưng tại một thời điểm thì một giáoviên chỉ có thể dạy tại một lớp và cùng một lúc tại một lớp không thể có nhiềuhơn một giáo viên dạy Hãy bố trí cho các giáo viên thực hiện các tiết giảngcủa mình tại các lớp, sao cho số lượng giáo viên tham gia là nhiều nhất
3.2.2 Cách giải
Xây dựng đồ thị lưỡng phân G=(X, Y, E) Với X là tập các giáo viên, Y
là tập các lớp học Một đỉnh x trong tập X được nối với một đỉnh y trong tập
Y nếu và chỉ nếu giáo viên x có tiết giảng ở lớp y
Vậy việc bố trí cho các giáo viên thực hiện các tiết giảng của mình tạicác lớp, sao cho số lượng giáo viên tham gia là nhiều nhất, trở thành xác địnhmột bộ ghép cực đại của đồ thị G
Ví dụ 3.2 Chẳng hạn bảng sau cho biết danh sách các giáo viên
a b c d e f g tham gia giảng dạy tại một số lớp , , , , , , 1,2,3,4,5,6 Hãy bố trí
cho các giáo viên thực hiện các tiết giảng của mình tại các lớp, sao cho sốlượng giáo viên tham gia là nhiều nhất
( Như bảng dưới thì giáo viên a sẽ không dạy tại các lớp 3,5,6)