Sau này, thuật toáncòn được biết đến với tên gọi thuật toán Gale-ShapleyThực tế các lĩnh vực trong cuộc sống có liên quan đến giao dịch có yêu cầu ghép cặp là rất nhiều như: ghép cặp giữ
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
TIỂU LUẬN MÔN HỌC
THIẾT KẾ &
ĐÁNH GIÁ THUẬT TOÁN
ĐỀ TÀI: THUẬT TOÁN CHẤP NHẬN TRÌ HOÃN ( DAA) VÀ
BÀI TOÁN HÔN NHÂN BỀN VỮNG
Giảng viên
Lê Trọng Vĩnh Sinh viên thực hiện
Nguyễn Văn Huy Trần Văn Đông Nguyễn Quang Khải
1
Trang 2MỤC LỤC
2
Trang 3I Lời mở đầu
Lý thuyết đồ thị là một lĩnh vực nghiên cứu đã có từ lâu và có nhiều ứng dụng hiện đại Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất từ những năm đầu của thế kỷ
18 bởi nhà toán học lỗi lạc người Thụy Sĩ Leonhard Euler Chính ông là người đã sử dụng đồ thị để giải bài toán nổi tiếng về các cái cầu ở thành phố Konigsberg Từ đó lý thuyết đồ thị ngày càng khẳng định được vị trí quan trọng trong việc áp dụng để giải quyết các bài toán thực tế nhờ vào việc tìm ra ngày càng nhiều các định lý, công thức và thuật toán Các bài toán, thuật toán trong lý thuyết đồ thị không những có nhiều ứng dụng trong thực tế mà nó còn giúp cho chúng ta mô tả một cách dễ dàng các bài toán phức tạp
cụ thể, để từ đó có thể mã hóa các bài toán đó vào máy tính
Thuật toán ghép cặp trong lý thuyết đồ thị là một ví dụ cụ thể: Thuật toán ghép cặp đạt được những thành công nhất định và được áp dụng tại nhiều nước châu Âu là thuật toán được nghiên cứu bởi hai nhà khoa học David Gale và Lloyd Shapley Thuật toán này đã được giới thiệu và đăng tải trên một tạp chí toán học vào năm 1962 Sau này, thuật toán còn được biết đến với tên gọi thuật toán Gale-Shapley
Thực tế các lĩnh vực trong cuộc sống có liên quan đến giao dịch có yêu cầu ghép cặp
là rất nhiều như: ghép cặp giữa các cặp đôi trong trung tâm môi giới hôn nhân, ghép cặp trong trường hợp hiến và ghép tạng; phân công công tác cho các sinh viên tốt nghiệp ngành y tới các bệnh viện, công tác tuyển sinh đại học…
Trong các lĩnh vực nêu trên, ở nước ta việc áp dụng thuật toán ghép cặp vào các lĩnh vực đó là chưa nhiều và chưa phổ biến mặc dù có rất nhiều lĩnh vực giao dịch có yêu cầu Tuyển sinh đại học cũng là một trong nhiều lĩnh vực có yêu cầu giao dịch ghép cặp, đặc biệt là trong khâu tuyển sinh Đại học
Vì vậy sau đây nhóm em xin trình bày về thuật toán Gale-Shapley hay được gọi là thuật toán chấp nhận trì hoãn (DAA) và bài toán hôn nhân bền vững Bên cạnh đó còn là một số bài toán ứng dụng liên quan như phân bổ học sinh, tuyển sinh đại học, …
3
Trang 4II Lời cảm ơn
Đầu tiên, nhóm chúng em xin gửi lời cảm ơn chân thành đến khoa Toán-Cơ-Tin, trường Đại học Khoa học Tự nhiên đã tạo điều kiện thuận lợi cho chúng em học tập và hoàn thành đề tài này.
Đặc biệt, chúng em xin chân thành cảm ơn thầy Lê Trọng Vĩnh, người đã giúp đỡ và hướng dẫn tận tình chúng em suốt thời gian học tập trong tình hình khó khăn của bệnh dịch vừa qua, bên cạnh đó cũng cung cấp cho chúng em những kiến thức để tiếp cận, phân tích, và giải quyết vấn đề Nhờ đó mà chúng
em hoàn thành được công việc của mình một cách tốt hơn Chúng em cũng xin cảm ơn những người bạn đã tận tình chỉ bảo, giúp đỡ trong quá trình hoàn thành học phần.
Chúng em đã vận dụng tối đa những kiến thức mà mình có được trong kì học vừa qua để hoàn thành đề tài của nhóm Nhưng do kiến thức vấn còn hạn chế và chưa có nhiều kinh nghiệm nên khó có thể tránh được những thiếu sót trong quá trình thực hiện đề tài Chúng em mong nhận được những góp ý, phê bình của thày để đề tài của nhóm chúng em được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn thầy !
4
Trang 5II.Giới thiệu bài toán
1 Bài toán hôn nhân bền vững là gì ?
Trong toán học và khoa học máy tính bài toán hôn nhân bền vững SMP ( ) yêu cầu tìm một cặp ghép bền vững giữa các phần tử của hai tập hợp theo thứ tự ưu tiên của mỗi phần tử Một cặp ghép là một ánh xạ từ các phần tử của tập hợp này tới các phần tử của tập hợp kia Một cặp ghép là bền vững nếu hai điều kiện sau không đồng thời xảy ra:
a Một phần tử của tập hợp thứ nhất thích phần tử của tập hợp thứ hai hơn phần tửA B được ghép với A, và
b B cũng thích hơn phần tử được ghép với A B
Nói cách khác, một tổ hợp ghép là bền vững nếu không tồn tại cặp (A, B) trong đó cả
A và B đều thích phần tử kia hơn phần tử được ghép với chúng
Bài toán hôn nhân bền vững thường được phát biểu như sau:
Có người đàn ông và phụ nữ, trong đó mỗi người xếp hạng tất các mọi người khácn n giới từ 1 đến theo thứ tự ưu tiên, cần tìm cách tổ chức hôn nhân sao cho không tồn tại hain người khác giới yêu nhau hơn vợ/chồng của họ Nếu không tồn tại những người như vậy thì tất cả các cuộc hôn nhân được xem là "bền vững."
2 Lịch sử bài toán
Hai người đầu tiên nghiên cứu về bài toán Hôn nhân bền vững (Stable Marriage Problem) là Lloyd Stowell Shapley (2/6/1923 – 12/3/2016) – nhà Toán học người Mỹ với nhiều cống hiến quan trọng trong lĩnh vực Lý thuyết trò chơi, giải Nobel Kinh tế 2012-
và David Gale (13/12/1921 – 7/3/2008) – nhà Toán học, Kinh tế học người Mỹ, giáo sư danh dự tại University of California, Berkeley Những năm 1960, Shapley và Gale quan sát thực tiễn và nhận thấy: rất nhiều hành vi của loài người liên quan đến việc ghép đôi, tạo mối quan hệ, ví dụ như đưa gặp gỡ kí kết hợp đồng giữa người mua và người bán hay tuyển sinh Họ bắt đầu nghiên cứu của mình từ trường hợp đơn giản nhất: ghép đôi 1 – 1
Từ trường hợp ghép đôi 1 – 1, họ tìm ra thuật toán DAA (Deferred Acceptance Algorithm-tạm dịch là “Thuật toán Chấp nhận trì hoãn”) và công bố vào năm 1962 Đến những năm 1980, Alvin Elliot Roth (18/12/1951) – nhà Kinh tế học người Mỹ, hiện đang giảng dạy tại Đại học Harvard – đã không ngừng nỗ lực tìm ra các giải pháp từ thuật toán này để giải quyết các vấn đề thực tiễn “Có công mài sắc, có ngày nên kim”, hơn 40 năm sau, Giải thưởng Nobel Kinh tế đã được trao cho Roth và Shapley cho những cống hiến về
“Lý thuyết phân phối ổn định và thực tiễn về tạo lập thị trường” (“the theory of stable allocations and the practice of market design”)
5
Trang 6III Tìm hiều bài toán
1 Cơ sở lý thuyết
a Một số khái niệm
Khái niệm 1: Một cách ghép cặp được gọi là không bền vững nếu có hai cặp vợ chồng
(Y ,X1 1) và (Y2,X2) sao cho Y thích X hơn X , đồng thời X cũng thích Y hơn Y1 2 1 2 1 2
Định nghĩa 2: Một cách ghép cặp bền vững được gọi tối ưu nếu mỗi chàng trai đều lấy
được người vợ ưng ý hơn so với bất kì một cách phân bố bền vững nào khác
b Một số bài toán
Bài toán 1: Có tồn tại hay không cách ghép cặp N cô gái với N chàng trai sao cho ai cũng
lấy được người mình có cảm tình Ở đây một người có thể có cảm tình với nhiều người khác giới
Lời giải:
Bài toán này được giải bởi nhà Toán học Philip Hall (11/4/1904 – 30/12/1982) vào năm 1935 Ông đã tìm ra điều kiện cần và đủ để tồn tại một cách ghép thỏa yêu cầu: Hall’s marriage theorem (sau đây ta tạm gọi là định lý Hall): Xét đồ thị lưỡng phân
G = (V,E) có phân hoạch Với bất kì tập , N(S) biểu thị tập các đỉnh (nhất thiết ở trong B) tiếp giáp với ít nhất một đỉnh trong S Khi đó, A có một kết hợp hoàn hảo
Bài toán 2: Hãy chỉ ra cách ghép cặp N cô gái với N chàng trai sao cho ai cũng lấy được người mình có cảm tình (nếu có)
Lời giải:
Gọi tập hợp các cô gái là S, tập hợp các lời chàng trai là S’ Các quan hệ, kí hiệu sử dụng như lời giải bài toán 1
Dựa vào cách chứng minh quy nạp của định lý Hall ở trên, ta có thuật toán:
Đầu tiên, ta xác định N cô gái và N chàng trai có thỏa điều kiện của định lý Hall bằng cách duyệt từng tập con của S Nếu không thỏa, hiển nhiên không tồn tại cách ghép, kết thúc Nếu thỏa, ta thực hiện bước hai
Xác định có tồn tại tập con X của S sao cho hay không Nếu tồn tại,
ta thực hiện thuật toán với các cặp tập hợp X và N(X), S\X và S’\N(X) Nếu không, ghép đôi một cô gái x bất kì với một chàng trai y bất kì mà cô ấy được nối Ta thực hiện thuật toán với S\{x} và S’\{y}
Nhược điểm của việc ghép đôi kiểu này là sự không ổn định nếu ta xét đến việc cô gái (chàng trai) có cảm tình với người này hơn người kia Giả sử tồn tại cặp a – b và cặp x
6
Trang 7– y mà a thích y hơn b và y thích a hơn x, khi đó có khả năng dẫn đến hiện tượng ngoại tình, cách ghép đôi không còn hiệu quả Ta xét đến thứ tự cảm tình của các cô gái và chàng trai
Bài toán 3 (Stable Marriage Theorem): Một cách ghép cặp bền vững luôn luôn tồn tại, với mọi đồ thị lưỡng phân và mọi bộ sắp thứ tự ưa thích
Lời giải:
Ở đây ta xét trường hợp |A| = |B| = N, trường hợp tổng quát tương tự: Luôn tồn tại một cách ghép đôi ổn định cho mọi N cô gái và N chàng trai với N là số tự nhiên bất kì
Bài toán 4:Hãy chỉ ra cách ghép đôi N cô gái với N chàng trai sao cho không xuất hiện cặp nào ngoại tình
Lời giải:
Ta dùng thuật toán Gale – Shapley hay thuật toán DAA:
Thực hiện vòng lặp:
Mọi chàng trai chưa đính hôn sẽ đồng thời cầu hôn người đang đứng đầu danh sách những cô gái mà họ chưa cầu hôn
Mỗi cô gái được cầu hôn sẽ so sánh những người cầu hôn và người mà cô đang đính hôn (nếu có) với nhau Trong những người đó, ai có thứ hạng cao hơn trong danh sách của cô thì sẽ đính hôn với cô, còn những người còn lại bị từ chối và người đang đính hôn (nếu có) với cô bị hủy hôn
Mỗi chàng trai bị từ chối trong lần lặp này xóa tên cô gái từ chối họ trong danh sách Mỗi chàng trai bị hủy hôn ước xóa tên cô gái đã hủy hôn ước trong danh sách Vòng lặp được thực hiện cho đến khi nào không còn chàng trai nào chưa đính hôn Khi đó
ta ghép đôi mỗi chàng trai với cô gái mà họ đính hôn Kết thúc thuật toán
Bài toán 5: Chứng minh với thuật toán trên, mọi người đều được ghép đôi
Lời giải:
Dễ thấy rằng mọi người chỉ đính hôn với tối đa một người khác giới
Ta xét một cô gái bất kì Dễ thấy rằng sau khi được cầu hôn, vào mọi thời điểm kết thúc vòng lặp sau này, cô gái đó luôn được đính hôn Ngoài ra, đối với một cô gái bất kì, do các chàng trai duyệt danh sách của họ từ trên xuống nên sau một số hữu hạn vòng lặp, cô gái
đó sẽ được cầu hôn
Bài toán 6: Chứng minh với cách ghép đôi nhận được từ thuật toán, không xuất hiện sự
ngoại tình
Lời giải:
Theo thuật toán, đối với một cô gái bất kì, vào thời điểm bất kì, người đính hôn với cô
có thứ hạng cao hơn những người đã bị cô từ chối và hủy hôn trong danh sách của cô
7
Trang 8Giả sử phản chứng: sau khi thực hiện thuật toán, tồn tại hai cặp cô gái – chàng trai là A – B và C – D mà D xếp hạng cao hơn B trong danh sách của A và A xếp hạng cao hơn C trong danh sách của D (A và D ngoại tình)
Do A xếp trước C trong danh sách của D nên khi thực hiện thuật toán, D cầu hôn A trước C Sau đó D cầu hôn C chứng tỏ A đã từ chối hoặc hủy hôn với D Khi kết thúc thuật toán, A kết hôn với B chứng tỏ B có thứ hạng cao hơn D trong danh sách của A, mâu thuẫn!
Vậy giả thiết phản chứng sai, mệnh đề được chứng minh
2 Thuật toán
Nếu số chàng trai bằng số cô gái thì luôn tồn tại một cách ghép cặp vợ-chồng cho họ sao cho các cuộc hôn nhân này là bền vững
Chứng minh: D Gale và L Shapley đã chứng minh định lý này bằng cách đưa thuật toán
DAA
Thuật toán này có thể được mô tả bởi vòng lặp sau:
• Bước 1: Các chàng trai và cả các cô gái cùng lên một danh sách sắp thứ tự các cô
gái và các chàng trai mà mình muốn lấy (theo thứ tự thích nhất, thích nhì, thích ba, )
• Bước 2: Lần lượt các chàng trai sẽ cầu hôn các cô gái đứng đầu trong danh sách
của mình Cô gái nào nhận được nhiều lời cầu hôn thì sẽ chọn người mà mình thích nhất (dựa theo danh sách của mình)
o Nếu người được chọn là người đứng đầu trong danh sách thì cô gái sẽ kết hôn với người này và từ chối mọi lời cầu hôn khác ở những lượt tiếp theo
o Còn nếu như không phải thì cô gái sẽ tìm cách “trì hoãn” bằng việc tạm nhận lời, coi như mình đang có một “hôn phu tạm thời” và chờ đợi lời cầu hôn từ một người có thứ hạng cao hơn Nếu người này xuất hiện và cầu hôn cô gái (ở những lượt sau) thì dĩ nhiên cô ấy sẽ chia tay người
"hôn phu tạm thời" của mình mà chọn người này
• Bước 3: Các chàng trai sẽ xóa tên cô gái đã từ chối mình hoặc đã chia tay với mình
khỏi danh sách
• Bước 4: Lặp lại bước 2.
Vòng lặp sẽ kết thúc khi không còn chàng trai nào phải đi cầu hôn nữa Khi đó cô gái nào chưa kết hôn thì sẽ kết hôn với người “hôn phu tạm thời” hiện tại của mình
Thuật toán DAA vẫn có thể áp dụng trong trường hợp số chàng trai không bằng số cô gái
Cụ thể:
8
Trang 9• Nếu n < m thì thuật toán sẽ dừng khi n cô gái được cầu hôn.
• Nếu m < n thì thuật toán sẽ dừng khi mỗi chàng trai rơi vào một trong hai trạng thái sau:
◦ Là hôn phu tạm thời của một cô gái nào đó
◦ Bị tất cả các cô gái từ chối
3 Tính tối ưu
Thuật toán Gale – Shapley luôn mang lại kết quả với độ phức tạp Ngoài ra, ta có thể định hướng được chiều hướng của kết quả sẽ có lợi cho bên nào Ví dụ, ta hãy xét nhóm 3 cô gái A, B, C và nhóm 3 chàng trai X, Y, Z Giả sử, thứ tự cảm tình của họ là: A: XYZ ; B: YZX ; C: ZXY
và
X: BCA ; Y: CAB ; Z: ABC
Nếu ta chạy thuật toán với X, Y và Z “cầu hôn”, ta sẽ được kết quả là cách ghép cặp bền vững X-B, Y-C và Z-A Cách này có lợi cho các chàng trai, các chàng sẽ được lấy người mình yêu nhất nhưng những cô gái sẽ phải lấy người xếp chót trong danh sách Nếu ta chạy thuật toán với A, B và C “cầu hôn”, ta sẽ được kết quả là cách ghép cặp bền vững A-X, B-Y và C-Z Ngược lại với trường hợp bên trên, ở đây các cô gái được lợi nhiều nhất
Ta được kết quả này có thể do những người “cầu hôn” duyệt danh sách của họ từ trên xuống, trong khi những người được cầu hôn chỉ được chọn người tốt nhất trong danh sách những người cầu hôn họ Vậy bây giờ ta sẽ xem xét, chứng minh bên nào hưởng lợi nhiều nhất trong trường hợp các chàng trai cầu hôn các cô gái
Trong các cách ghép cặp bền vững, kết quả của thuật toán DAA là tối ưu nhất, tức là các chàng trai sẽ lấy được người vợ mà mình ưng ý nhất, so với các cách ghép bền vững khác Chứng minh:
Xét tất cả các cách ghép cặp bền vững Đối với mỗi chàng trai, gọi vùng khả thi là tập hợp tất cả các cô gái mà anh ta có thể cưới trong các cách ghép đôi bền vững Định nghĩa tương tự với các cô gái Ta sẽ chứng minh bằng phản chứng
Gọi B là chàng trai đầu tiên bị cô gái G mà anh ta thích nhất trong vùng khả thi của mình
từ chối Điều này chứng tỏ G đã có hôn phu tạm thời là B’ và G thích B’ hơn B
Gọi G” là cô gái mà B’ thích nhất trong vùng khả thi của mình
• TH1: G khác G”
Xét trong danh sách (lập ở bước 1 của thuật toán) của B’, ta thấy G phải có thứ hạng cao hơn G” , nếu không thì B’ phải cầu hôn G” trước G và bị từ chối, tức là B’ sẽ bị
9
Trang 10người thích nhất trong vùng khả thi của mình từ chối Điều này vô lý do sự kiện B’ bị G” từ chối xảy ra trước sự kiện B bị G từ chối, hay B không phải là chàng trai đầu tiên bị từ chối bởi người mình thích nhất trong vùng khả thi của minh (trình tự cụ thể: B’ cầu hôn G” và từ chối, tiếp theo B’ cầu hôn G, được G cho làm hôn phu tạm thời, sau đó B mới cầu hôn G và bị G từ chối) Tóm lại, trong danh sách của B’ thì G có thứ hạng cao hơn G”
Mặt khác, ta xét một cách ghép cặp bền vững mà ở đó B và G kết hôn với nhau, còn B’ sẽ kết hôn với cô gái G” nào đó Tuy nhiên B’ lại thích G hơn G” và G cũng thích B’ hơn B nên mâu thuẫn với tính bền vững
• TH2: G chính là G”
Tương tự TH1
Nhận xét
1 Các cô gái sẽ lấy chàng trai có thứ hạng thấp nhất trong vùng khả thi của mình Như vậy, bên cầu hôn sẽ được lợi hơn bên được cầu hôn
Chứng minh Giả sử tồn tại cô gái G nào đó kết hôn với chàng trai B không phải là chàng trai xếp cuối vùng khả thi của cô ta Theo định lý 2, ta có G chính là cô gái đứng đầu vùng khả thi của B Xét cách ghép cặp bền vững mà G kết hôn với B’
là chàng trai xếp cuối vùng khả thi của cô ta Khi đó ta thấy G thích B hơn B’ , trong khi B phải kết hôn với cô gái có xếp hạng thấp hơn G, mâu thuẫn với tính bền vững
2 Nếu chỉ có một cách ghép cặp bền vững duy nhất thì tính tối ưu của các chàng trai
và các cô gái là như nhau
Chứng minh Vì vùng khả thi của mỗi người lúc này chỉ có một người
4 Mô hình và Code
a.Mô hình:
INPUT:
• Tập các chàng trai B = {b1, b2, , bn}
• Tập các cô gái G = {g1, g2, , gn}
• Danh sách xếp hạng yêu thích của mỗi người, trong đó gọi P (g ) (P (b )) là bi j gi j
thứ hạng mà bạn nam (nữ) thứ i đánh giá bạn nữ (nam) thứ j trong danh sách xếp hạng yêu thích của mình
OUTPUT: Tập hôn nhân bền vững S B × G⊂
•
•
•
• (b,g) S: ((b,g’) S ) ((b’,g) S) (P (g) < P (b’)) (P (b) < Pb g g g(b’))
10