2014-02-21 35 views
0

这个问题让人感到很熟悉,但我不记得解决方案(或者它是否有用)。为N个请求者和M个资源提供了足够的资源

另一种方法来说明,你有N个可能的匹配和他们可能在的M个位置 - 每个N只能匹配M个位置的一个子集 - 这个配置是否有足够的位置。

最好通过图表来证明。将N设置为3(沿着顶)和M为4,用1来表示,其资源(M)请求者(N)的需要 - 实施例情况,其中将有足够的资源:

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的东西。即使只是一个术语谷歌将不胜感激。

谢谢!

+1

这是线性规划分配问题(或最大二分配匹配问题)的特例。谷歌为它。你将能够应用它在你的情况 –

回答

0

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

编辑:我将最终使用双向匹配。