1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tóm tắt: Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.

27 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.Nghiên cứu một số biến thể của bài toán hôn nhân ổn định theo tiếp cận heuristic.BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN HÀN LÂM KHOA HỌC VÀ CÔNG NGHỆ VIỆT NAM HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ NGUYỄN THỊ UYÊN NGHIÊN CỨU MỘT SỐ BIẾN THỂ CỦA BÀI TOÁN HÔN NHÂN ỔN ĐỊNH THEO TIẾP CẬN HEURISTIC Chuyê.

BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN HÀN LÂM KHOA HỌC VÀ CÔNG NGHỆ VIỆT NAM HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ NGUYỄN THỊ UYÊN NGHIÊN CỨU MỘT SỐ BIẾN THỂ CỦA BÀI TỐN HƠN NHÂN ỔN ĐỊNH THEO TIẾP CẬN HEURISTIC Chuyên ngành: Khoa học máy tính Mã số: 48 01 01 TÓM TẮT LUẬN ÁN TIẾN SĨ NGÀNH MÁY TÍNH Hà Nội - 2023 Cơng trình hồn thành tại: Học viện Khoa học Cơng nghệ - Viện Hàn lâm Khoa học Công nghệ Việt Nam Người hướng dẫn khoa học 1: PGS.TS Hoàng Hữu Việt Người hướng dẫn khoa học 2: PGS.TS Nguyễn Long Giang Phản biện 1: Phản biện 2: Phản biện 3: Luận án bảo vệ trước Hội đồng chấm luận án tiến sĩ, họp Học viện Khoa học Công nghệ - Viện Hàn lâm Khoa học Công nghệ Việt Nam vào hồi giờ, ngày tháng năm 2023 Có thể tìm hiểu luận án tại: - Thư viện Học viện Khoa học Công nghệ - Thư viện Quốc gia Việt Nam Hà Nội - 2023 DANH MỤC CÁC CƠNG TRÌNH CƠNG BỐ Các cơng bố sử dụng Luận án [A.1]Hoang Huu Viet, Nguyen Thi Uyen, SeungGwan Lee,TaeChoong Chung, and Le Hong Trang, “A Max-Conflicts based Heuristic Search for the Stable Marriage Problem with Ties and Incomplete Lists”, Journal of Heuristics (SCIE - Q2), vol 27, no.3, pp 439–458, 2021 [A.2]Hoang Huu Viet, Nguyen Thi Uyen, Cao Thanh Sơn, and TaeChoong Chung: A Heuristic Repair Algorithm for the Maximum Stable Mar- riage Problem with Ties and Incomplete Lists, in Proceedings of the 34th Australasian Joint Conference on Artificial Intelligence 2022 (AI 2022), Sydney, Australia, Feb.2-4, 2022, pp.494-506, Lecture Notes in Artificial Intelligence 13151 (SCOPUS), Springer, ISBN 978-3-030- 97545-6 [A.3] Nguyen Thi Uyen, Nguyen Long Giang, Nguyen Truong Thang, and Hoang Huu Viet: A min-conflicts algorithm for maximum stable match- ings of the hospitals/residents problem with ties, in Proceedings of the 14th International Conference on Computing and Communication Technologies (RIVF 2020), RMIT, Ho Chi Minh, Apr.6-7, 2020, pp.1- 6, Lecture Notes in Computer Science (SCOPUS), Springer, ISBN 978-1-7281-5377-3 [A.4] Nguyen Thi Uyen, Nguyen Long Giang, Tran Xuan Sang and Hoang Huu Viet “An efficient heuristics algorithm for solving the Student- Project Allocation with Preferences over Projects”, 24th Hội thảo Quốc gia (VNICT 2021), Thai Nguyen, Việt Nam, Dec 13-14, pp 1-6, 2021 [A.5] Nguyen Thi Uyen, Giang L Nguyen, Canh V Pham, Tran Xuan Sang and Hoang Huu Viet: “A Heuristic Algorithm for the Student-Project Allocation Problem with Lecturer Preferences over Students with Ties, in Proceedings of the 11th International Conference on Computational Data and Social Networks (CSoNET 2022), Tampa, Florida, USA, Dec 5-7, 2022, in Press, Lecture Notes in Computer Science (SCOPUS), Springer [B.1] Nguyen Thi Uyen, Giang L Nguyen and Hoang Huu Viet, “An effi- cient Heuristic search algorithm for the Hospitals/Residents with Ties problem”, Applied Artificial Intelligence (đang gửi tạp chí) [B.2] Nguyen Thi Uyen, Nguyen Long Giang and Hoang Huu Viet “Faster and Simpler Heuristic Algorithm for the Student-Project Allocation with Preferences over Projects”, International Journal of Fuzzy Logic and Intelligent Systems (đang gửi tạp chí) Các cơng bố khác [C.1] Nguyen Thi Uyen and Tran Xuan Sang, “An efficient algorithm to find a maximum weakly stable matching for SPA-ST problem, in Proceed- ings of the 21st International Conference on Artificial Intelligence and Soft Computing (ICAISC 2022), Zakopane, Poland, Jun 18-22, 2022, in Press, Lecture Notes in Artificial Intelligence (SCOPUS), Springer [C.2] Hoang Huu Viet, Nguyen Thi Uyen, Cao Thanh Sơn, and Le Hong Trang, “Một thuật tốn tìm kiếm cục giải tốn phân cơng địa điểm thực tập cho sinh viên”, 23th Hội thảo Quốc gia (VNICT 2020), Hạ Long, Việt Nam, Nov 5-6, pp 271–276, 2020 MỞ ĐẦU Tính cấp thiết đề tài luận án Bài tốn nhân ổn định (Stable Marriage Problem, SMP) toán ghép cặp tiếng giới thiệu lần Gale Shapley năm 1962 Bài toán SMP gồm tập n người nam tập n người nữ, người xếp hạng “thích” người khác giới theo thứ tự ưu tiên từ đến n danh sách xếp hạng Mục đích tốn tìm phép ghép nam nữ cho thỏa mãn ổn định (stable) theo tiêu chuẩn Gần đây, tốn SMP nhận nhiều quan tâm nhà nghiên cứu lĩnh vực Trí tuệ nhân tạo Tính tốn tối ưu - Về mặt thực tiễn: Năm 2012, Shapley Roth trao giải thưởng Nobel kinh tế thành tựu đạt dựa mơ hình xuất phát từ toán SMP lĩnh vực quản lý thị trường chứng khốn Mỹ Ngồi ra, tốn SMP có nhiều ứng dụng thực tế như: (i) toán phân bổ sinh viên thực tập tới doanh nghiệp; (ii) tốn phân cơng giảng viên hướng dẫn sinh viên thực đề tài; (iii) toán phân bổ nhà cho dân cư; (iv) tốn tối ưu hóa u cầu dịch vụ người dùng Internet tới nhà mạng viễn thông Vì vậy, cần nghiên cứu tốn nhân ổn định biến thể để tìm giải pháp tối ưu cho vấn đề ghép cặp ứng dụng thực tế -Về mặt khoa học: Một số biến thể toán SMP đề xuất gần như: (i) tốn nhân ổn định với thứ tự ưu tiên ngang (SMT), (ii) tốn nhân ổn định với danh sách khơng đầy đủ (SMI), (iii) tốn nhân ổn định với thứ tự ưu tiên ngang không đầy đủ (SMTI) Trong toán SMT SMTI, với việc xuất xếp hạng ngang danh sách xếp hạng, Irving cộng (2002) có ba điều kiện phép ghép ổn định xem xét bao gồm: ổn định yếu (weakly stable), ổn định mạnh (strongly stable) siêu ổn định (super-stable) Các tác giả chứng minh phép ghép ổn định yếu tồn tại, phép ghép ổn định mạnh siêu ổn định khơng tồn với thể toán SMT SMTI Ngoài ra, tác giả chứng minh, việc tìm phép ghép ổn định yếu với kích thước tối đa (MAX) tốn NP-khó Trong nghiên cứu này, luận án tập trung nghiên cứu tìm phép ghép ổn định yếu với kích thước tối đa (MAX), để đơn giản, luận án gọi phép ghép ổn định yếu phép ghép ổn định Để nghiên cứu toán này, cần nghiên cứu thuật tốn heuristic để tìm phép ghép ổn định yếu với kích thước tối đa cho MAX-SMTI biến thể Mục tiêu nghiên cứu: Mục tiêu nghiên cứu luận án tập vào hai nội dung sau: - Nghiên cứu tổng quan tốn nhân ổn định biến thể - Nghiên cứu đề xuất thuật toán heuristic để giải toán MAX-SMTI, MAX-HRT MAX-SPA Bố cục luận án: Bố cục Luận án gồm phần mở đầu bốn chương nội dung, phần kết luận danh mục tài liệu tham khảo - Chương Tổng quan tốn nhân ổn định Trong chương này, luận án trình bày tổng quan sở lý thuyết tình hình nghiên cứu tốn nhân ổn định biến thể - Chương Đề xuất thuật toán giải toán MAX-SMTI Trong chương này, luận án đề xuất 02 thuật toán để giải toán MAX-SMTI Các kết cơng bố tạp chí chun ngành SCIE hội thảo quốc tế có số SCOPUS - Chương Đề xuất thuật toán giải toán MAX-HRT Trong chương này, luận án đề xuất 02 thuật toán để giải toán MAX-HRT Các kết cơng bố hội thảo quốc tế có số SCOPUS - Chương Đề xuất thuật toán giải toán MAX-SPA Trong chương này, luận án đề xuất 02 thuật toán để giải toán MAX-SPA Các kết công bố hội thảo nước quốc tế có số SCOPUS CHƯƠNG TỔNG QUAN VỀ BÀI TỐN HƠN NHÂN ỔN ĐỊNH 1.1 Bài tốn nhân ổn định Một thể tốn SMP kích thước n, ký hiệu I, bao gồm tập gồm n người nam người nữ Mỗi người có danh sách xếp hạng, người xếp hạng ưu tiên người khác giới theo thứ tự định Cho ví dụ toán SMP gồm nam nữ thể Bảng 1.1 Gale Shapley (1962) trình bày thuật tốn tiếng gọi Bảng 1.1: Một thể toán SMP Danh sách xếp hạng mi ∈ M Danh sách xếp hạng wj ∈ W m1 : w4 w3 w1 w5 w2 w6 w8 w7 m2 : w2 w8 w4 w5 w3 w7 w1 w6 m3 : w5 w8 w1 w4 w2 w3 w6 w7 m4 : w6 w4 w3 w2 w5 w8 w1 w7 m5 : w6 w5 w4 w8 w1 w7 w2 w3 m6 : w7 w4 w2 w5 w6 w8 w1 w3 m7 : w8 w5 w6 w3 w7 w2 w1 w4 m8 : w4 w7 w1 w3 w5 w8 w2 w6 w1 : m4 m7 m3 m8 m1 m5 m2 m6 w2 : m5 m3 m4 m2 m1 m8 m6 m7 w3 : m2 m8 m6 m4 m3 m7 m5 m1 w4 : m5 m6 m8 m3 m4 m7 m1 m2 w5 : m1 m8 m5 m2 m3 m6 m4 m7 w6 : m8 m6 m2 m5 m1 m7 m4 m3 w7 : m5 m2 m8 m3 m6 m4 m7 m1 w8 : m4 m5 m7 m1 m6 m2 m8 m3 thuật tốn Gale-Shapley để tìm nghiệm tối ưu cho tập nam thời gian O(n2 ) Ngồi ra, số thuật tốn khác đề xuất thuật toán xấp xỉ, thuật tốn tìm kiếm heuristic, số thuật tốn khác Tuy nhiên, tốn SMP ứng dụng thực tế yêu cầu ràng buộc nghiêm ngặt danh sách xếp hạng, tức người nam phải xếp hạng đầy đủ người nữ ngược lại Do đó, năm gần số biến thể toán SMP đề xuất ứng dụng quan trọng thực tế 1.2 Biến thể tốn nhân ổn định Biến thể toán SMP gọi tốn nhân ổn định với danh sách xếp hạng ngang (Stable Marriage Problem with Ties, SMT), nghĩa người xếp hạng ưu tiên hai hay nhiều người khác giới theo thứ tự Biến thể khác SMP gọi toán hôn nhân ổn định với danh sách xếp hạng không đầy đủ (Stable Marriage Problem with Incomplete, SMI), nghĩa người xếp hạng ưu tiên với người khác giới danh sách xếp hạng họ Nếu kết hợp hai biến thể SMT SMI, gọi tốn nhân ổn định với danh sách xếp hạng ngang không đầy đủ (Stable marriage problem with Ties and Incomplete lists, SMTI) Mục tiêu tốn SMTI tìm phép ghép khơng ổn định mà cịn có nhiều số người nam ghép, hay cịn gọi tốn MAX-SMTI Manlove cộng (2008) chứng minh MAX-SMTI tốn NP-khó, danh sách xếp hạng có thứ tự xếp hạng ưu tiên ngang từ phía người nam người nữ Vì vậy, luận án tập trung nghiên cứu toán SMTI biến thể Định nghĩa 1.1 (Thể SMTI) Một thể I (instance) tốn SMTI kích thước n bao gồm tập M = {m1 , m2 ,· · · , mn } người nam tập W = {w1 , w2 , · · · , wn } người nữ, người xếp hạng ưu tiên số người khác giới theo thứ tự ngang danh sách xếp hạng Ký hiệu rank(mi , wj ) thứ hạng wj ∈ W danh sách xếp hạng mi ∈ M rank(wj , mi ) thứ hạng mi ∈ M danh sách xếp hạng wj ∈ W Nếu mi ∈ M thực thích wj ∈ W wk ∈ W nghĩa rank(mi , wj ) < rank(mi , wk ) mi ∈ M thích wj ∈ W wk ∈ W nghĩa rank(mi , wj ) = rank(mi , wk ), tương tự ký hiệu dùng từ phía người nữ Định nghĩa 1.2 (Cặp chấp nhận) Một cặp (mi , wj ) ∈ M × W cặp chấp nhận, rank(mi , wj ) > rank(wj , mi ) > Định nghĩa 1.3 (Phép ghép) Một phép ghép tập M = {(mi , wj ) ∈ M × W |rank(mi , wj ) > rank(wj , mi ) > 0}, mi ∈ M ghép với wj ∈ W ngược lại Nếu (mi , wj ) ∈ M , mi wj bạn ghép nhau, ký hiệu M (mi ) = wj M (wj ) = mi Nếu mi ∈ M khơng ghép M , mi gọi độc thân ký hiệu M (mi ) = ∅ Tương tự, wj ∈ W không ghép M , wj gọi độc thân ký hiệu M (wj ) = ∅ Định nghĩa 1.4 (Cặp chặn) Một cặp (mi , wj ) ∈ M × W cặp chặn cho phép ghép M thỏa mãn điều kiện sau: rank(mi , wj ) > rank(wj , mi ) > 0; M (mi ) = ∅ rank(mi , wj ) < rank(mi , M (mi )); M (wj ) = ∅ rank(wj , mi ) < rank(wj , M (wj )) Định nghĩa 1.5 (Cặp chặn vượt trội) Một cặp chặn (mi , wj ) ∈ M × W vượt trội cặp chặn (mi , wk ) ∈ M × W rank(mi , wj ) < rank(mi , wk ) Định nghĩa 1.6 (Cặp chặn trội nhất) Một cặp chặn (mi , wj ) ∈ M × W gọi cặp chặn trội theo xếp hạng mi không tồn cặp chặn (mi , wk ) mà rank(mi , wk ) < rank(mi , wj ) Định nghĩa 1.7 (Phép ghép ổn định) Một phép ghép M ổn định không tồn cặp chặn (mi , wj ) ∈ M × W cho M , ngược lại M gọi không ổn định Định nghĩa 1.8 (Kích thước phép ghép) Kích thước phép phép ghép ổn định M tổng số cặp (mi , wj ) ∈ M ký hiệu |M | Định nghĩa 1.9 (Phép ghép hoàn chỉnh) Một phép ghép ổn định M gọi hoàn chỉnh |M | = n, ngược lại M gọi khơng hồn chỉnh Một thể toán SMTI bao gồm người nam người nữ mơ tả Bảng 1.2 Bảng 1.2: Ví dụ thể SMTI Danh sách xếp hạng mi ∈ M Danh sách xếp hạng wj ∈ W m1 : w1 m2 : w5 (w3 w4 w6 ) (w7 w8 ) m3 : w4 (w2 w5 ) m4 : (w5 w6 ) w8 w7 m5 : (w1 w3 ) (w4 w5 ) w2 m6 : (w4 w7 ) w1 (w2 w3 w8 ) m7 : w4 w6 (w3 w5 w7 ) m8 : w5 w6 w3 w1 : m1 (m5 m6 ) w2 : (m3 m5 m6 ) w3 : m6 (m7 m8 ) m5 m2 w4 : m3 (m2 m6 m7 ) m5 w5 : (m5 m7 m8 ) (m3 m4 ) m2 w6 : m2 m7 (m4 m8 ) w7 : (m2 m6 ) m7 m4 w8 : (m2 m4 ) m6 Một số thuật toán đề xuất để giải toán MAX-SMTI sau: i) Thuật toán xấp xỉ: Các thuật tốn xấp xỉ đề xuất nhìn chung giải tốt cho toán MAX-SMTI với chất lượng nghiệm tương đối tốt với tỷ lệ gần tăng dần lên so với thuật toán đề xuất trước Hiện tại, thuật tốn xấp xỉ có tỷ lệ gần tốt 3/2 ii) Thuật toán heuristic: Các phương pháp lập trình ràng buộc để giải toán SMTI số nhà nghiên cứu đề xuất Gent Prosser (2002) đề xuất nghiên cứu thực nghiệm toán MAX-SMTI Đầu tiên, tác giả đề xuất thuật toán để tạo ngẫu nhiên thể SMTI với ba tham số (n, p1 , p2 ), n số lượng người nam hay nữ, p1 xác suất không đầy đủ p2 xác suất ưu tiên xếp hạng ngang Sau đó, họ áp dụng phương pháp lập trình ràng buộc để xem xét ảnh hưởng tham số p1 p2 đến chất lượng giải pháp Gelain cộng (2013) đề xuất thuật tốn tìm kiếm cục bộ, LTIU để giải tốn MAX-SMTI Munera cộng (2015) mơ hình hóa tốn SMTI áp dụng lập trình ràng buộc để giải cho toán MAX-SMTI iii) Các hướng tiếp cận khác: Ngoài ra, số nhà nghiên cứu đề xuất phương pháp tiếp cận để giải tốn SMTI như: sử dụng mơ hình quy hoạch ngun, sử dụng mơ hình SAT model sử dụng đồ thị phân đơi, sử dụng mơ hình quy hoạch nguyên tuyến tính Luận án tập trung nghiên cứu thuật tốn theo hướng tiếp cận tìm kiếm heuristic để giải toán MAX-SMTI hiệu thời gian chất lượng nghiệm so với nghiên cứu trước 1.3 Một số ứng dụng mở rộng toán SMTI 1.3.1 Bài toán Hospitals/Residents with Ties Bài toán HRT mở rộng toán SMTI Một thể HRT kích thước n × m gồm tập R = {r1 , r2 , · · · , rn } sinh viên tập H = {h1 , h2 , · · · , hm } doanh nghiệp, ri ∈ R xếp hạng tập H theo thứ tự ưu tiên không nghiêm ngặt, hi ∈ H xếp hạng tập R theo thứ tự ưu tiên không nghiêm ngặt hj ∈ H có số lượng tối đa cj ∈ Z+ sinh viên nhận thực tập Mục tiêu tốn HRT tìm phép ghép ổn định M = {(ri , hj ) ∈ R × H} với kích thước lớn nhất, tức tốn MAX-HRT Để mở rộng tính ứng dụng tốn HRT vấn đề hỗ trợ tìm kiếm việc làm cho sinh viên vừa trường nói chung bác sĩ thực tập nói riêng, luận án xem xét toán HRT dạng toán ứng dụng phân bổ sinh viên thực tập tới doanh nghiệp luận án xem sinh viên bác sĩ thực tập doanh nghiệp bệnh viện Mục tiêu tốn HRT tìm phép ghép ổn định sinh viên doanh nghiệp cho tất sinh viên nhận vị trí thực tập phù hợp doanh nghiệp, gọi toán MAX-HRT Một thể HRT gồm sinh viên doanh nghiệp mô tả Bảng 1.3 Bảng 1.3: Ví dụ thể HRT Danh sách xếp hạng ri ∈ R Danh sách xếp hạng hj ∈ H r1 : h1 h3 h2 r2 : h1 (h5 h4 ) h3 r3 : h1 h5 h2 r4 : h1 (h2 h4 ) r5 : h3 h1 h2 r6 : (h3 h2 ) h1 h5 r7 : h3 h4 h5 h1 r8 : h5 h4 Số sinh viên tối đa hj ∈ H: c1 h1 : r3 (r7 r5 r2 ) r4 r6 r1 h2 : r5 r6 (r3 r4 ) r1 h3 : (r5 r2 ) r6 r1 r7 h4 : r8 r2 r4 r7 h5 : r3 (r7 r6 r8 ) r2 = 2, c2 = 3, c3 = c4 = c5 = 1.3.2 Bài toán Student-Project Allocation Bài toán SPA nhà khoa học quan tâm nghiên cứu ứng dụng quan trọng trường đại học Một số biến thể toán SPA giới thiệu SPA-S, SPA-P SPA-ST Gần đây, biến thể SPA-P SPAST cộng đồng nghiên cứu quan tâm nhiều ứng dụng thực tế Vì vậy, luận án tập trung nghiên cứu hai biến thể toán SPA toán SPA-P Mục tiêu tốn tìm phép ghép ổn định với kích thước tối đa, tức có nhiều số sinh viên nhận đề tài thỏa mãn điều kiện ràng buộc số lượng sinh viên tối đa giảng viên đề tài (MAX-SPA) Một thể SPA-P gồm sinh viên, giảng viên đề tài Bảng 1.4 Bảng 1.4: Ví dụ thể SPA-P Danh sách xếp hạng si ∈ S Danh sách xếp hạng lk ∈ L s1 : p1 p3 p4 l1 : p1 p2 p3 s2 : p5 p1 l2 : p4 p5 s3 : p2 p5 s4 : p4 p2 s5 : p5 Số sinh viên tối đa pj ∈ P: c1 = c2 = c3 = c4 = 1, c5 = Số sinh viên tối đa lk ∈ L: d1 = 3, d2 = Một thể SPA-ST gồm sinh viên, giảng viên đề tài Bảng 1.5 Phần đề xuất thuật tốn tìm kiếm heuristic dựa xung đột tối đa (Max-Conflicts based heuristic search, viết tắt MCS) mô tả Thuật tốn 2.1 cho tốn MAX-SMTI Ý tưởng MCS phép ghép ngẫu nhiên, thuật tốn tìm tập cặp chặn vượt trội cặp chặn trội định nghĩa hàm heuristic để chọn cặp chặn cặp chặn trội tốt loại bỏ khỏi phép ghép MCS lặp lại tìm phép ghép hoàn chỉnh đạt đến số lặp tối đa Ký hiệu X = {(mi , wj ) | mi ∈ M, wj ∈ W} tập hợp cặp chặn vượt trội cặp chặn trội theo quan điểm nam cho phép ghép không ổn định M Với (mi , wj ) ∈ X, không tồn cặp chặn vượt trội (mi , wj ) theo quan điểm mi , nghĩa mi xuất lần, wj xuất nhiều lần X Gọi ubp(wj ) số cặp chặn trội tạo wj ∈ X, thuật toán định nghĩa hàm heuristic sau: h(mi ) = n × ubp(wj ) − rank(wj , mi ), ∀(mi , wj ) ∈ X Algorithm 2.2: Tìm tập cặp chặn trội nhất, X 10 11 12 13 14 15 Input: Phép ghép M Output: Tập cặp chặn trội X phép ghép M function Find_UBPs(M ) X := ∅; for (mỗi mi ∈ M) wj := M (mi ); while (∃wk ∈ W|rank(mi , wk ) > 0) wk := argmin(rank(mi , wk ) > 0); if (rank(mi , wk ) = rank(mi , wj )) then break; if ((mi , wk ) cặp chặn) then X := X ∪ (mi , wk ); break; else Xóa wk danh sách xếp hạng mi ; return X; end function 10 (2.1) Algorithm 2.3: Vượt qua cục địa phương 10 11 12 13 14 15 Input: Phép ghép M Output: Phép ghép M function Escape_Local_Minima(M ) if (với xác suất p ≤ 0.5) then U := {mi | M (mi ) = ∅}; Chọn ngẫu nhiên mj ∈ U ; for (mỗi wk ∈ danh sách xếp hạng mj ) if (M (wk ) ̸= ∅) then Xóa cặp (M (wk ), wk ) thành hai người độc thân, M (wk ) wk ; else V := {wi | M (wi ) = ∅}; Chọn ngẫu nhiên wj ∈ V ; for (mỗi mk ∈ danh sách xếp hạng wj ) if (M (mk ) ̸= ∅) then Xóa cặp (mk , M (mk )) thành hai người độc thân, mk M (mk ); return M ; end function Đầu tiên, MCS tìm tập hợp X cặp chặn trội cho M Thuật toán 2.2 Thứ hai, MCS kiểm tra X rỗng, tức M phép ghép ổn định Nếu phép ghép tìm khơng phải phép ghép hồn chỉnh MCS gọi Thuật tốn 2.3 để vượt qua điểm tối thiểu cục thực vòng lặp tiếp theo, ngược lại, MCS trả phép ghép hoàn chỉnh Thứ ba, MCS đếm số lượng cặp chặn trội nhất, ubp(wj ), tạo wj ∈ X xác định giá trị heuristic, h(mi ), cho mi ∈ X Thứ tư, MCS lấy ngẫu nhiên mj ∈ X với xác suất p nhỏ lấy mj ∈ X tương ứng với giá trị lớn h(mj ) Cuối cùng, MCS loại bỏ cặp chặn trội (mj , M (mj )) cho M để nhận phép ghép MCS thực lặp lại tìm phép ghép hoàn chỉnh đạt đến số bước lặp tối đa Các thuật tốn thực ngơn ngữ lập trình Matlab R2017a mơi trường máy tính cá nhân với cấu hình Core i7-8550U CPU 1.8 GHz 16 GB RAM hệ điều hành Windows-10 Các kết thuật toán MCS vượt trội so với LTIU AS thời gian thực chất lượng nghiệm tìm cho tốn MAX-SMTI kích thước lớn 11 Algorithm 2.4: Thuật tốn HR 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 Input: - Thể I SMTI - Bước lặp tối đa, max_iters Output: Phép ghép ổn định, M function Main(I) for ( mi ∈ M) M (mi ) := ∅; a(mi ) := 1; ▷ gán mi hoạt động c(mi ) := 0; ▷ gán biến đếm cho mi iter := 1; while iter ≤ max_iters mi := người nam hoạt động, i.e., a(mi ) = 1; if ∄a(mi ) = then if |M | = n then break; iter := iter + 1; M := Improve(M ); continue; if (∄wj ∈ W|rank(mi , wj ) > 0) then a(mi ) := 0; ▷ gán mi không hoạt động c(mi ) := c(mi ) + 1; ▷ tăng biến đếm mi continue; if tồn người nữ độc thân wj người mà mi thích then M (mi ) := wj ; a(mi ) := 0; else wj := người nữ người mà mi thích nhất; mk := M (wj ); if tồn người nữ độc thân wt mà rank(mk , wt ) = rank(mk , wj ) then repair(mi , mk ); if M (mi ) = ∅ rank(wj , mi ) < rank(wj , mk ) then repair(mi , mk ); rank(mk , wj ) := 0; else rank(mi , wj ) := 0; return M ; end function 12 Algorithm 2.5: Cải tiến kích thước phép ghép ổn định M 10 11 12 13 14 15 16 17 18 Input: Phép ổn định, M Output: Phép ghép M function Improve(M ) for người nam mi ∈ M cho M (mi ) = Khôi phục lại danh sách xếp hạng mi ; X := {}; for wj ∈ danh sách xếp hạng mi mk := M (wj ); if rank(mi , wj ) ≤ rank(mk , wj ) rank(wj , mi ) = rank(wj , mk ) then X := X ∪ {wj }; if X = ∅ then continue; for wj ∈ X mk := M (wj ); k := số lượng wt cho rank(mk , wt ) = rank(mk , wj ); h(wj ) := 1/k + (rank(wj , mi ) − rank(wj , mk )) × (1 − c(mk )); wj := argmin(h(wj )), ∀wj ∈ X; repair(mi , mk ), với mk := M (wj ); rank(mk , wj ) := 0; return M ; end function 2.2 Đề xuất thuật toán Heuristic-Repair Thuật toán HR đề xuất bao gồm thuật toán GS để tìm phép ghép ổn định hàm heuristic để cải thiện kích thước phép ghép tìm GS cho thể SMTI mơ tả Thuật tốn 2.4 Đầu tiên, HR tìm phép ghép ổn định cách cải tiến ý tưởng thuật tốn GS Sau đó, thuật tốn HR áp dụng lại thuật toán GS cải tiến Nếu phép ổn định tìm mà chưa đạt kích thước tối đa, HR gọi Thuật tốn 2.5 để cải thiện kích thước phép ghép M cách đề xuất hàm heuristic Thuật toán HR kết thúc tìm phép ghép ổn định với kích thước tối đa đạt đến số lần lặp tối đa Các thuật toán HR, GSA2 MCS thực phần mềm Matlab R2017b máy tính cá nhân có CPU Core i7-8550U 1,8 GHz RAM 16 GB, chạy Windows 10 Các kết thực nghiệm thuật toán HR hiệu thuật toán xấp xỉ GSA2 MCS thời gian thực chất lượng nghiệm cho toán MAX-SMTI 13 CHƯƠNG ĐỀ XUẤT CÁC THUẬT TOÁN GIẢI BÀI TOÁN MAX-HRT 3.1 Đề xuất thuật toán Min-Conflicts Phần đề xuất thuật toán Min-Conflicts, viết tắt MCA để giải toán MAX-HRT Algorithm 3.1: Thuật toán MCA 10 11 12 13 14 15 16 17 Input: - Thể I HRT - Xác suất nhỏ, p - Bước lặp tối đa, max_iters Output: Một phép ghép M function MCA(I) Khởi tạo ngẫu nhiên M ; Mbest := M ; fbest := n; iter := 0; while (iter ≤ max_iters) iter := iter + 1; [f (M ), X] := Find_Cost_And_UBPs(M ); if (X = ∅) then if (fbest > f (M )) then Mbest := M ; fbest := f (M ); if (fbest > 0) then M := phép ghép tạo ngẫu nhiên; continue; else break; 21 if (xác suất nhỏ p) then rj := ri ∈ X ngẫu nhiên; else rj := argmin(rank(hk , ri )), ∀(ri , hk ) ∈ X; 22 Xóa cặp chặn (rj , X(rj )); 18 19 20 23 24 return Mbest ; end function 14 Thuật tốn MCA mơ tả Thuật toán 3.1 Bắt đầu từ phép ghép ngẫu nhiên M , MCA tìm phép ghép ổn định với kích thước tối đa Tại bước lặp, MCA gọi Thuật tốn 3.2 để tìm tập UBP, X = {(ri , hj ) ∈ R × H} tính giá trị hàm f (M ) = #nbp(M ) + #nur(M ), #nbp(M ) số cặp UBP cho M #nur(M ) số sinh viên chưa ghép M Nếu M khơng hồn chỉnh, thuật tốn bắt đầu lại phép ghép M tiếp tục lần lặp Sau đó, thuật tốn kiểm tra xem xác suất p nhỏ, MCA chọn ngẫu nhiên rj ∈ X, ngược lại, MCA chọn rj ∈ X, cho hk ∈ X ưa thích Thuật tốn lặp lại Mbest hoàn chỉnh đạt đến số lần lặp tối đa Trong trường hợp sau, thuật toán trả phép ghép ổn định tối đa phép ghép khơng ổn định Algorithm 3.2: Tìm giá trị hàm f (M ) cặp chặn vượt trội, X 10 11 12 13 14 15 16 17 18 19 20 21 22 Input: Phép ghép M Output: Giá trị hàm, f (M ), tập hợp cặp chặn UBP, X function Find_Cost_And_UBPs(M ) X := ∅; #nur := 0; #nbp := 0; for (mỗi ri ∈ R) ubp := f alse; while (∃hj ∈ H|rank(ri , hj ) > 0) hj := argmin(rank(ri , hj ) > 0); if (rank(ri , hj ) = rank(ri , M (ri )) then break; if ((ri , hj ) cặp chặn) then X := X ∪ (ri , hj ); #nbp := #nbp + 1; ubp := true; break; else Xóa hj danh sách xếp hạng ri ; if ((ubp = f alse) (ri chưa ghép)) then #nur := #nur + 1; f (M ) := #nbp + #nur; return (f (M ), X); end function Tất thuật toán thực phần mềm Matlab 2019a thực 15 Algorithm 3.3: Thuật toán HS 10 11 12 13 14 15 Input: - Thể I HRT - Bước lặp tối đa max_iter Output: Phép ghép ổn định M function HS (I) Khởi tạo phép ghép ngẫu nhiên M ; Mbest := M ; a(ri ) := 1, ∀ri ∈ R; y(ri ) := 0, ∀ri ∈ R; z(hj ) := 0, ∀hj ∈ H; rank† (ri , hj ) := rank(ri , hj ), ∀ri ∈ R, hj ∈ H; iter := 0; while iter ≤ max_iter iter := iter + 1; ri := sinh viên hoạt động; if (∄ri mà a(ri ) = 1) then if |Mbest | < |M | then Mbest := M ; if (|Mbest | = n) then break; M ′ := Improve(M ); if M ′ = M then break; M := M ′ ; continue; 16 17 18 19 20 21 22 23 24 25 26 [hj , W (ri )] := Find_UBP_and_Wait_List(ri , M ); if hj ̸= ∅ then M := M \ {(ri , hk )} ∪ {(ri , hj )}, với hk := M (ri ); a(ri ) := 0; for rt ∈ R W (rt ) = hk rank(rt , hk ) := rank† (rt , hk ); a(rt ) := 1; if |M (hj )| > cj then rw := sinh viên có thứ tự xếp hạng ưu tiên thấp nhất; M := M \{(rw , hj )}; a(rw ) := 1; 27 28 29 30 31 32 33 34 else a(ri ) := 0; return Mbest ; end function 16 máy tính có cấu hình CPU Core i7-8550U 1.8 GHz RAM 16 GB Windows 10 Kết thực nghiệm thuật toán MCA hiệu so với LTIU thời gian thực chất lượng nghiệm cho toán MAX-HRT 3.2 Đề xuất thuật tốn Heuristic-Search Phần trình bày thuật tốn tìm kiếm heuristic (Heuristic Search, viết tắt HS) Thuật toán 3.3 để giải toán MAX-HRT Bắt đầu từ phép ghép ngẫu nhiên M , lần lặp, tồn ri cho a(ri ) = 1, HS tìm hj danh sách chờ W (ri ) Thuật toán 3.4 cho (ri , hj ) cặp UBP W (ri ) tập hợp hk ∈ H mà rank(ri , hk ) < rank(ri , M (ri )) rank(ri , hk ) = rank(ri , hj ) Nếu không tồn hj , cho (ri , hj ) cặp chặn, thuật toán gán a(ri ) = Nếu không tồn sinh viên hoạt động, có nghĩa HS tìm phép ghép ổn định M Nếu phép ghép ổn định tìm thấy chưa đạt kích thước tối đa, HS sử dụng Thuật toán 3.5 để thoát khỏi điểm cục tiếp tục lặp lại cho bước Thuật toán HS kết thúc thuật toán tìm phép ghép hồn chỉnh đạt đến số lần lặp tối đa tối đa Algorithm 3.4: Tìm cặp UBP danh sách chờ W (ri ) 10 11 12 13 14 15 16 17 Input: ri M Output: - hj (ri , hj ) UBP - Danh sách chờ W (ri ) function Find_UBP_and_Wait_List(ri , M ) for hk ∈ danh sách xếp hạng ri f (hk ) := rank(ri , hk ) + |M (hk )|/(ck + 1); hj := ∅; while (∃hk ∈ H|rank(ri , hk ) > 0) hk := argmin(f (hk ) ≥ 1), ∀hk ∈ H; if rank(ri , hk ) = rank(ri , M (ri )) then break; if (ri , hk ) cặp chặn then hj := hk ; break; else W (ri ) := W (ri ) ∪ hk ; rank(ri , hk ) := 0; f (hk ) := 0; return hj W (ri ); end function 17 Tất thuật toán thực phần mềm Matlab 2019a thực máy tính có cấu hình CPU Core i7-8550U 1.8GHz RAM 16GB Windows 10 Các kết thực nghiệm thuật toán HS hiệu thời gian chất lượng nghiệm so với thuật toán HP AS cho tốn MAX-HRT Algorithm 3.5: Cải thiện kích thước phép ghép ổn định 10 11 12 13 14 15 16 17 18 19 20 Input: Phép ghép ổn định, M Output: Phép ghép, M function Improve(M ) for ru ∈ R, M (ru ) = ∅ Tìm (ri , hk ) ∈ M cho rank(hk , ri ) = rank(hk , ru ) if y(ru ) ≥ y(ri ) then M := M \ {(ri , hk )} ∪ {(ru , hk )}; y(ru ) := y(ru ) + 1; a(ru ) := 0; a(ri ) := 1; rank(ru , hk ) := rank† (ru , hk ); for ht ∈ H, |M (ht )| < cj Tìm (ri , hk ) ∈ M cho rank† (ri , hk ) = rank† (ri , ht ) if z(ht ) ≥ z(hk ) then M := M \ {(ri , hk )} ∪ {(ri , ht )}; z(ht ) := z(ht ) + 1; rank(ri , ht ) := rank† (ri , ht ); for rw cho W (rw ) = hk rank(rw , hk ) := rank† (rw , hk ); a(rw ) := 1; return M ; end function 18 CHƯƠNG ĐỀ XUẤT CÁC THUẬT TOÁN GIẢI BÀI TOÁN MAX-SPA 4.1 Đề xuất thuật toán SPA-P-heuristic giải toán MAX-SPA-P Algorithm 4.1: Thuật toán SPA-P-heuristic 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 Input: Thể I SPA-P Output: Phép ghép ổn định M function SPA-P-heuristic(I) M := ∅; a(si ) := 1, ∀si ∈ S; hlk (si ) := 0, ∀lk ∈ L, ∀si ∈ S; while ∃ si với a(si ) = if (∄pj ∈ P|rank(si , pj ) > 0) then a(si ) := 0; continue; pj := argmin(rank(si , pj ) > 0); lk := giảng viên đề xuất đề tài pj ; M := M ∪ {(si , pj )}; a(si ) := 0; y(si ) := số lượng đề tài xếp hạng si ; hlk (si ) := rank(lk , pj ) + y(si )/(q + 1); if |M (pj )| > cj then st := argmax(hlk (st )), ∀st ∈ M (pj ); M := M \ {(st , pj )}; rank(st , pj ) := 0; a(st ) := 1; hlk (st ) := 0; if |M (lk )| > dk then st := argmax(hlk (st )), ∀st ∈ M (lk ); pz := M (st ); M := M \ {(st , pz )}; rank(st , pz ) := 0; a(st ) := 1; hlk (st ) := 0; return M ; end function 19 Phần trình bày thuật tốn heuristic, gọi SPA-P-heuristic mơ tả Thuật toán 4.1 để giải toán MAX-SPA-P Bắt đầu từ phép M = ∅ Ở lần lặp, sinh viên si ghép cho đề tài thích pj danh sách xếp hạng si để tạo thành cặp (si , pj ) ∈ M , đề tài pj giảng viên lk đề xuất pj nhận số lượng sinh viên, sinh viên tùy ý sr ∈ M (pz ), pz đề tài có sinh viên ghép xếp hạng ưu tiên thấp lk , bị loại khỏi M Luận án đề xuất hàm heuristic sau: hlk (st ) = rank(lk , pz ) + y(st )/(q + 1) (4.1) lk giảng viên đề xuất đề tài pz y(st ) số lượng đề tài xếp hạng st Nếu pj nhận số lượng sinh viên tối đa, sinh viên tồi st M (pj ) bị loại khỏi M Nếu vậy, st xóa pj danh sách xếp hạng st st hoạt động trở lại Nếu lk nhận số lượng sinh viên tối đa, sinh viên tồi st M (lk ) bị loại khỏi M Nếu vậy, st xóa pz danh xếp hạng st , pz ghép cho st st hoạt động trở lại Khi sinh viên st bị xóa khỏi M , giá trị heuristic hlk (st ) gán Thuật toán lặp lại tất sinh viên không hoạt động trả phép ghép ổn định với kích thước tối đa Các kết thực nghiệm thuật toán SPA-P-heuristic vượt trội thời gian chất lượng nghiệm so với hai thuật toán xấp xỉ SPA-P-approx, SPA-P-promotion thuật toán heuristic gần SPA-P-MCH cho toán MAX-SPA-P 4.2 Đề xuất thuật tốn HAG giải tốn MAX-SPA-ST Phần trình bày thuật tốn tìm kiếm heuristic (Heuristic Algorithm, viết tắt HAG) để giải toán MAX-SPA-ST Thuật toán HAG mơ tả Thuật tốn 4.2 Bắt đầu từ phép ghép rỗng, M = ∅ Tại lần lặp, HAG xem xét sinh viên si ∈ S chưa ghép mà danh sách xếp hạng si không rỗng xác định hàm heuristic h(pj ) cho đề tài pj ∈ P danh sách xếp hạng si , pj đề xuất lk để chọn đề tài tốt dựa vào giá trị nhỏ hàm h(pj ) sau: h(pj ) = rank(si , pj )−min(dk −|M (lk )|, 1)/2−(cj −|M (pj )|)/(2×cj +1) (4.2) 20 Algorithm 4.2: Thuật toán HAG 10 11 12 13 14 15 Input: Thể SPA-ST, I Output: Phép ghép ổn định, M function HAG (I) M := ∅ v(si ) := 0, ∀si ∈ S while true si := sinh viên chưa ghép danh sách xếp hạng si chưa rỗng if ∄ si then if |M | = n then break else M ′ := Escape(M ) if M ′ = M then break M := M ′ continue for pj ∈ Ai lk := giảng viên hướng dẫn đề tài pj h(pj ) = rank(si , pj )-min(dk -|M (lk )|, 1)/2-(cj -|M (pj )|) /(2 × cj + 1) 26 pj := argmin(h(pj ) > 0), ∀pj ∈ P lk := giảng viên hướng dẫn đề tài pj if |M (pj )| < cj |M (lk )| < dk then M := M ∪ {(si , pj )} else if |M (pj )| = cj then [st , g(st )] := Choose_Student(M (pj ), lk ) if g(st ) > n + rank(lk , si ) < rank(lk , st ) then M := M \ {(st , pj )} ∪ {(si , pj )} if g(st ) < n + then rank(st , pj ) := else rank(si , pj ) := 27 else 16 17 18 19 20 21 22 23 24 25 28 29 30 31 32 33 34 35 36 [sw , g(sw )] := Choose_Student(M (lk ), lk ) if g(sw ) > n + rank(lk , si ) < rank(lk , sw ) then M := M \ {(sw , pu )} ∪ {(si , pj )}, với pu = M (sw ) Repair(pu , lk ) if g(sw ) < n + then rank(sw , pu ) := else rank(si , pj ) := return M ; end function 21 Tiếp theo, với sinh viên si ∈ S, si đề xuất tới pj pj đủ dung lượng lk đủ dung lượng, thuật tốn HAG xác định hàm g(st ) mô tả Thuật toán 4.3 để chọn sinh viên st dựa vào giá trị lớn hàm heuristic g(st ) sau: g(st ) = rank(lk , st ) + t(st ) + r(st )/(q + 1) (4.3) Algorithm 4.3: Hàm heuristic g(st ) 10 11 Input: Tập sinh viên X Output: Sinh viên st g(st ) function Choose_Student(X, lk ) for st ∈ X t(st ) := 0; for pu |rank(st , pu ) = rank(st , M (st )) lz := giảng viên hướng dẫn đề tài pu ; t(st ) = t(st ) + min(dz − |M (lz )|, 1) × min(cj − |M (pu )|, 1) × n; r(st ) := số lượng đề tài xếp hạng st ; g(st ) := rank(lk , st ) + t(st ) + r(st )/(q + 1); st := argmax(g(st )); return st , g(st ); end function Algorithm 4.4: Phá vỡ cặp chặn kiểu (3bi) 10 Input: Phép ghép M Output: Phép ghép M function Repair(pu , lk ) f := true; while f = true f := false; if sk ∈ M (lk ) rank(sk , pu ) < rank(sk , pz )|pz = M (sk ) then M := M \ {(sk , pz )} ∪ {(sk , pu )}; pu := pz ; f := true; return M ; end function Thuật toán 4.4 sử dụng để phá vỡ cặp chặn đề tài pu bị 22 xóa khỏi M Với sk ∈ M (lk ), rank(sk , pu ) < rank(sk , pz ), pz = M (sk ), thuật toán loại bỏ (sk , pz ) thêm (sk , pu ) vào M Quá trình lặp lại cho đề tài bị xóa khơng thể tạo thành cặp chặn Nếu phép phép ổn định tìm chưa đạt kích thước tối đa, HAG gọi Thuật tốn 4.5 cải thiện kích thước phép ghép Thuật tốn HAG dừng lại tìm phép ghép ổn định với kích thước tối đa tất sinh viên chưa ghép khơng thể tìm đề tài để ghép Algorithm 4.5: Vượt qua tối thiểu cục Input: Phép ghép ổn định M Output: Phép ghép ổn định M function Escape(M ) for sinh viên chưa ghép su ∈ U Khởi tạo lại danh sách xếp hạng su ; while danh sách xếp hạng su không rỗng pz := argmin(rank(su , pz ) > 0), ∀pz ∈ P; lk := giảng viên hướng dẫn đề tài pz ; for ( si ∈ M (lk ) | rank(lk , si ) = rank(lk , su )) if (|M (pz )|) < cz ) (si ∈ M (pz ) |M (pz )| = cz ) then if v(su ) ≥ v(si ) then 10 pj := M (si ); 11 M := M \ {(si , pj )} ∪ {(su , pz )}; 12 v(su ) := v(su ) + 1; 13 Repair(pj , lk ); 14 break; 15 16 17 18 19 20 if M (su ) ̸= ∅ then break; else rank(su , pz ) := 0; return M ; end function Tất thuật toán thực phần mềm Matlab 2019a thực máy tính có cấu hình CPU Core i7-8550U 1.8 GHz RAM 16 GB Windows 10 Các kết thực nghiệm thuật toán HAG hiệu thời gian thực chất lượng nghiệm so với thuật toán xấp xỉ APX cho MAX-SPA-ST 23 KẾT LUẬN Luận án hoàn thành mục tiêu nghiên cứu đề đạt kết sau: - Đề xuất 02 thuật toán giải tốn MAX-SMTI cơng bố Chương - Đề xuất 02 thuật toán giải tốn MAX-HRT cơng bố Chương - Đề xuất 02 thuật toán giải toán SPA-P SPA-ST công bố Chương Các nghiên cứu công bố kỷ yếu hội thảo, tạp chí uy tín thuộc chuyên ngành Heuristic, Khoa học máy tính Trí tuệ nhân tạo nước quốc tế, số công bố thuộc danh mục SCIE SCOPUS Từ kết đạt hạn chế luận án này, tương lai luận án tiếp tục nghiên cứu thuật toán heuristic hiệu cho biến thể khác toán hôn nhân ổn định hướng tiếp cận khác cho tốn nhân ổn định biến thể 24

Ngày đăng: 04/05/2023, 16:39

Xem thêm: