我有一个问题,我能够概念化如下:
我们有一组 n 人。 m 子集代表他们的种族,如白人,西班牙裔,亚洲人等。 鉴于这些人的任何组合,我想检查它是否是一个多元化的群体。
多元化群体是满足多个要求的群体,每个要求的形式为“至少 Ki 群体中的人属于 Si ”。这是棘手的部分,一个人只能用来满足一个要求。如同,您不能将他/她用于多种要求。
一个例子:
假设:
至少有两个来自西班牙裔的人= {a,b,c}
亚洲至少有两个人= {a,d,e}
小组{a,c,d}是一个多元化的群体吗?
小组{a,c,d}并不是多元化的,因为你不能把 a 算作西班牙裔和亚洲人。但, {a,c,d,e,f}组是多种多样的,因为我们有两个西班牙语a和c以及两个亚洲d和e。
这是分配问题的一个实例。工作是种族,我们可以根据要求提出尽可能多的种族。例如,如果我们需要两个西班牙裔,那么我们就会有两个西班牙裔工作。然而,只有一些人能够做一份特定的工作。
这是我到目前为止的尝试:
我将构建一个二元图,一方面是人 P ,另一方面是 S 的种族集。如果他/她属于该种族,我们将在 p_i 和种族 S_i 之间设置优势。 现在,我们将修改图表,为每个种族 S_i 复制 k_i 次( S_ {i,1},S_ {i,2},.. 。,S_ {i,k_i} )。并相应地添加新边。找到此图的最大匹配M.
现在,将 S_ {i,j} 合并到一个 S_i 中,您就拥有了一个多样化的群组。但是,最大匹配只是解决问题的可能方法。我的问题是决策问题,我想检查一个给定的组是否是一个解决方案。
答案 0 :(得分:1)
我认为这是http://en.wikipedia.org/wiki/Assignment_problem的一个实例,通常用于将人分配给工作,所以在你的情况下,工作是“坐在那里看起来是白色的”或“坐在那里看看西班牙裔”。只有一些人有资格从事任何特定的工作,他们一次只能做一份工作。
通常情况下,分配算法可以最大限度地降低成本,但您可以将成本0 /成本1用于“是否属于正确的种族群体”。
解决这个问题的一种方法是http://en.wikipedia.org/wiki/Hungarian_algorithm。这通常适用于工作人数与工作人数完全相同的情况,但您可以随时发明虚拟工作或虚拟工作人员,所有与虚拟变量相关的成本都是相同的成本,因此使用假人优化问题可以完全重现相对如果你忽略了对假人的任务你会得到的成本顺序,所以在忽略假人之后,与假人的最佳选择是相同的选择,作为最佳的没有。