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
Trang 1NGUYỄN HỒNG HẢI
BÀI TOÁN GHÉP CẶP VÀ ỨNG DỤNG
TRONG CÔNG TÁC TUYỂN SINH
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái Nguyên - 2015
Style Definition: TOC 3: Right: -0.02", Tab
stops: 6.13", Right,Leader: … + Not at 6.38"
Style Definition: TOC 2: Tab stops: 0.38",
Left
Trang 2MỤC LỤC
LỜI CẢM ƠN 64
DANH MỤC VIẾT TẮT 75
DANH MỤC CÁC HÌNH 86
DANH MỤC CÁC BẢNG 107
Lời nói đầu 118
Chương 1: TỔNG QUAN MỘT SỐ VẤN ĐỀ VỀ ĐỒ THỊ 1511
1.1.Các khái niệm cơ bản 1511
1.1.1.Đồ thị 1511
1.1.2.Đồ thị hai phía 1511
1.1.3.Đồ thị hai phía đầy đủ 1612
1.2.Bài toán ghép cặp không trọng 1814
1.2.1 Bài toán 1814
1.2.2.Thuật toán đường mở 2016
1.3.Bài toán ghép cặp với trọng số cực tiểu 2217
1.3.1.Bài toán 2217
1.3.2.Các khái niệm 2318
1.3.3.Thuật toán Hungari 2419
1.4 Bài toán ghép cặp với trọng số cực đại 2621
1.4.1.Bài toán 2622
1.4.2.Thuật toán 2722
1.5.Kết luận chương 2924
Chương 2: BÀI TOÁN GHÉP CẶP 3025
2.1.Giới thiệu bài toán 3025
2.1.1.Phát biểu bài toán 3025
2.2.Bài toán hôn nhân bền vững 3227
Formatted: Font: 14 pt
Formatted: Font: Not Bold
Trang 32.2.1.Giới thiệu bài toán 3227
2.2.2.Đặt bài toán 3328
2.2.3.Các đặc trưng của bài toán 3429
2.2.4.Điều kiện giải bài toán 3530
2.2.5.Thuật toán cho bài toán hôn nhân bền vững 3530
2.2.5.1.Ý tưởng và lược đồ thuật toán 3630
2.2.5.2.Tính ổn định và bền vững 4135
2.2.6.Triển khai thuật toán 4540
2.3.Một số ứng dụng phát triển dựa trên thuật toán hôn nhân bền vững 4842
2.3.1.Bài toán ghép tạng (cho và nhận thận) 4942
2.3.2.Bài toán ghép cặp bác sĩ thực tập và bệnh viện 4943
2.4.Kết luận chương 5043
Chương 3: ỨNG DỤNG THUẬT TOÁN GHÉP CẶP TRONG BỐI CẢNH TUYỂN SINH ĐẠI HỌC Ở NƯỚC TA 5145
3.1.Giới thiệu bài toán tuyển sinh ở nước ta 5145
3.2.Ý nghĩa bài toán 5246
3.3.Đặt bài toán 5448
3.4.Ý tưởng giải quyết bài toán 5549
3.5.Áp dụng bài toán hôn nhân bền vững 5549
3.6.Sự khác nhau giữa bài toán hôn nhân bền vững và tuyển sinh đại học 5650
3.7.Thuật toán 5851
3.8.Tính ổn định của thuật toán 6256
3.9.Kết luận chương 6660
KẾT LUẬN 6861
TÀI LIỆU THAM KHẢO 6962
LỜI CẢM ƠN 4 Formatted: Tab stops: Not at 6.13"
Trang 4DANH MỤC CÁC HÌNH 5
Chương 1: TỔNG QUAN MỘT SỐ VẤN ĐỀ VỀ ĐỒ THỊ 10
1.1 Các khái niệm cơ bản 10
1.1.1 Đồ thị 10
1.1.2 Đồ thị hai phía 10 1.1.3 Đồ thị hai phía đầy đủ 12 1.1.4 Bài toán ghép cặp không trọng 14 a Bài toán 14
b Thuật toán đường mở 15
1.1.5 Bài toán ghép cặp với trọng số cực tiểu 17 a Bài toán 17
b Các khái niệm 18
c Thuật toán Hungari 19
1.1.6 Bài toán ghép cặp với trọng số cực đại 20
a Bài toán 21 b Thuật toán 21
1.2 Kết luận chương 23
Chương 2: BÀI TOÁN GHÉP CẶP 24
2.1 Giới thiệu bài toán 24
2.1.1 Phát biểu bài toán 24
2.1.2 Các định nghĩa 24
2.1.3 Các trường hợp giải bài toán ghép cặp 25
2.2 Bài toán hôn nhân bền vững 26
2.2.1 Giới thiệu bài toán 26
2.2.2 Đặt bài toán 26
2.2.3 Các đặc trưng của bài toán 28
2.2.4 Điều kiện giải bài toán 28
2.2.5 Thuật toán cho bài toán hôn nhân bền vững 29
Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Tab stops: Not at 6.13" Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Tab stops: Not at 6.13"
Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Tab stops: Not at 6.13"
Formatted: Font: Not Bold Formatted: Font: Times New Roman, 13 pt,
Not Bold
Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Not Highlight
Formatted: Font: Times New Roman, 13 pt Formatted: Tab stops: Not at 6.13" Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt
Trang 5a Ý tưởng và lược đồ thuật toán 29
b Tính ổn định và bền vững 34
2.2.6 Triển khai thuật toán 38 a Thiết kế chương trình 38
b Hệ thống 38 c Chương trình 39
2.3 Một số ứng dụng phát triển dựa trên thuật toán hôn nhân bền vững 40
2.3.1 Bài toán ghép tạng (cho và nhận thận) 40 2.3.2 Bài toán ghép cặp bác sĩ thực tập và bệnh viện 40 2.4 Kết luận chương 41
Chương 3: ỨNG DỤNG THUẬT TOÁN GHÉP CẶP TRONG BỐI CẢNH TUYỂN SINH ĐẠI HỌC Ở NƯỚC TA 42
3.1 Giới thiệu bài toán tuyển sinh ở nước ta 42
3.2 Ý nghĩa bài toán 43
3.3 Đặt bài toán 45
3.4 Ý tưởng giải quyết bài toán 46
3.5 Áp dụng bài toán hôn nhân bền vững 46
3.6 Sự khác nhau giữa bài toán hôn nhân bền vững và tuyển sinh đại học 46
3.7 Thuật toán 48
3.8 Tính ổn định của thuật toán 52
Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Tab stops: Not at 6.13"
Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt Formatted: Tab stops: Not at 6.13"
Formatted: Font: 12 pt
Formatted: Centered
Trang 6LỜI CẢM ƠN
Để hoàn thành luận văn này, emtôi xin bày tỏ lòng biết ơn sâu sắc đến cô
giáo hướng dẫn TS Nguyễn Thị Hồng Minh đã tận tình hướng dẫn em tôi
trong suốt quá trình thực hiện luận văn
EmTôi xin chân thành cảm ơn quý Thầy, Cô trong trường Đại học Công
nghệ Tthông tin & Truyền thông - Đại học Thái Nguyên; quý Thầy, Cô trong
Viện Công nghệ thông tin đã tận tình truyền đạt kiến thức cho chúng emtôi
trong 2 năm học tập và nghiên cứu Với vốn tiếp thu trong khóa học không
chỉ là nền tảng cho quá trình nghiên cứu luận văn này mà còn là hành trang
quý báu, nền tảng vững chắc để emtôi tiếp tục nghiên cứu, hoạt động trong
lĩnh vực công nghệ thông tin
Cuối cùng Em xixin cảm ơn gia đình, bạn bè, đồng nghiệp đã giúp đỡ
và động viên tôi em trong công việc và học tập cũng như trong quá trình thực
hiện luận văn này
Xin chúc mọi người luôn mạnh khoẻ, đạt được nhiều thành tích cao
trong công tác, học tập và nghiên cứu khoa học!
Formatted: Font: Bold, Not Italic Formatted: Centered
Trang 7DANH MỤC VIẾT TẮT
Formatted: Font: Not Bold
Formatted: Font: Times New Roman, 13 pt Formatted: Indent: Left: 0"
Formatted Table
Formatted: Centered, Indent: Left: 0" Formatted: Font: Times New Roman, 13 pt Formatted: Indent: Left: 0"
Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt
Formatted: Centered, Indent: Left: 0" Formatted: Font: Times New Roman, 13 pt Formatted: Indent: Left: 0"
Formatted: Font: Times New Roman, 13 pt Formatted: Font: Times New Roman, 13 pt
Trang 8DANH MỤC CÁC HÌNH
Hình 1 Đồ thị 1511
Hình 2 Đồ thị hai phía không có chu trình 1612
Hình 3 Đồ thị hai phía có chu trình 1612
Hình 4.Đồ thị không phải đồ thị hai phía 1612
Hình 5.Đồ thị hai phía đầy đủ hình sao 1713
Hình 6 Đồ thị hai phía đầy đủ hình vuốt cây 1713
Hình 7 Đồ thị hai phía đầy đủ m≠n 1814
Hình 8.Đồ thị hai phía đầy đủ m=n 1814
Hình 9 Đồ thị hai phía và bộ ghép M 2016
Hình 10 Chú thích trong 1 ô của bảng 3832
Hình 11 Khai báo số lượng người đàn ông và số lượng người phụ nữ tham gia ghép cặp 4741
Hình 12 Khai báo tập có thứ tự về tiêu chuẩn lựa chọn của mỗi người đàn ông 4741 Hình 13 Khai báo tập có thứ tự về tiêu chuẩn lựa chọn của mỗi người phụ nữ 4841
Hình 14 Kết quả thực hiện chương trình 4842
Hình 15 Chú thích trong 1 ô của bảng 6053
Hình 1 Đồ thị 11
Hình 2 Đồ thị hai phía không có chu trình 12
Hình 3 Đồ thị hai phía có chu trình 12
Hình 4.Đồ thị không phải đồ thị hai phía 13
Hình 5.Đồ thị hai phía đầy đủ hình sao 13
Hình 6 Đồ thị hai phía đầy đủ hình vuốt cây 14
Hình 7 Đồ thị hai phía đầy đủ m≠n 14
Hình 8.Đồ thị hai phía đầy đủ m=n 15
Hình 9 Đồ thị hai phía và bộ ghép M 16
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Default Paragraph Font Formatted: Default Paragraph Font Formatted: Default Paragraph Font Formatted: Default Paragraph Font Formatted: Default Paragraph Font Formatted: Default Paragraph Font Formatted: Default Paragraph Font Formatted: Default Paragraph Font
Formatted: Default Paragraph Font
Trang 9Hình 10 Chú thích trong 1 ô của bảng 32
Hình 11 Khai báo những người đàn ông và những người phụ nữ tham gia ghép đôi 40
Hình 12 Khai báo tập có thứ tự về tiêu chuẩn lựa chọn của mỗi người đàn ông 40
Hình 13 Khai báo tập có thứ tự về tiêu chuẩn lựa chọn của mỗi người phụ nữ 40
Hình 14 Kết quả thực hiện chương trình 40
Hình 15 Chú thích trong 1 ô của bảng 51
Formatted: Default Paragraph Font
Formatted: Default Paragraph Font
Formatted: Default Paragraph Font
Formatted: Default Paragraph Font
Formatted: Default Paragraph Font
Formatted: Default Paragraph Font
Formatted: Heading 1, Space Before: 0 pt,
After: 0 pt
Trang 10Formatted: Font color: Auto
Formatted: Font color: Auto
Formatted: Font color: Auto
Formatted: Font color: Auto
Formatted: Font color: Auto
Formatted: Font color: Auto
Formatted: Font color: Auto
Formatted: Font color: Auto
Formatted: Font color: Auto Formatted: Font color: Auto
Trang 11Lời nói đầ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 Tuy nhiên, nghiên cứu của hai nhà khoa học David
Gale và Lloyd Shapley chỉ có vẻ đẹp thuần túy về mặt lý thuyết mà khó có thể
áp dụng vào trong thực tiễn Nhà kinh tế học Alvin Roth đã đi xa hơn bằng
việc sáng tạo ra các luật chơi áp dụng được trong thực tế Ông và các cộng sự
đã tổ chức các trò chơi kinh tế nho nhỏ để sinh viên tham gia Sau đó các ông
thu thập và phân tích kết quả thu được và mô hình hóa các tương tác giữa
những người chơi với nhau dựa trên quan sát thực tế Nói cách khác, ông thiết
Formatted: Font: 14 pt Formatted: Heading 1, Space Before: 0 pt,
After: 0 pt
Trang 12kế ra các thị trường mà nếu không có các phát minh của ông thì đã không tồn
tại hoặc tồn tại dưới một dạng rất không hiệu quả
Gần đây nhất, năm 2012, ứng dụng của thuật toán này đã mang lại giải
thưởng Nobel kinh tế cho hai nhà khoa học người Mỹ là Alvin E.Roth và
Lloyd Shapley với nghiên cứ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
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
Công tác tuyển sinh ở nước ta hiện đang được áp dụng đó là: Kết thúc kỳ
thi tốt nghiệp THPT quốc gia, các thí sinh sẽ tìm hiểu chỉ tiêu tuyển sinh,
điểm xét tuyển và các điều kiện tuyển sinh khác để lựa chọn những ngành
học, trường học phù hợp với nhu cầu của mình Sau đó sẽ nộp hồ sơ xét dự thi
vào những trường có khả năng trúng tuyển cao Mỗi thí sinh đăng ký xét
tuyển đại học sẽ gửi kết quả điểm thi tốt nghiệp THPT và các ngành học đăng
ký vào các trường mà mình muốn học (cho phép thí sinh đăng ký tối đa 4
ngành (hoặc nhóm ngành) của một trường cho mỗi đợt xét tuyển; Các nguyện
vọng này được xếp theo thứ tự ưu tiên từ 1 đến 4) Ngoài ra thí sinh còn
dùng 3 bản chính Giấy chứng nhận kết quả thi dùng cho xét tuyển các nguyện
vọng bổ sung để đăng ký; Kết thúc mỗi đợt xét tuyển nguyện vọng bổ sung,
Formatted: Font: 14 pt, Not Highlight Formatted: Font: 14 pt
Formatted: Font: 14 pt, Not Highlight
Trang 13thí sinh không trúng tuyển được quyền rút hồ sơ đăng ký xét tuyển để đăng ký
xét tuyển đợt tiếp theo
Các trường đại học tiếp nhận hồ sơ ứng tuyển của các thí sinh và sẽ lựa
chọn những thí sinh có điểm từ cao xuống thấp cho đến khi hết chỉ tiêu
Mô hình tuyển sinh đại học này có rất nhiều điểm tương đồng với mô
hình tuyển sinh đại học và vào các trường trung học ở Mỹ trước năm 2003:
các học sinh trung học được yêu cầu liệt kê 5 trường mà mình ưa thích, tiếp
theo danh sách này được gửi đến các trường đại học Các trường học sẽ lựa
chọn xem học sinh nào phù hợp và từ chối những học sinh khác Quá trình
này lặp lại khoảng hơn 2 vòng, và các trường sẽ lựa chọn được những thí sinh
phù hợp với trường mình
Nhưng với hình thức tuyển sinh như vậy, kết quả là hơn 30.000 thí sinh
phải theo học ở trường mà mình không liệt kê trong danh sách, các trường học
bị loại bớt cơ hội lựa chọn những thí sinh mình mong muốn Hơn nữa, cơ chế
này dẫn đến việc trình bày sai sở thích của mỗi sinh viên
Với hình thức tuyển sinh ở nước ta cộng với mối liên quan mật thiết và
tính áp dụng thực tế rất cao như giới thiệu trên của bài toán ghép cặp tôi xin
lựa chọn đề tài: “ Bài toán ghép cặp và ứng dụng trong công tác tuyển
sinh” nhằm mục đích định hướng cho công tác tuyển sinh của các trường đại
học đạt chất lượng và hiệu quả, giúp hỗ trợ các em học sinh được học theo
đúng sở trường, năng lực để có một điều kiện tốt hơn trong tương lai
Bố cục của luận văn gồm 3 chương.:
CChương 1: Ttrình bày nội dung tìm hiểu tổng quan về lý thuyết đồ thhị:
Các định nghĩa, các loại đồ thị, bậc của đồ thị, đường đi, chu trình, tính liên
thông trong đồ thị Tiếp theo
Trang 14Cchương 2 2: Giới thiệu một số bài toán trên đồ thị:
trình bày bài toán ghép cặp, bài toán hôn nhân bền vững và các ứng dụng
của bài toán hôn nhân bền vững Trong - Bài toán ghép cặp:
+ Bài toán ghép cặp không trọng
+ Bài toán ghép cặp với trọng số cực tiểu
+ Bài toán ghép cặp với trọng số cực đại
+ Bài toán ghép cặp tối ưu
- Bài toán hôn nhân bền vững: trình bày bài toán và sử dụng thuật toán
ghép cặp
Cchương 3 l: lấy chương 2 làm tiền đề cho chương 3 xây dựng ý tưởng,
mô tả thuật toán ghép cặp ứng dụng cho bài toán tuyển sinh
Formatted: Font: 14 pt, Font color: Auto Formatted: Font: 14 pt, Font color: Auto Formatted: Font: 14 pt, Font color: Auto Formatted: Font: 14 pt, Font color: Auto
Formatted: Indent: Left: 0", First line: 0.32"
Formatted: Font: 14 pt, Font color: Auto, Not
Expanded by / Condensed by
Formatted: Indent: First line: 0.32"
Formatted: Font: 14 pt, Font color: Auto Formatted: Font: 14 pt, Font color: Auto Formatted: Font: 14 pt, Font color: Auto Formatted: Font: 14 pt, Font color: Auto Formatted: Font: 14 pt, Font color: Auto Formatted: Font: 14 pt
Formatted: Centered, Indent: First line: 0"
Formatted: Font: Times New Roman, 14 pt,
Bold
Trang 15Chương 1: TỔNG QUAN MỘT SỐ VẤN ĐỀ VỀ ĐỒ THỊ
VÀ ĐỒ THỊ HAI PHÍA
2.2.1.1 Các khái niệm cơ bản
1.1.1 Đồ thị
Đồ thị vô hướng G = (V,E) gồm[4]:
- V là tập hợp khác rỗng mà các phần tử của nó gọi là đỉnh (vertex) của G
- E là đa tập hợp gồm các cặp không sắp thứ tự của hai đỉnh Mỗi phần tử
của E được gọi là một cạnh (edge) của G
Đồ thị vô hướng không có cạnh song song và không có khuyên gọi là đồ
thị đơn vô hướng
Ví dụ:
Hình 1111 Đồ thị
1.1.2 Đồ thị hai phía
Một đồ thị đơn vô hướng G:=(V,E) được gọi là hai phía nếu tồn tại một
phân hoạch tập đỉnh V thành hai tập con X1 và X2 độc lập, rời nhau sao cho bất
kì cạnh nào của đồ thị cũng nối một đỉnh thuộc X1 với một đỉnh thuộc X2 Khi
đó người ta còn kí hiệu là: G:=(X1X2,E) với các phân hoạch X1, X2 và gọi
một tập (chẳng hạn X1) là tập các đỉnh trái và tập còn lại (chẳng hạn X2) là tập
Formatted: Font: 14 pt Formatted: Outline numbered + Level: 1 +
Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at: 0" + Tab after: 0.25" + Indent at: 0.25"
Formatted: Tab stops: 0.5", List tab + Not at
Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at: 0" + Tab after: 0.25" + Indent at: 0.25", Tab stops: 0.5", List tab + Not at 0.25"
Trang 16các đỉnh phải của đồ thị hai phía G Các đỉnh thuộc X1 gọi là các X1_đỉnh, các
đỉnh thuộc X2 gọi là các X2_đỉnh
Nếu |X1|=|X2| thì G được gọi là đồ thị hai phía cân bằng
Ví dụ:
Hình 3333 Đồ thị hai phía có chu trình
1.1.2.1.1.3 Đồ thị hai phía đầy đủĐồ thị hai phía đầy đủ
Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt
Trang 17Cho G = (V,E) là một đồ thị vô hướng hai phía, một phân hoạch V thành
hai tập con X1 và X2 (X1 ≠ ≠ X2 và X1 X2 = ), sao cho không có cạnh
nối giữa 2 điểm trong cùng một tập con Khi đó G được gọi là hai phía đầy đủ
nếu: Với mọi cặp đỉnh (i,j) mà iX1 và j X2 thì có đúng một cạnh nối i và j, ij
là một cạnh trong E Một đồ thị hai phía đầy đủ với các phân chia kích thước
|X1| = m, |X2| = n được kí hiệu là Km,n Hai đồ thị mà có kí hiệu giống nhau thì
chúng đẳng cấu
- Đồ thị hai phía đầy đủ Km,n có: m+n đỉnh, m.n cạnh
- Các dạng đồ thị đầy đủ hai phía:
K1,n với đồ thị hình sao
K1,n với đồ thị hình vuốt cây
Trang 18 Km,n với m≠n
Km,n với m = n
1.2 Bài toán ghép cặp không trọng
1.2.1 Bài toán ghép cặp không trọngBài toán
Bài toán
Cho một đồ thị hai phía G = (X1X2,E) ở đây X1 là các tập đỉnh trái và X2
là tập các đỉnh phải của G X1={x1[1], x1[2],…, x1[m]}, X2={x2[1], x2[2],…,
x2[n]}
Formatted: Font: Italic
Formatted: Font: Italic Formatted: Bullets and Numbering Formatted: Indent: Left: 0.13", No bullets or
numbering
Formatted: Font: 14 pt Formatted: Indent: First line: 0.25" Formatted: Indent: Left: 0.13", First line:
0.25"
Formatted: Indent: First line: 0.25" Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic
Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic
Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt
Trang 19Một bộ ghép (matching) của G là một tập các cạnh của G đôi một không
- Các cạnh trong M gọi là các cạnh đã ghép, các cạnh khác là chưa ghép
Nếu định hướng lại các cạnh của đồ thị thành cung, những cạnh chưa ghép
được định hướng từ X1 sang X2, những cạnh đã ghép định hướng từ X2 về X1
.Trên đồ thị định hướng đó: Một đường đi xuất phát từ một X1_đỉnh chưa
ghép gọi là đường pha (alternating path), một đường đi từ một X1_đỉnh chưa
ghép tới một X2_đỉnh chưa ghép gọi là đường mở (augmenting path)
Một cách dễ hiểu, có thể quan niệm như sau:
- Một đường pha là một đường đi đơn trong G bắt đầu bằng một
X 1 _đỉnh chưa ghép, đi theo một cạnh chưa ghép sang X2 , rồi đến một cạnh đã
ghép về X1, rồi lại đến một cạnh chưa ghép sang X2… cứ xen kẽ nhau như
Trang 20Đường (x1[3], x2[3], x1[2], x2[1], x1[1], x2[3]) là đường mở
1.2.2 Thuật toán đường mở
Thuật toán đường mở
Thuật toán đường mở để tìm một bộ ghép lớn nhất cho bài toán ghép cặp
phát biểu như sau:
Bước 1:
Bắt đầu từ một bộ ghép bất kỳ M (thông thường bộ ghép được khởi gán
bằng bộ ghép rỗng hay được tìm bằng các thuật toán tham lam)
Bước 2:
Tìm một đường mở
Bước 3:
Nếu bước 2 tìm được đường mở thì mở rộng bộ ghép M: Trên đường mở,
loại bỏ những cạnh đã ghép khỏi M và thêm vào M những cạnh chưa ghép
Sau đó lặp lại bước 2
Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt
Formatted: Outline numbered + Level: 3 +
Numbering Style: 1, 2, 3, … + Start at: 2 + Alignment: Left + Aligned at: 0.38" + Tab after: 0.88" + Indent at: 0.88"
Formatted: Font: 14 pt Formatted: Level 2, Outline numbered +
Level: 2 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at: 0" + Tab after: 0.25" + Indent at: 0.25"
Formatted: Indent: First line: 0.25"
Trang 21Nếu bước 2 không tìm được đường mở thì thuật toán kết thúc
* Mã giả thuật toán:
Input: Đồ thị hai phía G = (X1X2,E), X1={x1[1], x1[2],…, x1[m]}, X2={x2[1], x2[2],…, x2[n]}
Formatted: Indent: First line: 0", Space After:
0 pt, Line spacing: single
Formatted: Space After: 0 pt, Line spacing:
single
Formatted: Font: 14 pt Formatted: Indent: First line: 0.38" Formatted: Font: (Default) Arial, 14 pt Formatted: Indent: First line: 0.38", Space
After: 0 pt, Line spacing: single
Formatted: Font: 14 pt Formatted: Indent: First line: 0.38"
Trang 22Vậy thì ta sẽ loại đi các cạnh (x2[2], x1[2]) và (x2[1], x1[1]) trong bộ
Cho một đồ thị hai phía G = (X1X2,E) X1={x1[1], x1[2],…, x1[m]},
X2={x2[1], x2[2],…, x2[n]} Được cho bởi ma trận vuông C cỡ kk, c[i, j] =
trọng số cạnh nối đỉnh x1[i] với x2[j] Giả thiết c[i, j]0 (i, j)
Bài toán ghép cặp với trọng số cực tiểu là tìm một bộ ghép đầy đủ trọng số
nhỏ nhất
Hai định lý sau đây tuy rất đơn giản nhưng là những định lý quan trọng tạo
cơ sở cho thuật toán sẽ trình bày
Định lý 1: Loại bỏ khỏi G những cạnh trọng số lớn hơn 0 Nếu những
cạnh trọng số 0 còn lại tạo ra bộ ghép k cạnh trong G thì đây là bộ ghép cần
tìm
Chứng minh: theo giả thiết, các cạnh của G mang trọng số không âm nên
bấy kỳ bộ ghép nào trong G cũng có trọng số không âm, mà bộ ghép ở trên
mang trọng số 0, nên tất nhiên đó là bộ ghép đầy đủ trọng số nhỏ nhất
Định lý 2: Với đỉnh x1[i], nếu ta cộng thêm một số (dương hay âm) vào
tất cả những cạnh liên thuộc với x1[i] (tương đương với việc cộng thêm vào
tất cả các phần tử thuộc hàng i của ma trận C) thì không ảnh hưởng tới bộ
Formatted: Font: 14 pt Formatted: None, No bullets or numbering Formatted: Indent: Left: 0", First line: 0.25",
Outline numbered + Level: 3 + Numbering Style: 1, 2, 3, … + Start at: 5 + Alignment: Left + Aligned at: 0" + Tab after: 0.25" + Indent at: 0.25"
Formatted: Indent: First line: 0.25"
Trang 23Chứng minh: Với một bộ ghép đầy đủ bất kỳ thì có một và chỉ một cạnh
ghép với x1[i] Nên việc cộng thêm vào tất cả các cạnh liên thuộc với x1[i]
sẽ làm tăng trọng số bộ ghép đó lên Vì vậy nếu như ban đầu, M là bộ ghép
đầy đủ trọng số nhỏ nhất thì sau thao tác trên, M vẫn là bộ ghép đầy đủ trọng
Nếu ta định hướng lại các 0_cạnh theo cách: Những 0_cạnh chưa ghép
cho hướng từ tập X1 sang tập X2, những 0_cạnh đã ghép cho hướng từ tập X2
về tập X1 Khi đó:
- Đường pha là một đường đi cơ bản xuất phát từ một X1_ đỉnh chưa ghép
đi theo các 0_cạnh đã định hướng ở trên Như vậy dọc trên đường pha, các
0_cạnh chưa ghép và những 0_cạnh đã ghép xen kẽ nhau Vì đường pha chỉ là
đường đi cơ bản trên đồ thị định hướng nên việc xác định những đỉnh nào có
thể đến được từ x X1 bằng một đường pha có thể sử dụng các thuật toán tìm
kiếm trên đồ thị Những đỉnh và những cạnh được duyệt qua tạo thành một
Formatted: Indent: Left: 0.25", Outline
numbered + Level: 3 + Numbering Style: 1, 2,
3, … + Start at: 1 + Alignment: Left + Aligned at: 0.5" + Tab after: 1" + Indent at: 1", Tab stops: Not at 1"
Formatted: Font: 14 pt, Portuguese (Brazil) Formatted: Indent: Left: 0.25", First line: 0" Formatted: Font: 14 pt
Formatted: Indent: Left: 0.25"
Formatted: Indent: Left: 0.25", First line: 0" Formatted: Indent: First line: 0.25" Formatted: Indent: First line: 0.29" Formatted: Font: Times New Roman, 14 pt Formatted: Font: 14 pt
Formatted: Font: Times New Roman, 14 pt Formatted: Font: 14 pt
Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: Times New Roman, 14 pt Formatted: Font: 14 pt
Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt
Trang 24a - Một đường mở là một đường pha đi từ một X1_ đỉnh chưa ghép tới
một X2_đỉnh chưa ghép
Như vậy:
b - Đường đi trực tiếp từ một X1_đỉnh chưa ghép tới một X2_đỉnh chưa
ghép qua một 0_cạnh chưa ghép cũng là một đường mở
- Dọc trên đường mở, số 0_cạnh chưa ghép nhiều hơn số 0_cạnh đã ghép
đúng 1 cạnh
1.3.3 Thuật toán Hungari
a Thuật toán Hungari
Bước 1: Khởi tạo
Một bộ ghép M :=
Bước 2: với mọi đỉnh x X1, ta tìm cách ghép x:
Bắt đầu từ đỉnh x, thử tìm đường mở bắt đầu ở x bằng thuật toán tìm kiếm
trên đồ thị Có hai khả năng có thể xảy ra:
c - Hoặc tìm được đường mở thì dọc theo đường mở, ta loại bỏ những
cạnh đã ghép khỏi M và thêm vào M những cạnh chưa ghép, ta được một bộ
ghép mới nhiều hơn bộ ghép cũ 1 cạnh và đỉnh x trở thành đã ghép
d - Hoặc không tìm được đường mở thì có thể xác định được:
VisitedX1= {Tập những X1_đỉnh có thể đến được từ x bằng một đường
bullets or numbering
Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Font: 14 pt Formatted: Indent: First line: 0.25", No
bullets or numbering
Formatted: Font: 14 pt Formatted: Indent: Hanging: 0.88", Outline
numbered + Level: 3 + Numbering Style: 1, 2,
3, … + Start at: 1 + Alignment: Left + Aligned at: 0.5" + Tab after: 1" + Indent at: 1", Tab stops: 0.63", List tab + Not at 1"
Formatted: Font: 14 pt
Formatted: Indent: First line: 0.29"
Formatted: Indent: First line: 0.29", No
Trang 25Gọi là trọng số nhỏ nhất của các cạnh nối giữa một đỉnh thuộc VisitedX1
với một đỉnh không thuộc VisitedX2 Dễ thấy >0 bởi nếu =0 thì tồn tại một
0_cạnh (x1, x2) với x1VisitedX1 và x2VisitedX2 Vì x đến được x1 bằng một
đường pha và (x1, x2) là một 0_cạnh nên x cũng đến được x2 bằng một đường
pha, dẫn tới x2 VisitedX2, điều này vô lý
Biến đổi đồ thị G: với x1 VisitedX1, trừ vào trọng số những cạnh liên
thuộc với x1, với x2 VisitedX2, cộng vào trọng số những cạnh liên thuộc
với x2
Lặp lại thủ tục tìm kiếm trên đồ thị thử tìm đường mở xuất phát ở x cho
tới khi tìm ra đường mở
Bước 3: Sau bước 2 thì mọi X1_đỉnh đều được ghép, in kết quả về bộ ghép
tìm được
* Mã giả thuật toán
Mã giả thuật toán
Input: Đồ thị hai phía G = (X1X2,E) X1={x1[1], x1[2],…, x1[m]}, X2={x2[1], x2[2],…,
Trang 26Cho một đồ thị hai phía G = (X1X2,E) X1={x1[1], x1[2],…, x1[m]},
X2={x2[1], x2[2],…, x2[n]} Được cho bởi ma trận vuông C cỡ kk, c[i, j] =
trọng số cạnh nối đỉnh x1[i] với x2[j] Giả thiết c[i, j]0 (i, j)
Bài toán ghép cặp với trọng số cực đại nhằm tìm ra một bộ ghép đầy đủ
Formatted: Indent: Left: 0", Hanging: 0.25",
Outline numbered + Level: 1 + Aligned at: 0" + Tab after: 0.25" + Indent at: 0"
Formatted: Indent: Hanging: 0.75", Outline
numbered + Level: 3 + Numbering Style: 1, 2,
3, … + Start at: 1 + Alignment: Left + Aligned at: 0.38" + Tab after: 0.88" + Indent at: 0.88", Tab stops: 0.63", List tab + Not at 0.88"
Formatted: Font: 14 pt Formatted: Indent: First line: 0.25" Formatted: Indent: Left: 0", First line: 0.25" Formatted: Indent: First line: 0.25"
Trang 271.4.2 Thuật toán
Thuật toán
Bài toán ghép cặp với trọng số cực đại cũng có thể giải nhờ phương pháp
Hungari bằng cách đổi dấu tất cả các phần tử ma trận chi phí
Bước 1: Khởi tạo:
M:=;
Khởi tạo hai dãy Fx1 và Fx2 thỏa mãn: i, j: Fx1[i] + Fx2[j] c[i, j];
chẳng hạn ta có thể đặt Fx1[i] := Phần tử lớn nhất trên dòng i của ma trận C và
đặt các Fx2[j] :=0
Bước 2: Với mọi đỉnh xX1 ta tìm cách ghép x:
Bắt đầu từ đỉnh x, thử tìm đường mở bắt đầu ở x, có hai khả năng xảy ra:
f - Hoặc tìm đường mở thì dọc theo đường mở, ta loại bỏ những cạnh
đã ghép khỏi M và thêm vào M những cạnh chưa ghép
g - Hoặc không tìm được đường mở thì xác định được:
VisitedX1 = {Tập những X1_đỉnh có thể đến được từ x bằng một đường
Với x1[i] VisitedX1: Fx1[i]:= Fx1[i] -
Formatted: Indent: Hanging: 0.75", Outline
numbered + Level: 3 + Numbering Style: 1, 2,
3, … + Start at: 1 + Alignment: Left + Aligned at: 0.38" + Tab after: 0.88" + Indent at: 0.88", Tab stops: 0.63", List tab + Not at 0.88"
Formatted: Font: 14 pt, Portuguese (Brazil) Formatted: Indent: First line: 0.25" Formatted: Font: 14 pt
Formatted: Font: Times New Roman, 14 pt Formatted: List Paragraph, Level 3, Indent:
First line: 0.25"
Formatted: Font: 14 pt Formatted: Font: 14 pt, Italic Formatted: Indent: First line: 0.32"
Formatted: Indent: First line: 0.29"
Formatted: Indent: First line: 0.29", No
bullets or numbering
Formatted: Font: 14 pt Formatted: Font: 14 pt
Formatted: Indent: First line: 0.25"
Trang 28Với x2[j] VisitedX2: Fx2[j]:= Fx2[j] +
Lặp lại thủ tục tìm đường mở xuất phát tại x cho tới khi tìm ra đường mở
Bước 3: Sau bước 2 thì mọi X1_đỉnh đều đã ghép, ta được một bộ ghép đầy
đủ k cạnh với trọng số lớn nhất
* Mã giả thuật toán:
* Mã giả thuật toán:
Input: Một đồ thị hai phía G = (X1X2,E) X1={x1[1], x1[2],…, x1[m]}, X2={x2[1],
x2[2],…, x2[n]} Được cho bở ma trận vuông C cỡ kk, c[i, j] = trọng số cạnh nối đỉnh x1[i] với
x2[j] Giả thiết c[i, j]0 (i, j)
Output: Bộ ghép đầy đủ trọng số cực đại
if (Không tìm thấy đường mở)
:= min{Fx1[i] + Fx2[j] – c[i,j];
Trang 29thêm vào M những cạnh chưa ghép;
endif;
End
1.5 Kết luận chương
1.2 Kết luận chương
Như vậy, chương 1 đã tổng quan một số vấn đề về đồ thị và đồ thị hai
phía Đây là những kiến thức cơ sở chuẩn bị cho những nghiên cứu tiếp theo
của bản luận văn này
Phần đầu của chương giới thiệu những khái niệm cơ bản về đồ thị và đồ
thị hai phía, một số dạng đồ thị Tiếp theo là các bài toán ghép cặp trên đồ thị
hai phía
Nội dung chính của chương tập trung vào tìm hiểu về đồ thị hai phía và
các bài toán ghép cặp cơ bản trên đồ thị hai phía Đây là những cơ sở quan
trọng để tiến hành ứng dụng thuật toán ghép cặp vào bài toán tuyển sinh sẽ
được trình bày ở các chương tiếp theo
Formatted: Font: Arial Narrow Formatted: Font: Arial Narrow Formatted: Font: Arial Narrow Formatted: Font: 13 pt
Formatted: Space Before: 2 pt, After: 3 pt
Formatted: Indent: Hanging: 0.69", Tab
stops: 0.38", List tab + Not at 0.69"
Formatted: Bullets and Numbering Formatted: Font: 14 pt
Formatted: None
Trang 30Chương 2: BÀI TOÁN GHÉP CẶP
Trong chương 2 trình bày bài toán ghép cặp tổng quát và bài toán hôn
nhân bền vững Bài toán hôn nhân bền vững là một trường hợp cụ thể của bài
toán ghép cặp và đây cũng là cơ sở để ứng dụng vào bài toán tuyển sinh đại
học ở nước ta
3.5.2.1 Giới thiệu bài toán
2.1.1 Phát biểu bài toán
Cho tập X và Y Mỗi phần tử của X có thể ghép vớ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 X với một số phần tử của
Y sao cho số cặp ghép là lớn nhất
2.1.2 Các định nghĩa
Các định nghĩa dưới đây được sử dụng cho bài toán ghép cặp:
Định nghĩa 1 (Ghép cặp): Cho 2 tập rời nhau C và S Một phép ghép :
C ∪ S → C ∪ S ∪ { } là một phép ghép một đối tượng trong một tập
cho một hoặc nhiều đối tượng trong tập khác hoặc một đối tượng rỗng Nếu
một đối tượng được ghép cặp với một đối tượng rỗng, chúng ta nói rằng các
đối tượng là "không ghép cặp được"
Một cách lý tưởng nhất đó là chúng ta phải thiết kế một thuật toán có thể
đáp ứng được những định nghĩa dưới cho bài toán ghép đôi:
Định nghĩa 2 (Tính hợp lý riêng): Một phép ghép μ là hợp lý riêng nếu
không tồn tại trường hợp: đối tượng i đã được ghép cặp với μ(i) nhưng đối
tượng này lại thấy không phù hợp với μ(i)
Formatted: Font: 14 pt Formatted: None
Formatted: Indent: Left: 0", First line: 0",
Numbered + Level: 1 + Numbering Style: 1, 2,
3, … + Start at: 1 + Alignment: Left + Aligned at: 0.25" + Tab after: 0.5" + Indent at: 0.5", Tab stops: Not at 0.5"
Formatted: None
Formatted: Bullets and Numbering
Formatted: Font: 14 pt Formatted: Font: 14 pt Formatted: Font: 14 pt Formatted: Font: (Default) Times New
Roman, 14 pt
Formatted: Font: 14 pt
Trang 31Định nghĩa 3 (Ghép cặp ổn định): Một phép ghép được gọi là ổn định
nếu và chỉ nếu nó là hợp lý riêng và không tồn tại một đối tượng i, mà với s ≠
μ(i) nhưng s i(i) và i s(s)
Trong đó : i : thích đối tượng i hơn
Một cặp ghép không ổn định là một phép ghép cặp mà nó không ổn định
Định nghĩa 4 (Ghép cặp tối ưu): Một phép ghép cặp ổn định là tối ưu
nếu tất cả các đối tượng được ghép đều tốt hơn so với bất kỳ phép ghép cặp
ổn định khác
Định nghĩa 5 (Chiến lược trung thực): Một cơ chế chi phối chiến lược
trung thực nếu nó chi phối tất cả các đối tượng đưa ra tập có thứ tự về tiêu
chuẩn lựa chọn thực sự của mình
2.1.3 Các trường hợp giải bài toán ghép cặp
Xét một bộ ghép M của G
Các đỉnh trong M gọi là các đỉnh đã ghép Các cạnh thuộc M gọi là cạnh
ghép, cạnh không thuộc M gọi là cạnh tự do
- Ý tưởng của giải thuật: Chúng ta bắt đầu với một bộ ghép M bất kỳ, nếu
M chứa mọi đỉnh trong X thì nó là bộ ghép cực đại Nếu không, ta chọn một
đỉnh U chưa ghép thuộc X và tìm kiếm một cách hệ thống cho một đường mở
M với gốc u
- Để tìm bộ ghép tối đa của một đồ thị hai phía G, ta dùng giải thuật
đường mở sau:
* Giải thuật đường mở:
- Mã giả thuật toán:
* Mã giả thuật toán:
Formatted: Font: 14 pt, Not Highlight Formatted: None
Formatted: Bullets and Numbering
Formatted: Indent: First line: 0.32" Formatted: Font: 14 pt, Not Highlight Formatted: Font: 14 pt, Not Highlight Formatted: Not Highlight
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Font: 13 pt
Formatted: Font: Times New Roman, 13 pt Formatted: Not Highlight
Formatted: Font: Arial Narrow, 12.5 pt, Not
Trang 32Input: Đồ thị hai phía G = (X 1 X 2 ,E), X 1 ={x 1 [1], x 1 [2],…, x 1 [m]}, X 2 ={x 2 [1], x 2 [2],…, x 2 [n]}
3.7.2.2 Bài toán hôn nhân bền vững
2.2.1 Giới thiệu bài toán
Hai nhà kinh tế David Gale và Lloyd Shapley đã nghiên cứu thuật toán
ghép cặp từ quan sát hết sức đơn giản: Trong một cộng đồng có một số lượng
như nhau người đàn ông và người phụ nữ độc thân muốn kết hôn Mỗi người
đàn ông đều có tiêu chuẩn lựa chọn riêng, dẫn tới chuyện có những người phụ
nữ mà anh ta muốn ghép đôi Những người phụ nữ cũng vậy, họ cũng có
những tiêu chuẩn riêng về những người đàn ông mà họ muốn ghép đôi
Rõ ràng không thể có chuyện người đàn ông nào cũng lấy được người
phụ nữ tuyệt vời nhất thế gian bởi người đó chỉ có một Và mỗi người phụ nữ
cũng không thể lấy được người đàn ông lý tưởng nhất vì anh chàng đó cũng
Numbered + Level: 1 + Numbering Style: 1, 2,
3, … + Start at: 2 + Alignment: Left + Aligned at: 0.25" + Tab after: 0.5" + Indent at: 0.5", Tab stops: Not at 0.5"
Trang 33Câu hỏi đặt ra trong các trường hợp đó là làm sao để thực hiện việc
ghép cặpmột cách có hiệu quả?
Có rất nhiều phương pháp được đưa ra để giải quyết cho vấn đề này
nhưng trong chương 2 này, em xin trình bày về bài toán hôn nhân bền vững
sử dụng thuật toán ghép cặp trong đồ thị hai phía
Việc sử dụng thuật toán ghép cặp đối với bài toán hôn nhân bền vững
đều mang lại những ý nghĩa nhất định:
- Trong một cộng đồng những người đến tuổi kết hôn, tìm được số
lượng tối đa các cặp vợ chồng phù hợp với nhau, giảm thiểu tình trạng độc
thân đến mức thấp nhất
- Hơn nữa, nếu nguyện vọng của mỗi người được biết đến, thì chúng ta
có thể chọn lựa được người hưởng lợi nhiều hơn trong quá trình lựa chọn hôn
nhân?
Bài toán này có thể áp dụng hữu ích đối với những trung tâm môi giới
hôn nhân hay những trang web hẹn hò qua mạng
2.2.2 Đặt bài toán
Bài toán ghép cặp là một dạng của bài toán ghép cặp không trọng:
Cho một tập những người đàn ông M = {m1, , mn}
Trang 34Ví dụ: Một tập gồm 3 người đàn ông: M= {m1 ,m2 ,m3 }
Một tập gồm 3 người phụ nữ: W={w1 ,w2 ,w3 }
Tập có thứ tự về tiêu chuẩn lựa chọn của người đàn ông m1: Sm1 ={w2 ,w3 ,w1 }
Tập có thứ tự về tiêu chuẩn lựa chọn của người đàn ông m2: Sm2 ={w1 ,w3 ,w2 }
Tập có thứ tự về tiêu chuẩn lựa chọn của người đàn ông m3: Sm3 ={w3 ,w2 ,w1 }
Tập có thứ tự về tiêu chuẩn lựa chọn của người phụ nữ w1: Sw1 = {m1 ,m2 ,m3 }
Tập có thứ tự về tiêu chuẩn lựa chọn của người phụ nữ w2: Sw2 = {m2 ,m1 ,m3 }
Tập có thứ tự về tiêu chuẩn lựa chọn của người phụ nữ w3: Sw3 = {m2 ,m3, m1 }
- Mục đích của bài toán hôn nhân bền vững là để tìm thấy một phép ghép cặp
tối ưu một-một giữa những người đàn ông và phụ nữ càng nhiều càng tốt
- Những người này được ghép cặp với nhau sao cho các cuộc hôn nhân này
bền vững theo nghĩa hôn nhân, tức là không tồn tại một cặp nào mà người
chồng bên cặp này lại thích người vợ bên cặp kia hơn vợ mình, đồng thời
người vợ bên cặp kia lại cũng thích người chồng bên cặp này hơn chồng
mình
2.2.3 Các đặc trưng của bài toán
Do con người có những đặc điểm khác biệt, phức tạp về tâm lý, nên bài
toán hôn nhân bền vững có những đặc trưng riêng:
- Những người đàn ông và những người phụ nữ trong thị trường hôn nhân
đều muốn kết hôn người thích kết hôn với họ Tập có thứ tự về tiêu chuẩn lựa
chọn của mỗi người có thể không rõ ràng nếu họ biết thứ tự của mình trong
tiêu chuẩn lựa chọn của những người khác
Formatted: Font: 14 pt, Condensed by 0.3 pt
Formatted: Font: 14 pt Formatted: Indent: First line: 0"
Trang 35- Trong quá trình trao đổi gặp gỡ, sự thay đổi về tâm lí, suy nghĩ, cảm xúc
là điều không thể tránh khỏi Những thay đổi trong suy nghĩ này sẽ dẫn đến sự thay đổi về tập có thứ tự về tiêu chuẩn lựa chọn của mỗi người
- Trong số những người muốn kết hôn, chắc chắn sẽ có những người sẽ được yêu thích hơn, người được yêu thích này sẽ chỉ thích nhiều nhất một người Vì vậy tối đa sẽ chỉ có một người đạt được lựa chọn yêu thích nhất của mình
2.2.4 Điều kiện giải bài toán
- Do có các yếu tố đặc trưng trên, nên khi thực hiện thuật toán ghép cặp trong bài toán hôn nhân bền vững phải có những điều kiện bắt buộc:
- Những người tham gia ghép cặp đưa ra tập có thứ tự về tiêu chuẩn lựa chọn của mình trước khi thực hiện thuật toán ghép đôi
- Tập có thứ tự này phải được cố định, không được phát sinh trong quá trình thực hiện thuật toán
- Tập có thứ tự này phải hoàn toàn xuất phát từ bản thân những người tham gia ghép đôi, nó không bị ảnh hưởng bởi bất kì yếu tố bên ngoài nào khác Nếu điều này không được thực hiện, kết quả bài toán sẽ bị ảnh hưởng
về lâu dài
- Khi thực hiện thuật toán, chỉ xét tới những người nằm trong tập có thứ tự
về tiêu chuẩn lựa chọn của mỗi người Không xét tới những người nằm ngoài tập có thứ tự về tiêu cuẩn lựa chọn này
- Các điều kiện trên phải bắt buộc thực hiện mới dẫn đến kết quả ổn định bền vững của bài toán
2.2.5 Thuật toán cho bài toán hôn nhân bền vững
Trang 362.2.5.1 a Ý tưởng và lược đồ thuật toán
Thuật toán Gale-Shapley được xây dựng để giải quyết bài toán Kết quả
bài toán sẽ khác nhau với trường hợp ai là người đề nghị trước Trong phần
đầu tiên, em xin trình bày thuật toán với trường hợp những người đàn ông đề
nghị trước
Thuật toán hoạt động theo cách sau đây:
Bước 1: Sau khi mỗi người đưa ra tập có thứ tự về tiêu chuẩn lựa chọn
của mình Mỗi người đàn ông sẽ ngỏ lời với người phụ nữ mà mình thích
nhất
Vì trong nhiều trường hợp một số người phụ nữ sẽ cùng được yêu thích
nên họ sẽ nhận được nhiều đề nghị Bởi vây, những người phụ nữ được nhiều
người đàn ông ngỏ lời sẽ chỉ giữ lại đề nghị của người mà cô ấy thấy thích
nhất trên danh sách và từ chối những người khác
Bước 2: Những người đàn ông bị từ chối ở vòng trước sẽ tiếp tục ngỏ
lời tới người mà mình thích tiếp theo
Quá trình này tiếp tục cho đến khi min{n, k} người đều đã nhận được một
đề nghị, cơ chế chấm dứt và mỗi người nhận được lời đề nghị sẽ kết hôn với
người có trên danh sách của mình
Thuật toán Gale-shapley sẽ dẫn đến một bộ ổn định của kết quả Đó là tối
ưu cho "các bên đề xuất" trong một cách ghép cặp phù hợp với cả hai bên
Có thể thấy rằng, thuật toán Gale-Shapley là một dạng thuật toán khác để
tìm bộ ghép cực đại trong bài toán ghép cặp không trọng
* Mã giả:
Formatted: Indent: Left: 0.5", First line:
0.13", Outline numbered + Level: 2 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Right + Aligned at: 0" + Tab after: 0.25" + Indent at: 0.25", Tab stops: 0.63", List tab + Not at 0.25"
Formatted: Font: Times New Roman, 14 pt Formatted: Font: 14 pt
Formatted: Font: Times New Roman, 14 pt Formatted: Font: 14 pt
Formatted: Font: Arial Narrow
Trang 37Formatted: Font: Arial Narrow
Formatted: Space After: 0 pt
Trang 38Hình 10101010 Chú thích trong 1 ô của bảng
Ví dụ 1: Trường hợp số người đàn ông và số người phụ nữ bằng nhau:
Bảng 1111 Tập có thứ tự về tiêu chuẩn lựa chọn của 3 người đàn ông m 1 , m 2 ,
Trang 40 Ví dụ 3: Trường hợp số người đàn ông và số người phụ nữ không bằng nhau:
Bảng 3333 Tập có thứ tự về tiêu chuẩn lựa chọn của 4 người đàn ông m 1 , m 2 , m 3 ,
Bước 5 M3 m4, m2 m1Bước 6 M3 m2 m1, m4
Formatted: Indent: Left: 0.25", Hanging:
0.25", Bulleted + Level: 1 + Aligned at: 0.25" + Indent at: 0.5"