N个请求者和M个资源的足够资源

时间:2014-02-21 05:10:43

标签: algorithm language-agnostic resources

这个问题很熟悉,但我不记得解决方案(或者是否有任何好处)。

另一种方法是,你有N个潜在的匹配,以及它们可能在的M个位置 - 每个N只能适合M个位置的子集 - 这个配置是否有足够的位置。

图表更好地证明了这一点。将N设置为3(沿着顶部),将M设置为4,使用1表示请求者(N)需要哪个资源(M) - 资源不足的示例情况:

   0  1  2
0  1  1  1
1  1  1  1
2  0  0  0
3  0  0  0

   0  1  2
0  1  X  X
1  X  1  X
2  0  0  0
3  0  0  0

一旦分配了0和1,2的子集中就没有可用的资源。另一方面,这种情况将允许足够的资源分配。

   0  1  2
0  1  1  1
1  1  1  1
2  0  0  0
3  0  1  0

   0  1  2
0  1  X  X
1  X  X  1
2  0  0  0
3  0  1  0

我真的只关心是否可以满足分配。不一定是满足它的配置。

如果没有简单的方法可以得到是或否,我想的是首先以最少的可能性来定位行和列。我认为这会迅速缩小范围。同样,识别不可满足的情况可能是一种很好的消除方式。

我的问题是,有什么数学,一个好的算法,或者我应该考虑的一类问题?它似乎来自实时编程或sodoku。即使只是一个谷歌的术语将非常感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

我相信你想查看作业问题(http://en.wikipedia.org/wiki/Assignment_problem

接近它的一种方法是使用匈牙利算法(http://en.wikipedia.org/wiki/Hungarian_algorithm

并且有一些库已经实现了它,例如:http://robotics.stanford.edu/~gerkey/tools/hungarian.html

答案 1 :(得分:0)

由于没有“成本”,我最终使用[Hall's Theorem] [1]。

编辑:我最终会使用二分匹配。