thiết kế đánh giá thuật toán đề tài thuật toán chấp nhận trì hoãn daa và bài toán hôn nhân bền vững

14 0 0
Tài liệu đã được kiểm tra trùng lặp
thiết kế đánh giá thuật toán đề tài thuật toán chấp nhận trì hoãn daa và bài toán hôn nhân bền vững

Đ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

Sau này, thuật toáncòn được biết đến với tên gọi thuật toán Gale-ShapleyThực tế các lĩnh vực trong cuộc sống có liên quan đến giao dịch có yêu cầu ghép cặp là rất nhiều như: ghép cặp giữ

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

TIỂU LUẬN MÔN HỌC

THIẾT KẾ &

ĐÁNH GIÁ THUẬT TOÁN

ĐỀ TÀI: THUẬT TOÁN CHẤP NHẬN TRÌ HOÃN ( DAA) VÀBÀI TOÁN HÔN NHÂN BỀN VỮNG

Giảng viênLê Trọng Vĩnh Sinh viên thực hiện

Nguyễn Văn HuyTrần Văn ĐôngNguyễn Quang Khải

1

Trang 2

MỤC LỤC

Trang 3

I Lời mở đầu

Lý thuyết đồ thị là một lĩnh vực nghiên cứu đã có từ lâu và có nhiều ứng dụng hiện đại.Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất từ những năm đầu của thế kỷ18 bởi nhà toán học lỗi lạc người Thụy Sĩ Leonhard Euler Chính ông là người đã sửdụng đồ thị để giải bài toán nổi tiếng về các cái cầu ở thành phố Konigsberg Từ đó lýthuyết đồ thị ngày càng khẳng định được vị trí quan trọng trong việc áp dụng để giải quyếtcá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ậttoá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ụngtrong 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ạpcụ 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áncòn được biết đến với tên gọi thuật toán Gale-Shapley

Thực tế các lĩnh vực trong cuộc sống có liên quan đến giao dịch có yêu cầu ghép cặp là rất nhiều như: ghép cặp giữa các cặp đôi trong trung tâm môi giới hôn nhân, ghép cặp trong trường hợp hiến và ghép tạng; phân công công tác cho các sinh viên tốt nghiệp ngành y tới các bệnh viện, công tác tuyển sinh đại học…

Trong các lĩnh vực nêu trên, ở nước ta việc áp dụng thuật toán ghép cặp vào các lĩnh vực đó là chưa nhiều và chưa phổ biến mặc dù có rất nhiều lĩnh vực giao dịch có yêu cầu Tuyển sinh đại học cũng là một trong nhiều lĩnh vực có yêu cầu giao dịch ghép cặp, đặc biệt là trong khâu tuyển sinh Đại học

Vì vậy sau đây nhóm em xin trình bày về thuật toán Gale-Shapley hay được gọi là thuật toán chấp nhận trì hoãn (DAA) và bài toán hôn nhân bền vững Bên cạnh đó còn là một số bài toán ứng dụng liên quan như phân bổ học sinh, tuyển sinh đại học, …

3

Trang 4

II Lời cảm ơn

Đầu tiên, nhóm chúng em xin gửi lời cảm ơn chân thành đến khoa Cơ-Tin, trường Đại học Khoa học Tự nhiên đã tạo điều kiện thuận lợi chochúng em học tập và hoàn thành đề tài này.

Toán-Đặc biệt, chúng em xin chân thành cảm ơn thầy Lê Trọng Vĩnh, người đãgiúp đỡ và hướng dẫn tận tình chúng em suốt thời gian học tập trong tình hìnhkhó khăn của bệnh dịch vừa qua, bên cạnh đó cũng cung cấp cho chúng emnhững kiến thức để tiếp cận, phân tích, và giải quyết vấn đề Nhờ đó mà chúngem hoàn thành được công việc của mình một cách tốt hơn Chúng em cũng xincảm ơn những người bạn đã tận tình chỉ bảo, giúp đỡ trong quá trình hoànthành học phần.

Chúng em đã vận dụng tối đa những kiến thức mà mình có được trong kìhọc vừa qua để hoàn thành đề tài của nhóm Nhưng do kiến thức vấn còn hạnchế và chưa có nhiều kinh nghiệm nên khó có thể tránh được những thiếu sóttrong quá trình thực hiện đề tài Chúng em mong nhận được những góp ý, phêbình của thày để đề tài của nhóm chúng em được hoàn thiện hơn.

Chúng em xin chân thành cảm ơn thầy !

4

Trang 5

II.Giới thiệu bài toán

1 Bài toán hôn nhân bền vững là gì ?

Trong toán học và khoa học máy tính bài toán hôn nhân bền vững SMP ( ) yêu cầutìm một cặp ghép bền vững giữa các phần tử của hai tập hợp theo thứ tự ưu tiên của mỗiphầ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ậphợp kia Một cặp ghép là bền vững nếu hai điều kiện sau không đồng thời xảy ra:

a Một phần tử của tập hợp thứ nhất thích phần tử của tập hợp thứ hai hơn phần tửA Bđược ghép với A, và

b B cũng thích hơn phần tử được ghép với A B

Nói cách khác, một tổ hợp ghép là bền vững nếu không tồn tại cặp (A, B) trong đó cảA và B đều thích phần tử kia hơn phần tử được ghép với chúng.

Bài toán hôn nhân bền vững thường được phát biểu như sau:

Có người đàn ông và phụ nữ, trong đó mỗi người xếp hạng tất các mọi người khácn ngiới từ 1 đến theo thứ tự ưu tiên, cần tìm cách tổ chức hôn nhân sao cho không tồn tại hainngườ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ậythì tất cả các cuộc hôn nhân được xem là "bền vững."

2 Lịch sử bài toán

Hai người đầu tiên nghiên cứu về bài toán Hôn nhân bền vững (Stable Marriage Problem) là Lloyd Stowell Shapley (2/6/1923 – 12/3/2016) – nhà Toán học người Mỹ với nhiều cống hiến quan trọng trong lĩnh vực Lý thuyết trò chơi, giải Nobel Kinh tế 2012- và David Gale (13/12/1921 – 7/3/2008) – nhà Toán học, Kinh tế học người Mỹ, giáo sư danh dự tại University of California, Berkeley Những năm 1960, Shapley và Gale quan sátthực tiễn và nhận thấy: rất nhiều hành vi của loài người liên quan đến việc ghép đôi, tạo mối quan hệ, ví dụ như đưa gặp gỡ kí kết hợp đồng giữa người mua và người bán hay tuyển sinh Họ bắt đầu nghiên cứu của mình từ trường hợp đơn giản nhất: ghép đôi 1 – 1.

Từ trường hợp ghép đôi 1 – 1, họ tìm ra thuật toán DAA (Deferred Acceptance Algorithm-tạm dịch là “Thuật toán Chấp nhận trì hoãn”) và công bố vào năm 1962 Đến những năm 1980, Alvin Elliot Roth (18/12/1951) – nhà Kinh tế học người Mỹ, hiện đang giảng dạy tại Đại học Harvard – đã không ngừng nỗ lực tìm ra các giải pháp từ thuật toán này để giải quyết các vấn đề thực tiễn “Có công mài sắc, có ngày nên kim”, hơn 40 năm sau, Giải thưởng Nobel Kinh tế đã được trao cho Roth và Shapley cho những cống hiến về “Lý thuyết phân phối ổn định và thực tiễn về tạo lập thị trường” (“the theory of stable allocations and the practice of market design”)

5

Trang 6

III Tìm hiều bài toán

1 Cơ sở lý thuyết a Một số khái niệm

Khái niệm 1: Một cách ghép cặp được gọi là không bền vững nếu có hai cặp vợ chồng

(Y ,X11) và (Y2,X2) sao cho Y thích X hơn X , đồng thời X cũng thích Y hơn Y1 2 12 12

Định nghĩa 2: Một cách ghép cặp bền vững được gọi tối ưu nếu mỗi chàng trai đều lấy

được người vợ ưng ý hơn so với bất kì một cách phân bố bền vững nào khác.

b Một số bài toán

Bài toán 1: Có tồn tại hay không cách ghép cặp N cô gái với N chàng trai sao cho ai cũng

lấy được người mình có cảm tình Ở đây một người có thể có cảm tình với nhiều người khác giới.

Bài toán 2: Hãy chỉ ra cách ghép cặp N cô gái với N chàng trai sao cho ai cũng lấy đượcngười mình có cảm tình (nếu có)

Lời giải:

Gọi tập hợp các cô gái là S, tập hợp các lời chàng trai là S’ Các quan hệ, kí hiệu sửdụng như lời giải bài toán 1.

Dựa vào cách chứng minh quy nạp của định lý Hall ở trên, ta có thuật toán:

Đầu tiên, ta xác định N cô gái và N chàng trai có thỏa điều kiện của định lý Hallbằng cách duyệt từng tập con của S Nếu không thỏa, hiển nhiên không tồn tạicách ghép, kết thúc Nếu thỏa, ta thực hiện bước hai.

Xác định có tồn tại tập con X của S sao cho hay không Nếu tồn tại,ta thực hiện thuật toán với các cặp tập hợp X và N(X), S\X và S’\N(X) Nếukhông, ghép đôi một cô gái x bất kì với một chàng trai y bất kì mà cô ấy đượcnối Ta thực hiện thuật toán với S\{x} và S’\{y}.

Nhược điểm của việc ghép đôi kiểu này là sự không ổn định nếu ta xét đến việc côgái (chàng trai) có cảm tình với người này hơn người kia Giả sử tồn tại cặp a – b và cặp x

6

Trang 7

– y mà a thích y hơn b và y thích a hơn x, khi đó có khả năng dẫn đến hiện tượng ngoạitình, cách ghép đôi không còn hiệu quả Ta xét đến thứ tự cảm tình của các cô gái và chàngtrai.

Bài toán 3 (Stable Marriage Theorem): Một cách ghép cặp bền vững luôn luôn tồn tại, với mọi đồ thị lưỡng phân và mọi bộ sắp thứ tự ưa thích.

Mỗi chàng trai bị từ chối trong lần lặp này xóa tên cô gái từ chối họ trong danh sách.Mỗi chàng trai bị hủy hôn ước xóa tên cô gái đã hủy hôn ước trong danh sách.Vòng lặp được thực hiện cho đến khi nào không còn chàng trai nào chưa đính hôn Khi đó ta ghép đôi mỗi chàng trai với cô gái mà họ đính hôn Kết thúc thuật toán.

Bài toán 5: Chứng minh với thuật toán trên, mọi người đều được ghép đôi.

Lời giải:

Dễ thấy rằng mọi người chỉ đính hôn với tối đa một người khác giới.

Ta xét một cô gái bất kì Dễ thấy rằng sau khi được cầu hôn, vào mọi thời điểm kết thúcvòng lặp sau này, cô gái đó luôn được đính hôn Ngoài ra, đối với một cô gái bất kì, do các chàng trai duyệt danh sách của họ từ trên xuống nên sau một số hữu hạn vòng lặp, cô gái đó sẽ được cầu hôn.

Bài toán 6: Chứng minh với cách ghép đôi nhận được từ thuật toán, không xuất hiện sự

Trang 8

Giả sử phản chứng: sau khi thực hiện thuật toán, tồn tại hai cặp cô gái – chàng trai là A – B và C – D mà D xếp hạng cao hơn B trong danh sách của A và A xếp hạng cao hơn C trong danh sách của D (A và D ngoại tình).

Do A xếp trước C trong danh sách của D nên khi thực hiện thuật toán, D cầu hôn A trước C Sau đó D cầu hôn C chứng tỏ A đã từ chối hoặc hủy hôn với D Khi kết thúc thuật toán, A kết hôn với B chứng tỏ B có thứ hạng cao hơn D trong danh sách của A, mâu thuẫn!

Vậy giả thiết phản chứng sai, mệnh đề được chứng minh.

Thuật toán này có thể được mô tả bởi vòng lặp sau:

• Bước 1: Các chàng trai và cả các cô gái cùng lên một danh sách sắp thứ tự các cô

gái và các chàng trai mà mình muốn lấy (theo thứ tự thích nhất, thích nhì, thích ba, ).

• Bước 2: Lần lượt các chàng trai sẽ cầu hôn các cô gái đứng đầu trong danh sách

của mình Cô gái nào nhận được nhiều lời cầu hôn thì sẽ chọn người mà mình thích nhất (dựa theo danh sách của mình).

o Nếu người được chọn là người đứng đầu trong danh sách thì cô gái sẽ kết hôn với người này và từ chối mọi lời cầu hôn khác ở những lượt tiếptheo.

o Còn nếu như không phải thì cô gái sẽ tìm cách “trì hoãn” bằng việc tạm nhận lời, coi như mình đang có một “hôn phu tạm thời” và chờ đợi lờicầu hôn từ một người có thứ hạng cao hơn Nếu người này xuất hiện và cầu hôn cô gái (ở những lượt sau) thì dĩ nhiên cô ấy sẽ chia tay người "hôn phu tạm thời" của mình mà chọn người này.

• Bước 3: Các chàng trai sẽ xóa tên cô gái đã từ chối mình hoặc đã chia tay với mình

khỏi danh sách.

• Bước 4: Lặp lại bước 2.

Vòng lặp sẽ kết thúc khi không còn chàng trai nào phải đi cầu hôn nữa Khi đó cô gái nào chưa kết hôn thì sẽ kết hôn với người “hôn phu tạm thời” hiện tại của mình.

Thuật toán DAA vẫn có thể áp dụng trong trường hợp số chàng trai không bằng số cô gái.Cụ thể:

8

Trang 9

• Nếu n < m thì thuật toán sẽ dừng khi n cô gái được cầu hôn.

• Nếu m < n thì thuật toán sẽ dừng khi mỗi chàng trai rơi vào một trong hai trạng thái sau:

◦ Là hôn phu tạm thời của một cô gái nào đó.◦ Bị tất cả các cô gái từ chối.

3 Tính tối ưu

Thuật toán Gale – Shapley luôn mang lại kết quả với độ phức tạp Ngoài ra, ta cóthể định hướng được chiều hướng của kết quả sẽ có lợi cho bên nào Ví dụ, ta hãy xét nhóm 3 cô gái A, B, C và nhóm 3 chàng trai X, Y, Z Giả sử, thứ tự cảm tình của họ là:

A: XYZ ; B: YZX ; C: ZXYvà

X: BCA ; Y: CAB ; Z: ABC

Nếu ta chạy thuật toán với X, Y và Z “cầu hôn”, ta sẽ được kết quả là cách ghép cặp bền vững X-B, Y-C và Z-A Cách này có lợi cho các chàng trai, các chàng sẽ được lấy người mình yêu nhất nhưng những cô gái sẽ phải lấy người xếp chót trong danh sách.

Nếu ta chạy thuật toán với A, B và C “cầu hôn”, ta sẽ được kết quả là cách ghép cặp bền vững A-X, B-Y và C-Z Ngược lại với trường hợp bên trên, ở đây các cô gái được lợi nhiều nhất.

Ta được kết quả này có thể do những người “cầu hôn” duyệt danh sách của họ từ trên xuống, trong khi những người được cầu hôn chỉ được chọn người tốt nhất trong danh sách những người cầu hôn họ Vậy bây giờ ta sẽ xem xét, chứng minh bên nào hưởng lợi nhiều nhất trong trường hợp các chàng trai cầu hôn các cô gái.

Trong các cách ghép cặp bền vững, kết quả của thuật toán DAA là tối ưu nhất, tức là các chàng trai sẽ lấy được người vợ mà mình ưng ý nhất, so với các cách ghép bền vững khác.Chứng minh:

Xét tất cả các cách ghép cặp bền vững Đối với mỗi chàng trai, gọi vùng khả thi là tập hợp tất cả các cô gái mà anh ta có thể cưới trong các cách ghép đôi bền vững Định nghĩa tương tự với các cô gái Ta sẽ chứng minh bằng phản chứng

Gọi B là chàng trai đầu tiên bị cô gái G mà anh ta thích nhất trong vùng khả thi của mình từ chối Điều này chứng tỏ G đã có hôn phu tạm thời là B’ và G thích B’ hơn B.

Gọi G” là cô gái mà B’ thích nhất trong vùng khả thi của mình.• TH1: G khác G”.

Xét trong danh sách (lập ở bước 1 của thuật toán) của B’, ta thấy G phải có thứ hạng cao hơn G” , nếu không thì B’ phải cầu hôn G” trước G và bị từ chối, tức là B’ sẽ bị

9

Trang 10

người thích nhất trong vùng khả thi của mình từ chối Điều này vô lý do sự kiện B’ bịG” từ chối xảy ra trước sự kiện B bị G từ chối, hay B không phải là chàng trai đầu tiên bị từ chối bởi người mình thích nhất trong vùng khả thi của minh (trình tự cụ thể:B’ cầu hôn G” và từ chối, tiếp theo B’ cầu hôn G, được G cho làm hôn phu tạm thời, sau đó B mới cầu hôn G và bị G từ chối) Tóm lại, trong danh sách của B’ thì G có thứ hạng cao hơn G”

Mặt khác, ta xét một cách ghép cặp bền vững mà ở đó B và G kết hôn với nhau, còn B’ sẽ kết hôn với cô gái G” nào đó Tuy nhiên B’ lại thích G hơn G” và G cũng thích B’ hơn B nên mâu thuẫn với tính bền vững

• TH2: G chính là G” Tương tự TH1.Nhận xét.

1 Các cô gái sẽ lấy chàng trai có thứ hạng thấp nhất trong vùng khả thi của mình Như vậy, bên cầu hôn sẽ được lợi hơn bên được cầu hôn.

Chứng minh Giả sử tồn tại cô gái G nào đó kết hôn với chàng trai B không phải là chàng trai xếp cuối vùng khả thi của cô ta Theo định lý 2, ta có G chính là côgái đứng đầu vùng khả thi của B Xét cách ghép cặp bền vững mà G kết hôn với B’ là chàng trai xếp cuối vùng khả thi của cô ta Khi đó ta thấy G thích B hơn B’ , trong khi B phải kết hôn với cô gái có xếp hạng thấp hơn G, mâu thuẫn với tính bền vững.2 Nếu chỉ có một cách ghép cặp bền vững duy nhất thì tính tối ưu của các chàng trai và các cô gái là như nhau.

Chứng minh Vì vùng khả thi của mỗi người lúc này chỉ có một người.

4 Mô hình và Codea.Mô hình:

• Tập các chàng trai B = {b1, b2, , bn}• Tập các cô gái G = {g1, g2, , gn}

• Danh sách xếp hạng yêu thích của mỗi người, trong đó gọi P (g ) (P (b )) là bijgij

thứ hạng mà bạn nam (nữ) thứ i đánh giá bạn nữ (nam) thứ j trong danh sách xếp hạng yêu thích của mình.

OUTPUT: Tập hôn nhân bền vững S B × G⊂•

• (b,g) S: ((b,g’) S ) ((b’,g) S) (P (g) < P (b’)) (P (b) < Pb ggg(b’))10

Trang 11

b Code

defd_a_a(man_pref woman_pref, , ) :

# Ngi mà hi n t i woman đang h n hò: fall_in_love[w] = m

# N u woman đang đ c thân: fall_in_love[w] = -1

fall_in_love = [- ] * 1n

ữ# Nh ng người đàn ông đ c thânộ free_man = list(range(n))

#t tình b t đ u

whilefree_man:

# xét m t man đ c thânộộ m = free_man[0]

# t tình v i woman mà hi n t i man thích nh t

w = man_pref[m].pop(0)

ế# n u woman ch a h n hòưẹ iffall_in_love w[] == -1:

# h n hò cùng man, man không còn đ c thân

fall_in_love[w] = m free_man.pop(0) else:

ế# n u woman thích man h n man'ơ

ifranking w[][m] < ranking w[][fall_in_love[w]]:

ế# man h t đ c thân, man' đ c thânộộ free_man.pop(0)

free_man.append(fall_in_love[w])

# man và woman h n hòẹ fall_in_love[w] = m

# Danh sách [(m,w), ] hôn nhân b n v ngềữ stable_marriage = [(fall_in_love[], i) for iinrange(n)]

Ngày đăng: 14/05/2024, 16:08

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan