如果这是重复,我道歉。我缺乏计算机科学知识,无法知道要搜索什么。
我需要找到匹配的算法。我有一系列的房间,还有一系列的房间内容。内容有一个最小尺寸的房间,他们会适合 - 所以有些人会很乐意适合任何房间,有些只适合一个或两个房间。我也会为一些房间设置一个最大尺寸,但我认为只有当我确定房间是否合适时才会产生影响。
假设(虽然 - 在我的实际使用中无法保证)有一个潜在的解决方案,我如何找到最佳分配,这样每个房间只使用一次而且没有任何内容缺少房间?
答案 0 :(得分:2)
您的问题似乎是maximum bipartite matching问题。您可以将问题视为无向图G(V,E)
,其中顶点V
是房间和内容,边E
是房间和内容之间可能的连接:
contents(i)
和room(j)
之间的图表中存在边缘。 最大匹配产生两组(即房间和内容)中顶点之间的最大配对数,确保每个顶点仅使用一次。如果所有顶点都匹配,则称匹配是“完美的”。有许多算法可用于此类问题,Hopcroft-Karp方法可能最快。
您还可以考虑进一步优化您的问题,您可以尝试最大限度地减少房间内的总浪费空间。在这种情况下,“重量”将基于内容区域和房间之间的差异与上面定义的边缘相关联。 然后,您将寻求最大重量最大匹配。
答案 1 :(得分:0)
您可以将其解决为http://en.wikipedia.org/wiki/Assignment_problem。你没有匹配的东西匹配数量,但是你可以为任何一方首先缩短的东西做补充。如果你为每一个可能的匹配使得组合物的成本相同,那么对于没有组成只能产生部分匹配的东西的解决方案,解决方案的最低成本答案也将是解决方案的最低成本答案,因为无论如何分配,成本的东西对成本的贡献都是一样的。
(当然,可能有更快的方法来解决您的具体问题 - 例如,如果您只有一个方面可以匹配其中一方,只需在每个可能的位置进行尝试。)