Trong lý thuyết đồ thị, bài toán cặp ghép là một trong những vấn đề đáng đượcquan tâm bởi khả năng ứng dụng vào thực tiễn của nó, điển hình là Alvin Elliot Rothngười đã đưa thuật toán DA
Trang 1ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC SƯ PHẠM
NGUYỄN DƯƠNG TIỄN
BÀI TOÁN CẶP GHÉP TRONG LÝ THUYẾT
ĐỒ THỊ
Chuyên ngành: HÌNH HỌC VÀ TÔPÔ
Mã số: 60460105
LUẬN VĂN THẠC SĨ TOÁN HỌC
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS TS ĐOÀN THẾ HIẾU
Thừa Thiên Huế, năm 2019
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu củariêng tôi, các số liệu và kết quả nghiên cứu ghi trongluận văn là trung thực, được các đồng tác giả cho phép
sử dụng và chưa từng được công bố trong bất kỳ mộtcông trình nào khác
NGUYỄN DƯƠNG TIỄN
Trang 3Mục lục
1 Một số kiến thức chuẩn bị 4
1.1 Bài toán bảy cây cầu ở K¨onigsberg 4
1.2 Đồ thị 5
1.3 Các phép toán trên đồ thị 6
1.4 Một số khái niệm trong đồ thị 9
1.5 Một số loại đồ thị 13
1.6 Cặp ghép 15
2 Các bài toán cặp ghép 18 2.1 Bài toán hôn nhân 19
2.2 Bài toán hôn nhân bền vững 23
2.3 Bài toán cặp ghép cực đại 25
Trang 4Mô hình đồ thị đã xuất hiện từ thế kỉ XVIII, mô hình này được đưa ra bởi LeonhardEuler để giải quyết bài toán bảy cây cầu ở K¨onigsberg, đây được xem là mô hình đồthị đầu tiên của lý thuyết đồ thị Mặc dù xuất hiện từ rất lâu nhưng lý thuyết đồ thị chỉthực sự được quan tâm vào khoảng thế kỉ XIX khi người ta nhận ra rằng lý thuyết đồthị có rất nhiều ứng dụng trong thực tiễn đòi hỏi nó phải được hình thức hóa đến mứccao Những năm gần đây cùng với sự phát triển kinh tế, xã hội và đặc biết là tin học,
lý thuyết đồ thị càng được quan tâm nhiều hơn
Trong lý thuyết đồ thị, bài toán cặp ghép là một trong những vấn đề đáng đượcquan tâm bởi khả năng ứng dụng vào thực tiễn của nó, điển hình là Alvin Elliot Rothngười đã đưa thuật toán DAA (Deferred Acceptance Algorithm) của Lloyd StowellShapley và David Gale vào giải quyết các vấn đề thực tiễn từ đó ông nhận được giảithưởng Nobel Kinh tế Hiểu đơn giản thì một cặp ghép là một tập gồm các cạnh của
đồ thị mà đôi một không có đỉnh chung Vấn đề đặt ra là tìm một cặp ghép mà số cạnh
là nhiều nhất có thể Với mong muốn hiểu rõ hơn về lý thuyết đồ thị, đặc biệt là bàitoán cặp ghép tôi chọn đề tài " Bài toán cặp ghép trong lý thuyết đồ thị" để tìm hiểu.Dựa trên sự tham khảo và tổng hợp từ các nguồn tài liệu, luận văn được viết với cấutrúc gồm hai chương:
Chương 1 trình bày một số định nghĩa và kết quả sẽ được sử dụng ở chương 2 Đó
là các định nghĩa, định lý và tính chất cơ bản của đồ thị
Chương 2 trình bày nội dung các bài toán cặp ghép, tìm hiểu về các thuật toán đểgiải quyết bài toán
Trang 5Luận văn được hoàn thành dưới sự hướng dẫn của thầy giáo PGS TS Đoàn ThếHiếu Tác giả chân thành cảm ơn thầy đã tận tình giúp đỡ, hướng dẫn trong quá trìnhlàm luận văn.
Tác giả cũng xin bày tỏ lòng biết ơn các thầy cô, các anh chị và các bạn cao họcviên cùng các cán bộ công nhân viên chức của Đại học Huế đã quan tâm giúp đỡ trongsuốt quá trình học tập và nghiên cứu
Tuy đã cố gắng hết sức, song chắc chắn vẫn còn những khuyết điểm, tác giả rấtmong được sự góp ý của quý thầy cô, bạn bè để luận văn được hoàn thiện hơn Xinchân thành cảm ơn
Huế, tháng 8 năm 2019
Nguyễn Dương Tiễn
Trang 6Chương 1
Một số kiến thức chuẩn bị
Trong chương này, chúng ta sẽ tìm hiểu một số kiến thức cơ bản về đồ thị, nhữngkiến thức sẽ được sử dụng trong các phần tiếp theo của luận văn Nội dung của phầnnày được trình bày lại trên cơ sở tham khảo từ các tài liệu [2] [3] [4] [5]
1.1 Bài toán bảy cây cầu ở K¨onigsberg.
Bài toán bảy cây cầu ở K¨onigsberg nảy sinh ở thành phố K¨onigsberg nằm trên sôngPregel, ở đó có hai hòn đảo nối với nhau và với đất liền bằng bảy cây cầu Bài toánđược đặt ra như sau: Từ một vị trí bất kì, tìm ra một đường đi mà phải đi qua bảy câycầu, mỗi cây cầu chỉ đi qua đúng một lần và quay lại điểm xuất phát Rất nhiều ngườithời đó đã cố gắng tìm ra một đường đi thỏa yêu cầu trên nhưng đều không có kết quả.Mãi đến năm 1736, Leonhard Euler đã chứng minh rằng bài toán này là không có lờigiải
Để chứng minh kết quả trên Euler đã biểu diễn lại bài toán bằng ngôn ngữ đồ thị
Cụ thể ông coi mỗi vùng đất là môt đỉnh, mỗi cây cầu là một cạnh nối các đỉnh đó, sốcạnh nối với đỉnh gọi là bậc của đỉnh đó, cấu trúc thu được gọi là một đồ thị
Hình 1.1: Mô hình đồ thị bài toán bảy câu cầu ở K¨onigsberg.
Trang 7Nhờ việc sử dụng bậc của đỉnh, Euler đã chứng minh được rằng tồn tại một đường
đi thỏa yêu cầu của bài toán khi và chỉ khi đồ thị không có đỉnh nào bậc lẻ Trong đồthị bảy cây cầu K¨onigsberg có bốn đỉnh có bậc lẻ, vì vậy việc tìm một đường đi thỏayêu cầu bài toán là điều không thể Lời giải của Euler được coi là định lý đầu tiên của
lý thuyết đồ thị
1.2 Đồ thị
Trong thực tế, do thói quen chúng ta thường vẽ lên giấy những điểm biểu diễn chomột địa điểm, một đơn vị hành chính, một cá thể, các nút giao thông và nối nhữngđiểm đó lại để thể hiện cho một mối liên hệ nào đó Mỗi sơ đồ như vậy là hình ảnhcủa một đồ thị
Định nghĩa 1.2.1 Đồ thị (Graph) là một tập hợp gồm các đỉnh và các cạnh nối các
đỉnh này
Kí hiệu G = (V, E), V là tập tất cả các đỉnh của đồ thị G và E là tập tất cả các cạnhcủa đồ thị G
Ta có thể xem mỗi cạnh của E ứng một cặp đỉnh của V Cạnh nối hai đỉnh vi, vj
có thể được viết dưới dạng vivj Một cạnh có dạng vivi được gọi là khuyên
Ví dụ 1.2.2 Xét đồ thị G = (V, E) được biểu diễn bẳng hình vẽ như sau:
Trang 81 Đồ thị G được gọi là đồ thị vô hướng nếu mỗi cạnh của tập E ứng với một cặp đỉnhkhông phân biệt thứ tự của tập V Các cạnh của đồ thị vô hướng được gọi là cạnh
vô hướng
2 Đồ thị G được gọi là đồ thị có hướng nếu mỗi cạnh của tập E ứng với một cặp đỉnh
có phân biệt thứ tự của tập V Các cạnh của đồ thị có hướng được gọi là cạnh cóhướng hoặc cung
3 Đồ thị G được gọi là đồ thị hỗn tạp nếu tập E nó chứa cả cạnh có hướng và cạnh
vô hướng
Ví dụ 1.2.4 Đồ thị có hướng và đồ thị vô hướng.
Hình 1.3: Đồ thị vô hướng G 1 và đồ thị có hướng G 2
Trang 9Hình 1.4: Đồ thị G và đồ thị con G , G của G
Định nghĩa 1.3.3 Cho đồ thị G có Y ⊆ V (G) và X ⊆ E(G).
1 Đồ thị H = G − X là đồ thị thu được bằng cách bỏ đi các đỉnh thuộc tập X của
đồ thị G
2 Đồ thị H = G \ Y là đồ thị thu được bằng cách bỏ đi các cạnh thuộc tập Y của đồthị G
3 Đồ thị con sinh bởi tập Y là đồ thị có tập các đỉnh là Y và tập các cạnh E0 = {e =
uv ∈ E(G)|u, v ∈ Y } Kí hiệu: G[Y ] = (Y, E0)
Định nghĩa 1.3.4 Cho hai đồ thi G1 = (V1, E1) và G2 = (V2, E2)
1 Đồ thị G = (V, E) trong đó V = V1∪ V2và E = E1 ∪ E2 được gọi là đồ thị hợpcủa hai đồ thị G1 và G2
G1và G2
Kí hiệu: G1 ∼= G
2
Trang 10Ví dụ 1.3.6 Các phép toán trên đồ thị.
Hình 1.5: Các phép toán trên đồ thị
Ví dụ 1.3.7 Xét hai đồ thị như sau.
Hình 1.6: Đồ thị G và G0đẳng cấu với nhau
Khi đó ánh xạ ϕ :
vi 7−→ vi0 (1 ≤ i ≤ 5)
Trang 11là một song ánh, hơn nữa ei ∈ E khi và chỉ khi e0
i ∈ E0 với mọi 1 ≤ i ≤ 5 Do đó
G ∼= G0
Hai đồ thị đẳng cấu với nhau thì chúng sẽ có tính chất giống nhau Chẳng hạn như:
Có cùng số đỉnh, cùng số cạnh, các cạnh tương ứng nối các đỉnh tương ứng
1.4 Một số khái niệm trong đồ thị
Định nghĩa 1.4.1 Cho đồ thị vô hướng G = (V, E).
1 Một cạnh e ∈ E nối hai đỉnh u, v của tập V thì ta nói hai đỉnh u, v là kề nhau vàcạnh e liên thuộc với hai đỉnh u, v
2 Bậc của một đỉnh v ∈ V là số cạnh liên thuộc với nó Kí hiệu: deg(v)
Ví dụ 1.4.2 Cho đồ thị vô hướng G = (V, E) được biểu diễn bởi hình vẽ sau.
Trong đồ thị G = (V, E): deg(v1) = 3, deg(v2) = 4, deg(v3) = 2, deg(v4) = 1,deg(v5) = 0
Đỉnh v5không liên thuộc với bất kì cạnh nào được gọi là đỉnh cô lập
Đỉnh v4chỉ liên thuộc với một cạnh gọi là đỉnh treo
Cạnh e1và e2cùng liên thuộc với v1 và v2được gọi là hai cạnh song song
Cạnh e5chỉ liên thuộc với một đỉnh gọi là cạnh khuyên
Định nghĩa 1.4.3 Cho đồ thị G = (V, E).
Bậc cực tiểu của đồ thị G là bậc nhỏ nhất của đỉnh v trong G Kí hiệu δ(G) :=min{dG(v)| v ∈ V }
Bậc cực đại của đồ thị G là bậc lớn nhất của đỉnh v trong G Kí hiệu ∆(G) :=max{dG(v)| v ∈ V }
Trang 12Nếu δ(G) = ∆(G) = k thì tất cả các đỉnh của G đều có bậc k.
Định nghĩa 1.4.4 Nếu đồ thị G có tất cả các đỉnh cùng bậc k thì đồ thị G được gọi
là đồ thị k-chính quy
Định lý sau đây là một tính chất cơ bản về bậc của đồ thị
Định lý 1.4.5 Cho đồ thị vô hướng G = (V, E) có m cạnh Khi đó ta có P
v∈V
deg(v) = 2m
Từ định lý trên ta có hệ quả sau
Hệ quả 1.4.6 Với đồ thị G bất kì, số đỉnh bậc lẻ của G là một số chẵn.
Chứng minh: Giả sử đồ thị G có m cạnh Gọi c là tổng các bậc của các đỉnh bậcchẵn, l là tổng các bậc của các đỉnh bậc lẻ Theo định lý 1.4.5 ta có c + l = 2m, mà c
là tổng của các số chẵn nên c chẵn, do đó l = 2m − c là số chẵn Mặt khác l là tổngcủa các số lẻ nên số đỉnh bậc lẻ phải là một số chẵn
Định nghĩa 1.4.7 Cho đồ thị có hướng G = (V, E).
1 Một cung e ∈ E nối hai đỉnh u, v của tập V thì ta nói hai đỉnh u, v là kề nhau.Cung e đi ra khỏi đỉnh u và đi vào đỉnh v Đỉnh u gọi là đỉnh đầu, đỉnh v gọi làđỉnh cuối của cung e
2 Bán bậc ra của một đỉnh v ∈ V là số cung của đồ thị đi ra khỏi nó, kí hiệu: deg+(v).Bán bậc vào của đỉnh v là số cung đi vào nó, kí hiệu: deg−(v)
Ví dụ 1.4.8 Cho đồ thị có hướng G = (V, E) được biểu diễn bởi hình vẽ sau.
Trang 13Trong đồ thị G = (V, E): deg+(v1) = 3, deg−(v1) = 0, deg+(v2) = 3, deg−(v2) =
3, deg+(v3) = 0, deg−(v3) = 2, deg+(v4) = 0, deg−(v4) = 1, deg+(v5) = 0,deg−(v5) = 0
Định nghĩa 1.4.9 Cho đồ thị G = (V, E) là đồ thị có hướng G được gọi là đồ thị
có hướng cân bằng (balanced directed graph) nếu deg+(v) = deg−(v) với mọi đỉnh
x0x1x2 xk, va P được gọi là đường đi từ x0đến xk
Hình 1.7: Một đường đi P = P 5 và một chu trình C 5 trong đồ thị G
Định nghĩa 1.4.11 Cho P = x0x1x2 xk−1 là một đường đi và k ≥ 3, một đồ thị C
= P + xk−1x0được gọi là một chu trình
Định nghĩa 1.4.12 Cho đồ thị G = (V, E).
1 Khoảng cách giữa hai điểm x,y ∈ V là đường đi trong G có độ dài ngắn nhất từđỉnh x đến đỉnh y
2 Đồ thị vô hướng G được gọi là liên thông nếu với hai đỉnh bất kì luôn tồn tại mộtđường đi giữa hai đỉnh đó
Trang 143 Đồ thị có hướng G được gọi là liên thông mạnh nếu với hai đỉnh bất kì luôn tồn tạimột đường đi có hướng nối hai đỉnh đó.
Định nghĩa 1.4.13 Cho đồ thị vô hướng G = (V, E) Đồ thị G0 = (V0, E0) là đồ thịcon của đồ thị G được gọi là thành phần liên thông của G, nếu G0 = G[V0] là liênthông và với mọi V00 ) V thì G[V00] là không liên thông
Như vậy một đồ thị G không liên thông thì nó là hợp của hai hay nhiều thành phầnliên thông
Hình 1.8: Đồ thị G gồm ba thành phần liên thông
Định nghĩa 1.4.14 Cho đồ thị G = (V, E).
1 Một đỉnh v ∈ V được gọi là đỉnh khớp nếu khi xóa đi đỉnh đó và các cạnh liênthuộc với nó thì đồ thị mới có nhiều thành phần liên thông hơn đồ thị G
2 Một cạnh e ∈ E được gọi là một cầu nếu khi xóa đi cạnh đó thì đồ thị mới có nhiềuthành phần liên thông hơn đồ thị G
Hình 1.9: Đồ thị G liên thông, đỉnh khớp và cạnh cầu.
Trang 151.5 Một số loại đồ thị
Định nghĩa 1.5.1 Cho đồ thị G = (V, E) Số đỉnh của đồ thị G được kí hiệu là |V |,
số cạnh của đồ thị G được kí hiệu là |E|
Đồ thị G được gọi là đồ thị hữu hạn nếu số đỉnh |V | và số cạnh |E| là hữu hạn, ngượclại đồ thị G được gọi là đồ thị vô hạn nếu số đỉnh |V | hoặc và số cạnh |E| là vô hạn
Định nghĩa 1.5.2 Một đồ thị G = (V, E) được gọi là đơn đồ thị nếu đồ thị không có
khuyên và cạnh song song Ngược lại ta có đa đồ thị
Định nghĩa 1.5.3 Một đồ thị G = (V, E) được gọi là đồ thị hai thành phần nếu tập
đỉnh V có thể chia làm hai tập con V1, V2 rời nhau sao cho bất kì một cạnh nào củatập E đều nối một đỉnh thuộc V1và một đỉnh thuộc V2
Kí hiệu: G = (V1∪ V2, E)
Như vậy nếu một đỉnh bất kì v ∈ V1 thì nó chỉ có thể kề với một đỉnh thuộc V2 vàngược lại
Hình 1.10: Đồ thị hai thần phần G = (V 1 ∪ V 2 , E).
V1 được gọi là tập các đỉnh trái V2được gọi là tập các đỉnh phải
Nếu |V1| = |V2| thì G được gọi là đồ thị hai thành phần cân bằng
Định lý 1.5.4 Nếu G = (V, E) là đồ thị hai thành phần thì G không chứa chu trình
lẻ nào.
Chứng minh: Giả sử đồ thị G có V = V1∪ V2, và G chứa một chu trình lẻ C =
v1e1v2e2v3 v2k+1e2k+1v1 Không mất tính tổng quát, giả sử e1 ∈ V1, vì G là đồ thịhai thành phần nên e2 ∈ V2, đỉnh v1 ∈ V1 nối với v2 ∈ V2 qua cạnh e1, đỉnh v2 ∈ V2nối với v1 ∈ V2 qua cạnh e2, tương tự v2k+1 ∈ V1 nối với v1 ∈ V2 qua cạnh e2k+1
Trang 16Điều này mâu thuẫn với giả thuyết v1 ∈ V1 Vậy đồ thị hai thành phần G = (V, E)không chứa chu trình lẻ nào.
Định lý 1.5.5 Cho G = (V1∪ V2, E) là đồ thị hai thành phần Mọi đồ thị con H của
G đều là đồ thị hai thành phần.
Chứng minh: Ta có H là đồ thị con của G nên V (H) ⊆ V và E(H) ⊆ E Đặt
V1(H) = V1 ∩ V (H) và V2(H) = V2 ∩ V (H), khi đó V (H) = V1(H) ∪ V2(H),mặt khác V1 ∩ V2 = ∅ nên V1(H) ∩ V2(H) = ∅ Với mọi cạnh e ∈ E(H) bất kì, vìE(H) ⊆ E nên e = v1v2 với v1 ∈ V1(H), v2 ∈ V2(H) Vậy H là đồ thị hai thànhphần
Định lý 1.5.6 Nếu G = (V1 ∪ V2, E) là đồ thị hai thành phần thì X
v∈V 1
deg(v) =X
v∈V2
deg(v) = 0 Ta bắt đầu thêm vào H các cạnh của G cho đến khi H chứa tất cảcác cạnh của G, lúc này đồ thị H chính là đồ thị G Cứ mỗi lần thêm một cạnh vào Hthì X
Định nghĩa 1.5.7 Đồ thị G = (V, E) được gọi là đồ thị đầy đủ nếu G là đơn đồ thị
vô hướng và tất cả các đỉnh của đồ thị G đôi một liền kề nhau
Kí hiệu Kn := {G| G là đồ thị đầy đủ n đỉnh}.
Đồ thị Kn thì sẽ có n đỉnh, Cn2 cạnh và bậc của tất cả các đỉnh đều là n − 1
Hình 1.11: Một số đồ thị đầy đủ.
Trang 171.6 Cặp ghép
Trong một đồ thị hai hay nhiều cạnh được gọi là độc lập với nhau nếu chúng đôimột không có đỉnh chung
Định nghĩa 1.6.1 Cho tập hợp M gồm các cạnh của đồ thị G, M được gọi là một
cặp ghép của G nếu các cạnh trong M độc lâp với nhau
Các đỉnh trong M gọi là các đỉnh đã ghép, các đỉnh mà không liên thuộc với bất kìcạnh nào trong M gọi là các đỉnh chưa ghép
Định nghĩa 1.6.2 Cho đồ thị hai thần phần G = (V1 ∪ V2, E) Một đường đi đơnbắt đầu từ một đỉnh chưa ghép của V1 đi theo một cạnh chưa ghép đến một đỉnh của
V2, rồi theo một cạnh đã ghép về lại một đỉnh của V1, rồi lại tiếp tục theo một cạnhchưa ghép sang một đỉnh của V2 cứ tiếp tục quá trình như vậy ta được một đườngpha (alternating path)
Định nghĩa 1.6.3 Cho đồ thị hai thần phần G = (V1 ∪ V2, E) Một đường pha bắtđầu từ một đỉnh chưa ghép của V1 và kết thúc bằng một đỉnh chưa ghép của V2 đượcgọi là một đường tăng (augmenting path)
Hình 1.12: Đồ thị hai thần phần G = (V 1 ∪ V 2 , E).
Trong đồ thị hai thần phần G = (V1 ∪ V2, E) ở hình trên Ta có M = {e2, e4, e6} làmột cặp ghép của G v1, v10, v4, v40 là các đỉnh chưa ghép e1, e3, e5 là các cạnh chưaghép
Đường đi P = v1v20v2v30v3v40 là một đường tăng
Trang 18Định nghĩa 1.6.4 Cho đồ thị hai thần phần G = (V1∪ V2, E).
1 Một cặp ghép M được gọi là cặp ghép cực đại nếu nó là cặp ghép có số cạnh lớnnhất trong G
2 Một cặp ghép M được gọi là cặp ghép đầy đủ từ V1 vào V2 nếu số phần tử của Mbằng số phần tử của V1
3 Một cặp ghép M được gọi là cặp ghép hoàn hảo nếu nó vừa là cặp ghép đầy đủ từ
V1 vào V2 vừa là cặp ghép đầy đủ từ V2 vào V1
Bổ đề 1.6.5 Cho M1 và M2 là hai cặp ghép của G Khi đó mỗi thành phần của đồ thị con bao trùm H với tập cạnh E(H) = (M1− M2) ∪ (M2− M1) là một trong các
loại sau:
1 Một đỉnh cô lập.
2 Một chu trình chẵn với các cạnh luân phiên giữa M1 và M2.
3 Một đường đi với các cạnh luân phiên giữa M1, M2 và đỉnh kết thúc là một đỉnh chưa ghép với chính xác một trong hai cặp ghép M1 và M2.
Định lý sau đây là một kết quả quan trọng, là cơ sở cho các thuật toán tìm cặp ghépđược trình bày trong chương sau
Xét cặp ghép M , ta tiến hành bỏ tất cả các cạnh của M nằm trong P Sau đó thêmcác cạnh chưa ghép của M trong P vào ta được một cặp ghép mới M1 = M ⊕ P Chú ý rằng k − 1 là số chẵn và để có M1 ta đã bỏ đi (k − 1)/2 cạnh từ M và thêmvào (k + 1)/2 cạnh Mà (k + 1)/2 − (k − 1)/2 = 1 Do đó cặp ghép mới M1có nhiều