问题的字面描述:
鉴于一些学校,每所学校都根据其需要拥有一些教师。在学者年结束时,一些老师要求根据有序名单改变他们的职位(他们目前正在教学的学校)(即:如果不可能,将我改为学校1,学校2,如果不可能的话,可以改为3)等等。 。)记住每所学校必须完全拥有所需的教师人数(不多,不少)。
每位教师都有一个独特的重要性编号,因此,如果两名或更多教师同时要求同一所学校,那么具有较高重要性的教师将获得所需的学校。
如果我们无法按照他的名单迁移一名或多名教师,那么我们会让他在他最初的学校回答:“对不起,今年你的需求是负担得起的”
我们怎样才能承受这种“迁移”?
(p.s:由“负担得起”我的意思是将每位老师的位置改为最好的(根据他的名单最好)所希望的学校。
I /问题的代数建模
给定E = {e1..en},n> = 0,一组正整数(e为实体)
给定L = {l1..lm},m> = 0,一组正整数(l表示位置)
给定P:E - > L,一个功能。 (P代表职位)
给定C:L - > IN *,一个函数。 (C表示容量)
给定U:L - > IN,一个功能。 (U代表使用)定义:U(l)= card({e / P(e)= l})
给出A:L - > IN,一个功能。 (A为可用)定义为:C(l)= A(l)+ U(l)表示L中的任何l。
设D:E - &gt; L ^ k,其中0 < k <= m,D(e)=(l1,l2,.. li)函数(D为目的地)
(也就是说,每个实体都有一个有序的非空位置(目的地)愿意移动到的目的地)。
让我:E - &gt; IR +,一个双射(我是重要的)。 (也就是说,每个实体都有唯一的重要性编号I(e))
II /迁移规则:
问的任务是找出提供以下内容的新P'功能(定位):
1- P'(e)属于{l1,l2,..,li},其中(l1,l2,..,li)= D(e)
2-如果我们P'(e)= ls且P'(e)= lt是两种可能的解,其中D(e)=(l1,...,ls,...,lt,.. 。,li),那么我们必须保持与目的地订单相匹配的解决方案(在这种情况下是ls)并排除另一个)
3 - 如果A(l)= 1并且P'(e1)= 1且P'(e2)= 1是两种可能的解决方案,其中I(e1)> I(e2)那么我们必须保持解决方案匹配重要性的顺序(即在这种情况下P'(e1)= l)并排除另一个。
4-如果没有所需的目的地,那么P'(e)= P(e)
答案 0 :(得分:1)
这可以表示为二分匹配(或者,为了效率,整数最大流量以避免重复相同的位置)。为每个教师创建一个节点图,为每个位置创建一个节点。在教师和他们当前的作业之间放置边缘,以及排在当前作业之上的所有内容。找到最大匹配;如果它不完美,那么如果不将教师移动到他们的偏好列表中,问题就无法解决。
否则,对于按重要性降序排列的每位教师,确定可行并承诺的最佳作业。有一个线性时间算法,给定一个具有完美匹配的二分图,确定是否存在包含特定边的另一个匹配(定向匹配边,非匹配边以另一种方式定向,并寻找扩充路径)