Trong toán học và khoa học máy tính, bài toán hôn nhân ổn định SM yêu cầu tìm một cặp ghép ổn định 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ử.. Trong luận văn n
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH
PHẠM VĂN SỸ
NGHIÊN CỨU TÌM KIẾM CỤC BỘ CHO BÀI TOÁN
HÔN NHÂN ỔN ĐỊNH Chuyên ngành: CÔNG NGHỆ THÔNG TIN
Mã số:
LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN
Người hướng dẫn: TS HOÀNG HỮU VIỆT
Nghệ An, 2018
Trang 3LỜI CẢM ƠN
Lời đầu tiên tôi xin bày tỏ lòng cảm ơn và biết ơn chân thành nhất của mình tới tất cả những người đã hỗ trợ, giúp đỡ tôi trong quá trình thực hiện luận văn tốt nghiệp
Tôi xin cảm ơn Ngành Công nghệ Thông tin, Viện Kỹ thuật và Công nghệ, Phòng sau đại học, Trường Đại học Vinh cũng như quý thầy cô giáo trong khoa đã giúp đỡ, tạo mọi điều kiện thuận lợi nhất, hỗ trợ, giảng dạy giúp đỡ tôi trong quá trình học tập và thực hiện luận văn tốt nghiệp Đặc biệt
tôi muốn gửi lời cảm ơn chân thành đến TS Hoàng Hữu Việt, là người
hướng dẫn, nhận xét, giúp đỡ để tôi có thể hoàn thành được luận văn này Tôi xin được gửi lời cảm ơn đến gia đình, bạn b đ ng nghiệp đã luôn bên cạnh động viên tôi trong quá trình hoàn thiện luận văn
Nhân đây, tôi xin kính chúc quý Thầy, Cô giáo sức khỏe và tiếp tục đạt nhiều thành công trong nghiên cứu khoa học và trong sự nghiệp giảng dạy, chúc Viện Kỹ thuật và Công nghệ ngày một phát triển
Mặc dù đã có nhiều cố gắng nhưng quá trình thực hiện luận văn không thể tránh khỏi thiếu sót, vì vậy tôi rất mong nhận được những ý kiến đóng góp
bổ sung của thầy cô giáo và các bạn để luận văn của tôi được hoàn thiện hơn
Tôi xin chân thành cảm ơn!
Nghệ An, tháng năm 2018
Học viên
Phạm Văn Sỹ
Trang 4MỤC LỤC
Trang
LỜI CẢM ƠN 3
MỞ ĐẦU 7
1 Sự cần thiết của vấn đề nghiên cứu 7
2 Mục tiêu nghiên cứu 8
2.1 Mục tiêu tổng quát 8
2.2 Mục tiêu cụ thể 8
3 Đối tượng và phạm vi nghiên cứu 9
3.1 Đối tượng nghiên cứu 9
3.2 Phạm vi nghiên cứu 9
4 Nội dung nghiên cứu 9
5 Kết cấu của luận văn 10
Chương 1 TỔNG QUAN VỀ BÀI TOÁN HÔN NHÂN ỔN ĐỊNH 12
1.1 Bài toán hôn nhân ổn định 12
1.1.1 Phát biểu bài toán 12
1.2.2 Các định nghĩa 13
1.2.3 Các biến thể của bài toán hôn nhân ổn định 14
1.2.3.1 Bài toán phân công giảng viên hướng dẫn sinh viên thực hiện đề tài14 1.2.3.2 Bài toán xếp phòng ở ký túc xá 15
1.2 Các hướng tiếp cận giải bài toán hôn nhân ổn định 15
1.3 Kết luận Chương 16
Chương 2 THUẬT TOÁN GALE – SHAPLEY VÀ THUẬT TOÁN VÉT CẠN CHO BÀI TOÁN HÔN NHÂN ỔN ĐỊNH 18
2.1 Thuật toán Gale - Shapley 18
2.1.1 Mô tả thuật toán 18
2.1.2 Ví dụ minh họa 19
2.1.3 Ưu/nhược điểm của thuật toán Gale - Shapley 22
Trang 52.2 Thủ tục phá vỡ hôn nhân 22
2.3 Thuật toán vét cạn tìm tất cả các phép ghép ổn định 24
2.4 Kết luận chương 28
Chương 3 TÌM KIẾM CỤC BỘ CHO BÀI TOÁN HÔN NHÂN ỔN ĐỊNH 29
3.1 Thuật toán tìm kiếm cục bộ 29
3.2 Thuật toán tìm kiếm cục bộ một chiều cho bài toán hôn nhân ổn định30 3.3 Thuật toán tìm kiếm cục bộ hai chiều cho bài toán hôn nhân ổn định32 3.4 So sánh thuật toán tìm kiếm cục bộ với thuật toán vét cạn 38
3.4.1 Thực nghiệm với các bài toán hôn nhân ổn định có kích thước 50 39 3.4.2 Thực nghiệm với các bài toán hôn nhân ổn định có kích thước 10040 3.4.3 Thực nghiệm với các bài toán hôn nhân ổn định có kích thược 20042 3.5 Một số đánh giá các thuật toán 44
3.6 Kết luận chương 45
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 47
1 Kết luận 47
2 Kiến nghị và hướng phát triển 48
TÀI LIỆU THAM KHẢO 50
Trang 6DANH MỤC CÁC BẢNG, HÌNH VẼ
Trang Bảng
Bảng 2.1 Danh sách "thích" của 8 nam và 8 nữ 20 Bảng 2.2 Các bộ ghép ổn định của ví dụ 1 26 Bảng 3.1 Các phép ghép được sinh ra của ví dụ 2.1 theo thủ tục
Trang 7MỞ ĐẦU
1 Sự cần thiết của vấn đề nghiên cứu
Vấn đề hôn nhân ổn định (SM) là một vấn đề nổi tiếng về kết hợp nam giới và phụ nữ bình đẳng để thỏa mãn sự ổn định nhất định Vấn đề này được Gale và Shapley giới thiệu lần đầu tiên và gần đây đã nhận được sự chú ý của cộng đ ng nghiên cứu do vai trò quan trọng của nó trong một loạt các ứng dụng như phân công công việc cho công nhân, xếp thời khóa biểu ở trường đại học, tuyển sinh đại học, cho và nhận trong ghép tạng, phân công các bác
sĩ thường trú cho các bệnh viện ghép đôi bác sĩ thực tập và bệnh viện, học sinh tiểu học đến trường trung học cũng như trong các giao dịch trên thị trường
Trong toán học và khoa học máy tính, bài toán hôn nhân ổn định (SM) yêu cầu tìm một cặp ghép ổn định 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à ổn định nếu hai điều
kiện sau không đ ng thời xảy ra: (i) Một phần tử x của tập hợp thứ nhất thích phần tử y của tập hợp thứ hai hơn phần tử được ghép với x và (ii) y cũng thích
x hơn phần tử được ghép với y Nói cách khác, một cặp ghép là ổn định nếu không t n tại cặp (x, y) trong đó cả x và y đề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 ổn định thường được phát biểu như sau: Có n người đàn ông và n phụ nữ trong đó mỗi người xếp hạng tất các mọi người khác giới từ 1 đến n theo thứ tự ưu tiên cần tìm cách tổ thức hôn nhân sao cho
không t n tại hai 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 là "ổn định"
Trang 8ừ thực tế cho thấy trong hôn nhân có một số người đàn ông và phụ nữ độc thân muốn kết hôn Mỗi người có một tiêu chuẩn riêng với những người
mà họ muốn kết hôn Với các ràng buộc như vậy, việc mỗi người đều kết hôn được với người lý tưởng nhất của mình là điều gần như không thể
Vậy câu hỏi đặt ra là làm thế nào để việc "ghép đôi" thực hiện một cách tốt nhất có thể Năm 1962 David Gale và Lloyd Shapley đã nghiên cứu và đưa ra một thuật toán giải quyết cho bài toán ghép đôi trên và nhiều bài toán tương tự đã thu hút được các nhà nghiên cứu trong các lĩnh vực khác nhau như toán học, kinh tế học, lý thuyết trò chơi khoa học máy tính Tuy nhiên, thuật toán Gale - Shapley chỉ tối ưu được cho một phía nghĩa là nó chỉ tìm được nghiệm tối ưu cho những người đàn ông hoặc cho những người phụ nữ Thuật toán Gale-Shapley áp dụng cho bài toán có số lượng nam nữ bằng nhau
Trong luận văn này chúng tôi nghiên cứu thuật toán tìm kiếm cục bộ để tìm kiếm các phép ghép ổn định bình đẳng hoặc phép ghép cân bằng giới tính của một bài toán hôn nhân ổn định
2 Mục tiêu nghiên cứu
2.1 Mục tiêu tổng quát
Nghiên cứu các thuật toán tìm kiếm cục bộ một chiều và thuật toán tìm kiếm cục bộ hai chiều giải bài toán hôn nhân ổn định với số lượng nam và nữ bằng nhau
2.2 Mục tiêu cụ thể
Đề tài tập trung vào các mục tiêu chính sau:
i) Nghiên cứu tổng quan về bài toán hôn nhân ổn định
ii) Nghiên cứu thuật toán Gale-Shapley
Trang 9iii) Nghiên cứu thuật toán vét cạn cho bài toán hôn nhân ổn định
iv) Nghiên cứu các thuật toán tìm kiếm cục bộ cho bài toán hôn nhân ổn
định
v) Cài đặt thuật toán tìm kiếm cục bộ cho bài toán hôn nhân ổn định đưa
ra nhận xét và đề xuất
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
(a) Nghiên cứu lý thuyết
Nghiên cứu các tài liệu về bài toán hôn nhân ổn định đã công bố ở trong
và ngoài nước; các kết quả khảo sát có tính chất đánh giá của các nghiên cứu
đi trước; các tài liệu lập trình để thực thi thuật toán
(b) Nghiên cứu thực nghiệm
Sử dụng ngôn ngữ lập trình Matlab để cài đặt và thực thi các thuật toán tìm kiếm vét cạn và tìm kiếm cục bộ cho bài toán hôn nhân ổn định Đánh giá các thuật toán dựa trên thực nghiệm
3.2 Phạm vi nghiên cứu
Trong phạm vi luận văn này chúng tôi tập trung áp dụng các thuật toán tìm kiếm cục bộ để giải quyết bài toán hôn nhân ổn định với số lượng nam và
nữ bằng nhau
4 Nội dung nghiên cứu
- Nghiên cứu bài toán hôn nhân ổn định với số lượng nam và nữ bằng nhau
- Nghiên cứu các thuật toán Gale-Shapley cho bài toán hôn nhân ổn định
Trang 10- Nghiên cứu tổng quan các phương pháp giải bài toán hôn nhân ổn định
- Nghiên cứu thuật toán vét cạn, thuật toán tìm kiếm cục bộ cho bài toán hôn nhân ổn định
- Cài đặt các thuật toán vét cạn, thuật toán tìm kiếm cục bộ cho bài toán hôn nhân ổn định
- Đánh giá hiệu quả của các thuật toán vét cạn, thuật toán tìm kiếm cục
bộ cho bài toán hôn nhân ổn định
5 Kết cấu của luận văn
Luận văn g m 3 chương với nội dung của các chương như sau:
Chương 1 Tổng quan về bài toán hôn nhân ổn định: Chương này
giới thiệu về bài toán hôn nhân ổn định và các định nghĩa về các tiêu chuẩn ổn định tối ưu của bài toán Chương này cũng trình bày về các biến thể của bài toán hôn nhân ổn định và các hướng tiếp cận giải bài toán hôn nhân ổn định
Chương 3 Tìm kiếm cục bộ cho bài toán hôn nhân ổn định: Chương
này trình bày về thuật toán tìm kiếm cục bộ cũng như thuật toán tìm kiếm cục một chiều và thuật toán tìm kiếm cục bộ hai chiều cho bài toán ôn nhân ổn
Trang 11định Ngoài ra chương này cũng mô tả các kết quả thực nghiệm so sánh hiệu quả giữa các thuật toán vét cạn, thuật toán tìm kiếm cục bộ một chiều và thuật toán tìm kiếm cục bộ 2 chiều cho bài toán hôn nhân ổn định Cuối cùng, chương này đưa ra một số đánh giá về hiệu qủa của các thuật toán thực thi cho bài toán hôn nhân ổn định
Trang 12Chương 1 TỔNG QUAN VỀ BÀI TOÁN HÔN NHÂN ỔN ĐỊNH
Chương này giới thiệu về bài toán hôn nhân ổn định và các định nghĩa về các tiêu chuẩn ổn định tối ưu của bài toán Chương này cũng trình bày về các biến thể của bài toán hôn nhân ổn định và các hướng tiếp cận giải bài toán hôn nhân ổn định đã có
1.1 Bài toán hôn nhân ổn định
1.1.1 Phát biểu bài toán
Bài toán được giới thiệu bởi Gale and Shapley [1] và đã nhận được nhiều
sự quan tâm của nhiều nhà nghiên cứu vì vai trò quan trọng của nó trong nhiều ứng dụng như bài toán phân công giảng viên hướng dẫn đề tài/dự án cho sinh viên [2], bài toán ghép cặp sinh viên ở ký túc xá [3], v.v
Bài toán hôn nhân ổn định (the stable marriage problem) là một bài toán ghép cặp của một số tương đương giữa nam và nữ để thõa mãn một điều kiện
ổn định nào đó Bài toán hôn nhân ổn định kích thước n g m một tập n người đàn ông và một tập n người phụ nữ trong đó mỗi người xếp hạng thứ tự
"thích" những người khác giới theo một thứ tự ưu tiên từ 1 đến n trong một danh sách mà được gọi là danh sách xếp hạng thứ tự thích Một phép ghép M
là một tập n cặp (nam, nữ) trong đó mỗi người đàn ông chỉ được ghép với một người phụ nữ duy nhất và ngược lại Nếu một nam m và một nữ w là một cặp trong phép ghép M thì m và w được gọi là "bạn ghép" hay cặp ghép trong M
và được ký hiệu là m = M(w) và w = M(m) Một nam m và một nữ w tạo thành một cặp ghép khối (blocking pair) trong M nếu m "thích" w hơn M(m) (tức là thứ tự ưu tiên của w bé hơn M(m) trong danh sách thích của m) và w thích m hơn M(w) Một phép ghép M mà không chứa mọi cặp ghép khối thì M được gọi là phép ghép ổn định ngược lại M được gọi là không ổn định Ký hiệu mr(m,w) là thứ tự của nữ w trong danh sách xếp hạng thích của nam m và
Trang 13wr(w,m) là thứ tự của nam m trong danh sách xếp hạng thích của nữ w Với một phép ghép M, giá của phép ghép M của tập nam, ký hiệu là sm(M), và giá của ghép ghép M của tập nữ, ký hiệu là sw(M) được định nghĩa như sau:
Định nghĩa 1 (tối ưu cho tập nam) [4]: Một phép ghép M được gọi là
phép ghép ổn định tối ưu cho tập nam (man-optimal) nếu M có giá trị sm(M)
là bé nhất trong tất cả các phép ghép ổn định
Định nghĩa 2 (tối ưu cho tập nữ) [4]: Một phép ghép M được gọi là
phép ghép ổn định tối ưu cho tập nữ giới (woman-optimal) nếu M có giá trị sw(M) là bé nhất trong tất cả các phép ghép ổn định
Cho bài toán hôn nhân ổn định kích thước n, Gale and Shapley đã đề
nghị một thuật toán, gọi là thuật toán Gale-Shapley [1] để tìm một nghiệm tối
ưu cho tập nam giới trong thời gian O(n 2
) Về cơ bản, thuật toán là một dãy các đề nghị từ mỗi nam tới những người nữ giới để tìm phép ghép tối ưu cho tập nam giới Nếu vai trò của nam giới được thay đổi cho nữ giới, tức là đề nghị từ mỗi nữ tới các nam giới, thì nghiệm của thuật toán Gale-Shapley là nghiệm tối ưu theo tập nữ giới Chú ý rằng, trong phép tối ưu theo tập nam giới thì mỗi nam chọn được một nữ mà mình thích nhất nhưng mỗi nữ sẽ có người nam mà mình ít thích nhất ương tự, trong phép tối ưu theo tập nữ giới thì mỗi nữ chọn được một nam mà mình thích nhất nhưng mỗi nam sẽ có
người nữ mà mình ít thích nhất Với bài toán hôn nhân ổn định kích thước n,
Trang 14có thể có nhiều phép ghép ổn định khác với phép ghép ổn định tối ưu theo tập nam và phép ghép ổn định tối ưu theo tập nữ Hơn nữa, có thể nói rằng phép ghép ổn định tối ưu theo tập nam và phép ghép ổn định tối ưu theo tập nữ là những phép ghép "ích kỷ" cho tập nam và tập nữ Do đó cần tìm các phép ghép ổn định tối ưu khác mà cân bằng cho cả tập nam và tập nữ Cho một
phép ghép ổn định M, giá của phép ghép bình đẳng theo giới tính (egalitarian cost) của M, ký hiệu là c(M), và giá của ghép tương đương theo giới tính (sex- equality cost) của M, ký hiệu là d(M) được định nghĩa như sau:
Định nghĩa 3 (tối ưu bình đẳng theo giới tính) [4]: Một phép ghép M
được gọi là phép ghép ổn định tối ưu bình đẳng theo giới tính (egalitarian
cost) nếu M có giá trị c(M) là bé nhất trong tất cả các phép ghép ổn định
Định nghĩa 4 (tối ưu tương đương theo giới tính) [4]: Một phép ghép
M được gọi là phép ghép ổn định tối ưu tương đương theo giới tính equality cost) nếu M có giá trị d(M) là bé nhất trong tất cả các phép ghép ổn
(sex-định
1.2.3 Các biến thể của bài toán hôn nhân ổn định
1.2.3.1 Bài toán phân công giảng viên hướng dẫn sinh viên thực hiện đề tài
Bài toán phân công giảng viên hướng dẫn sinh viên thực hiện đề tài/đ
án là bài toán thường gặp trong các trường đại học Bài toán này thường được thực hiện bằng cách khoa đào tạo phân công trực tiếp giảng viên hướng dẫn cho sinh viên hoặc sinh viên xin xác nhận hướng dẫn của giảng viên và sau đó đăng ký giảng viên hướng dẫn với khoa đào tạo Khi mỗi giảng viên bị hạn chế về số lượng hướng dẫn sinh viên thì hướng giải quyết này không hiệu quả
Trang 15vì khó đáp ứng thõa mãn đ ng thời yêu cầu chọn sinh viên của giảng viên và chọn giảng viên của sinh viên Để tìm lời giải tối ưu cho bài toán bài toán đã được mô hình theo dạng tìm nghiệm của bài toán phân công giảng viên-sinh viên (Lecturer-Student Allocation hoặc LSA) thực hiện đề tài/đ án trong đó mỗi giảng viên đề xuất hướng dẫn một danh sách sinh viên được sắp xếp theo thứ tự ưu tiên và mỗi sinh viên cũng đề xuất một danh sách giảng viên hướng dẫn làm đề tài/đ án được sắp xếp theo thứ tự ưu tiên Như vậy bài toán LSA trở thành bài toán ghép cặp các phần tử của 2 tập hợp L (tập giảng viên) và S (tập sinh viên) không giao nhau (two-sided matching problem), tức là tìm một tập con của tập LS nhằm tối ưu nguyên vọng đề xuất của giảng viên và sinh viên
1.2.3.2 Bài toán xếp phòng ở ký túc xá
Bài toán ghép cặp sinh viên ở ký túc xá là bài toán thường gặp ở mỗi đầu năm học của phòng quản lý sinh viên ở các trường đại học, các sinh viên nhập học đăng ký ở ký túc xá đ ng thời đưa ra thứ tự ưu tiên các nguyện vọng và sở thích (hoặc lựa chọn cho mình phòng và người bạn cùng phòng)
để lựa chọn người bạn cùng phòng Sinh viên thứ (x) đề nghị người đầu tiên trong danh sách của mình về cùng phòng, nếu trong danh sách của sinh viên được đề nghị có người khác có thứ hạng cao hơn thì họ (sinh viên x) sẻ từ chối đề nghị, lúc này sinh viên (x) sẽ tiếp tục đề nghị người thứ 2 trong danh
sách và bài toán này trở nên bài toán ghép cặp của 2 sinh viên trong tập n
sinh viên
1.2 Các hướng tiếp cận giải bài toán hôn nhân ổn định
Tiếp cận bài toán hôn nhân ổn định bằng thuật toán Gale - Shapley và nêu ra một số hạn chế khi áp dụng thuật toán Người ta đã chứng minh rằng trong kết hợp ổn định tối ưu cho người đàn ông và trong kết hợp ổn định tối
Trang 16ưu cho phụ nữ, mỗi người đàn ông có đối tác t i tệ nhất mà anh ta có thể có trong bất kỳ sự kết hợp ổn định nào Vì vậy, thích hợp để tìm kiếm các kết hợp ổn định tối ưu khác để tạo sự lựa chọn cân bằng hơn cho cả đàn ông và phụ nữ Đ ng thời qua đó đưa ra tất cả các kết quả ổn định và hiển thị kết quả phù hợp
Nghiên cứu các thuật toán tìm kiếm cục bộ để tìm ra được các kết quả tối
ưu hơn dựa vào các kết quả đề xuất trước đó và đảm bảo thõa mãn cả nam và
nữ tránh được việc bất cân bằng và bình đẳng nam nữ Đề xuất một thuật toán tìm kiếm cục bộ để tìm các kết hợp cân bằng và ổn định giới tính trong vấn đề hôn nhân ổn định Dựa trên mối quan hệ bình đẳng của các kết hợp ổn định theo quan điểm của nam giới, cách tiếp cận của chúng tôi phát hiện ra các kết hợp cân bằng và ổn định giới tính từ kết hợp ổn định tối ưu Bằng cách sử dụng thủ tục phá vỡ hôn nhân (breakmarriage) để tìm kết quả lân cận
ổn định của kết hợp ổn định hiện tại và chuyển sang đối sánh lân cận tốt nhất, tìm kiếm cục bộ của chúng tôi tìm ra giải pháp trong khi di chuyển về phía ổn định phụ nữ tối ưu phù hợp Mô phỏng cho thấy thuật toán đề xuất của chúng tôi là hiệu quả cho vấn đề hôn nhân ổn định
1.3 Kết luận Chương
Chương 1 đã trình bày tổng quan về bài toán hôn nhân ổn định và một số biến thể của bài toàn Nội dung chương đã trình bày một số khái niệm định nghĩa liên quan để vận dụng vào giải quyết bài toán luận văn đề cập tới Chương này cũng đã trình bày về hôn nhân và hôn nhân ổn định; phép ghép
ổn định tối ưu cho tập nam, phép ghép ổn định tối ưu cho tập nữ; phép ghép
ổn định tối ưu bình đẳng theo giới tính; phép ghép ổn định tối ưu tương đương theo giới tính Nội dung chương trình bày một số bài toán là biến thể của bài toán hôn nhân ổn định trong thực tế như: Bài toán phân công giảng
Trang 17viên hướng dẫn sinh viên thực hiện đề tài; Bài toán ghép cặp sinh viên ở ký túc xá
Trang 18Chương 2 THUẬT TOÁN GALE – SHAPLEY VÀ THUẬT TOÁN VÉT
CẠN CHO BÀI TOÁN HÔN NHÂN ỔN ĐỊNH
Chương này sẽ trình bày thuật toán Gale-Shapley để tìm phép ghép tối
ưu cho tập nam và tập nữ của bài toán hôn nhân ổn định Ngoài ra chương này cũng sẽ trình bày thủ tục phá vỡ hôn nhân (breakmarriage) của một bộ phép ổn định để sinh ra một bộ ghép ổn định khác Dựa trên thủ tục phá vỡ hôn nhân chương này giới thiệu một thuật toán vét cạn để tìm tất cả các phép ghép ổn định của bài toán và từ đó tìm các phép ghép ổn định tối ưu theo một tiêu chuẩn nào đó
2.1 Thuật toán Gale - Shapley
2.1.1 Mô tả thuật toán
Để giải quyết bài toán hôn nhân đề cập ở Chương 1 Shapley và Gale đưa ra một thuật toán mà sau này trở nên nổi tiếng với tên gọi “ huật toán Gale-Shapley” và được mô tả như thuật toán 2.1 [1]
Cho bài toán hôn nhân ổn định kích thước n, thuật toán Gale-Shapley để tìm một nghiệm tối ưu cho tập nam giới trong thời gian O(n 2) Về cơ bản, thuật toán là một dãy các đề nghị từ mỗi nam tới những người nữ giới để tìm phép ghép tối ưu cho tập nam giới Thuật toán khởi tạo mỗi nam và mỗi nữ
chưa được ghép cặp Ở mỗi vòng lặp, thuật toán tìm một nam m chưa được ghép cặp và tìm một nữ w mà nam m thích nhất trong danh sách xếp hạng
"thích" của nam m mà m chưa chọn trước đó Nếu nữ w chưa được ghép cặp với ai thì m và w được tạo thành một cặp (m,w) Ngược lại, nếu nữ w đã được ghép cặp với một nam m' nào đó thì nữ w sẽ từ chối một trong hai người nam
m hoặc m' mà nữ w ít thích hơn để ghép cặp với người nam còn lại Sau đó
người nam bị loại sẽ trở thành độc thân Thuật toán kết thúc khi tất cả mọi nam đều được ghép cặp
Trang 19Thuật toán 2.1: Thuật toán Gale-Shapley
1: Vào: danh sách "thích" của tập nam và tập nữ
2: Ra: phép ghép ổn định tối ưu cho tập nam
3: Khởi tạo tất cả các nam và nữ độc thân, tức là chưa được ghép cặp
4: while (t n tại một nam m chưa được ghép cặp) do
5: Nam m đề cử nữ w là người thích nhất mà chưa đề cử;
6: if (w chưa được ghép cặp) then
Xét ví dụ về bài toán hôn nhân ổn định kích thước 8 (tức là có 8 nam và
8 nữ) trong đó danh sách "thích" của các nam và nữ được cho trong bảng 2.1
[5] Ví dụ nam m 1 xếp hạng "thích" các cô gái theo thứ tự từ 1 đến 8 tương
Trang 20- Lặp 2: m 2 chưa được ghép cặp do đó m 2 chọn w 5 , tức là M = {(m 1 ,w 4),
(m 2 ,w 5)}
- Lặp 3: m 3 chưa được ghép cặp do đó m 3 chọn w 3 , tức là M = {(m 1 ,w 4),
(m 2 ,w 5 ), (m 3 ,w 3)}
- Lặp 4: m 4 chưa được ghép cặp và do đó m 4 chọn w 5 Vì w 5 đã được
ghép với m 2 nhưng w 5 thích m 4 hơn m 2 do đó w 5 được ghép với m 4 và m 2 bị
loại hay m 2 chưa được ghép cặp, tức là M = {(m 1 ,w 4 ), (m 3 ,w 3 ), (m 4 ,w 5)}
Bảng 2.1 Danh sách "thích" của 8 nam và 8 nữ
Nam Danh sách thích Nữ Danh sách thích
- Lặp 5: m 2 chưa được ghép cặp và do đó m 2 chọn tiếp w 3 Vì w 3 đã được
ghép với m 3 nhưng thích m 2 hơn m 3 do đó w 3 được ghép với m 2 và m 3 bị loại,
hay m 3 chưa được ghép cặp, tức là M = {(m 1 ,w 4 ), (m 2 ,w 3 ), (m 4 ,w 5)}
- Lặp 6: m 3 chưa được ghép cặp và do đó m 3 chọn tiếp w 8 Vì w 8 chưa
được ghép cặp do đó m 3 chọn w 8 , tức là M = {(m 1 ,w 4 ), (m 2 ,w 3 ), (m 3 ,w 8),
(m 4 ,w 5)}
Trang 21- Lặp 7: m 5 chưa được ghép cặp và do đó m 5 chọn w 1 Vì w 1 chưa được
ghép cặp do đó m 5 chọn w 1 , tức là M = {(m 1 ,w 4 ), (m 2 ,w 3 ), (m 3 ,w 8 ), (m 4 ,w 5),
(m 5 ,w 1)}
- Lặp 8: m 6 chưa được ghép cặp và do đó m 6 chọn w 8 Vì w 8 đã được
ghép với m 3 nhưng thích m 3 hơn m 6 do đó w 3 được ghép với m 3 và m 6 bị loại,
hay m 6 chưa được ghép cặp, tức là M = {(m 1 ,w 4 ), (m 2 ,w 3 ), (m 3 ,w 8 ), (m 4 ,w 5),
- Lặp 11: m 8 chưa được ghép cặp và do đó m 8 chọn w 5 Vì w 5 đã được
ghép với m 4 nhưng thích m 4 hơn m 8 do đó w 5 được ghép với m 4 và m 8 bị loại,
hay m 8 chưa được ghép cặp, tức là M = {(m 1 ,w 4 ), (m 2 ,w 3 ), (m 3 ,w 8 ), (m 4 ,w 5),
(m 5 ,w 1 ), (m 6 ,w 6 ), (m 7 ,w 2)}
- Lặp 12: m 8 chưa được ghép cặp và do đó m 8 chọn tiếp w 7 Vì w 7 chưa
được ghép cặp do đó m 8 chọn w 7 , tức là M = {(m 1 ,w 4 ), (m 2 ,w 3 ), (m 3 ,w 8),
(m 4 ,w 5 ), (m 5 ,w 1 ), (m 6 ,w 6 ), (m 7 ,w 2 ), (m 8 ,w 7)}
- Lặp 13: ở bước này, tất cả các nam đã được ghép cặp và thuật toán
dừng Thuật toán trả về nghiệm ổn định tối ưu cho tập nam là M = {(m 1 ,w 4),
(m 2 ,w 3 ), (m 3 ,w 8 ), (m 4 ,w 5 ), (m 5 ,w 1 ), (m 6 ,w 6 ), (m 7 ,w 2 ), (m 8 ,w 7)}
Trang 22Nếu đổi vai trò để cử tập nam cho tập nữ, thuật toán Gale-Shapley cho
trả về nghiệm ổn định tối ưu cho tập nữ là M = {(m 1 ,w 1 ), (m 2 ,w 4 ), (m 3 ,w 7),
(m 4 ,w 8 ), (m 5 ,w 3 ), (m 6 ,w 5 ), (m 7 ,w 6 ), (m 8 ,w 2)}
2.1.3 Ưu/nhược điểm của thuật toán Gale - Shapley
Thuật toán Gale - Shapley kết thúc sau hữu hạn bước và luôn cho một phép ghép ổn định tối ưu theo tập nam Nếu vai trò của nam và nữ được thay đổi phép ghép được tìm thấy bởi Gale-Shapley là phép ghép ổn định tối ưu cho tập nữ Người ta đã chứng minh rằng trong phép ghép ổn định tối ưu cho tập nam, mỗi người phụ nữ có bạn ghép t i tệ nhất mà cô ta có trong bất kỳ các phép ghép ổn định và trong phép ghép ổn định tối ưu cho tập nữ, mỗi người nam có một bạn ghép t i tệ nhất mà anh có trong bất kỳ phép ghép ổn định Vì vậy, thích hợp để tìm kiếm các phép ghép ổn định tối ưu khác để tạo
sự lựa chọn cân bằng hơn cho cả đàn ông và phụ nữ
2.2 Thủ tục phá vỡ hôn nhân
Gọi M là một phép ghép ổn định và (m,w) là một cặp ghép trong phép
ghép M Thủ tục phá vỡ hôn nhân (break marriage) [6], ký hiệu là
breakmarriage(M,m), nhằm tìm một phép ghép ổn định M' từ phép ghép ổn định M và nam m Ý tưởng của thủ tục breakmarriage(M,m) tương tự như thuật toán Gale-Shapley Ban đầu, thủ tục gán w = M(m) và gán m là độc thân
Ở mỗi vòng lặp, thuật toán thực hiện một dãy các đề cử, loại bỏ và chấp nhận
giống như thuật toán Gale-Shapley Thuật toán dừng khi hoặc là một nam m nào đó bị loại bỏ bởi tất cả các nữ hoặc là nữ w chấp nhận một nam m' nào đó
mà cô ta thích hơn bạn ghép hiện thời (tức là M(w)) của w' Bởi vì luôn có một nam độc thân ở mọi thời gian thực hiện của thuật toán, nếu một nữ w chấp nhận một nam m' thì sẽ không có nam nào độc thân và thủ tục breakmarriage(M,m) sẽ trả về một phép ghép ổn định M' của n cặp ghép
Trang 23Ví dụ breakmarriage(M 0 ,1), trong đó M 0 là phép ghép tối ưu của tập
nam trong ví dụ 2.1, sẽ trả về phép ghép ổn định M' = {(m 1 ,w 4 ), (m 2 ,w 3),
(m 3 ,w 2 ), (m 4 ,w 5 ), (m 5 ,w 1 ), (m 6 ,w 6 ), (m 7 ,w 8 ), (m 8 ,w 7)} Tuy nhiên
breakmarriage(M 0 ,2) sẽ không trả về phép ghép ổn định nào, tức là trả về
phép ghép rỗng
Nếu thủ tục breakmarriage(M,m) được áp dụng cho mọi nam trong tập
nam thì sẽ sinh ra các phép ghép ổn định bị lặp lại nhiều lần Xét ví dụ với thủ
tục breakmarriage như sau:
- Thủ tục breakmarriage(M 0 ,1) sẽ sinh ra M 1 = {(1,3), (2,4), (3,8), (4,5), (5,1), (6,6), (7,2), (8,7)}
- Thủ tục breakmarriage(M 0 ,3) sẽ sinh ra M 2 = {(1,4), (2,3), (3,2), (4,5), (5,1), (6,6), (7,8), (8,7)}
- Thủ tục breakmarriage(M 1 ,3) sẽ sinh ra M 3 = {(1,3), (2,4), (3,2), (4,5), (5,1), (6,6), (7,8), (8,7)}
- Thủ tục breakmarriage(M 2 ,1) sẽ sinh ra M 3 = {(1,3), (2,4), (3,2), (4,5), (5,1), (6,6), (7,8), (8,7)}
Như vậy dễ thấy rằng M 3 được sinh ra tử 2 phép ghép M 1 và M 2 Để tìm tất cả các phép ghép ổn định mà mỗi phép ghép chỉ được sinh ra đúng mọt
lần McVitie and Wilson [6] đề nghị một thuật toán breakmarriage với hai
tính chất sau:
i) Nếu thủ tục breakmarriage(M,m) trả về một phép ghép ổn định M' thì breakmarriage(M',i) chỉ thực hiện với những nam i ≥ m
ii) Trong thủ tục breakmarriage(M,m) chỉ những nam m' ≥ m đề cử, tức
là nếu một nam m' nào đó là độc thân và m' < m trong quá trình thực hiện thuật toán thì breakmarriage(M,m) dừng và trả về phép ghép rỗng
Trang 24iii) Trong phép ghép tối ưu cho tập nữ M t, mỗi nam có bạn ghép t i nhất
mà anh ta có trong tất cả các bộ ghép ổn định Do đó với mỗi nam m, chỉ hạn chế tìm kiếm tới w mà có trong M t
Thủ tục breakmarriage(M,m) với các tính chất trên được mô tả trong
thuật toán 2.2
Thuật toán 2.2 Thủ tục breakmarriage
1: Vào: - Danh sách xếp hạng thích của tập nam X và của tập nữ Y;
2: - Bộ ghép ổn định M, nam m và bộ ghép tối ưu cho tập nữ M t ;
3: Ra: - Một bộ ghép ổn định M' hoặc rỗng;
4: Khởi tạo w = M(m) và M(w) = 0;
5: while (true) do
6: Tìm một nam m' chưa được ghép cặp;
7: if (không tìm thấy m') then trả về M' = M;
Trang 25Phần này chúng tôi mô tả một thuật toán vét cạn dựa trên thủ tục
breakmarriage để tìm tất cả các phép ghép ổn định của bài toán hôn nhân ổn định kích thước n Thuật toán vét cạn được xây dựng dựa trên định lý sau:
Định lý 1 [6]: Mọi phép ghép ổn định M i (i = 1, 2, , t) có thể đạt được bằng một chuỗi thực hiện thủ tục breakmarriage bắt đầu từ phép ghép ổn định tối ưu cho tập nam M0, với M t là phép ghép ổn định tối ưu cho tập nữ
Thuật toán vét cạn tìm ra tất cả các bộ ghép ổn định được mô tả như thuật toán 2.3 Đầu tiên, thuật toán Gale-Shapley được dùng để tìm các bộ
ghép tối ưu cho tập nam M 0 và bộ ghép tối ưu cho tập nữ M t Bắt đầu ở
nghiệm M 0, thuật toán tìm tất cả các bộ ghép ổn đinh như sau Đầu tiên thuật
toán sẽ tìm tất cả các bộ ghép ổn định được sinh ra từ bộ ghép ổn định M 0 với
mọi nam từ 1 đến n bằng thủ tục breakmarriage Tiếp theo, thuật toán tiếp tục tìm tất cả bộ ghép ổn định được sinh ra từ các bộ ghép mà được sinh ra từ M 0 với mọi nam từ 1 đến n bằng thủ tục breakmarriage Quá trình sinh các bộ ghép tiếp tục cho đến khi có một bộ ghép M mà không sinh ra bất kỳ bộ ghép
ổn định nào với mọi nam từ 1 đến n heo định lý 1, vì bộ ghép ổn định tối ưu cho tập nữ M t không sinh ra các bộ ghép ổn định khác nên khi thuật toán tìm
thấy M t thì nó sẽ dừng
Thuật toán 2.3 Thuật toán vét cạn tìm tất cả các bộ ghép ổn định
1: Vào: - Danh sách thích của tập nam X và tập nữ Y;
2: Ra: - Tất cả các phép ổn định của bài toán hôn nhân ổn định;
3: - Phép ghép ổn định tối ưu theo hàm đánh giá tiêu chuẩn tối ưu f;
4: Tìm M 0 dùng thuật toán Gale-Shapley;
5: Tìm M t dùng thuật toán Gale-Shapley;
6: Gán M best = M 0;
7: Gán parrentSet = M 0;
8: Gán stableSet = M 0;