Gale-Shapley算法的python实现

时间:2019-09-14 20:38:58

标签: python algorithm

我对Gale-Shapley算法有以下实现问题。

申请人偏好和雇主偏好的格式为:

assign

它们是具有与申请人编号和雇主编号相对应的索引的数组。子数组的索引是职位/申请人的首选项。

因此,排名字典的字典形式为:

排名采用以下形式:

applicant_prefs = ['applicant preferences', [2, 1, 3], [1, 3, 2], [1, 3, 2]]   
employer_prefs = ['employer preferences', [3, 1, 2], [3, 2, 1], [2, 3, 1]]

键和值的格式为:“ applicant,job”:等级。 我还得到了从1到n的空缺职位列表:

rankings = {'1,2': 0, '1,1': 1, '1,3': 2, '2,1': 0, '2,3': 1, '2,2': 2, '3,1': 0, '3,3': 1, '3,2': 2}

当前职位是每个申请人的匹配职位,由于每个人最初都不匹配,因此初始化为-1

n = len(applicant_prefs) - 1
open_jobs = list(range(1, n+1)) (In this case it's 3)

我的任务是实现算法,这是我的尝试:

current_job = [-1 for applicant in applicant_prefs]

但是,在上面的示例中,返回的数组是[3,2,1]而不是[2,3,1]。我想我已经接近正确的答案。

我将非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

在大风中-形形色色,雇主按照雇主偏爱的顺序向求职者提出要约。您的代码不使用雇主的首选项,而是按增加申请人ID的顺序进行报价。