从可能值列表中最佳地分配项目

时间:2015-12-23 13:42:57

标签: algorithm

我有结构,看起来像这样:

  • slot_1(需要1项):[2,3,5,7],
  • slot_2(需要2项):[1,2]
  • slot_3(需要2项):[3,7,8]
  • slot_4(需要1项):[3]

每个插槽都有一系列项ID,允许输入到它中。项目不能跨插槽重复。每个插槽都有严格的必需项目数。

我可以使用任何算法来找到这些插槽的最佳填充吗?

1 个答案:

答案 0 :(得分:2)

这让我想起了通过计算机算法的形式解决sodoku难题。我解决它的方法是通过回溯的方式,从具有最少选项的插槽开始。

第1步:按照从最低到最高的选项数量对广告位进行排序。

第2步:为每个广告位从其选项列表中提供一个值(按照您在步骤1中找到的顺序)

步骤2.1如果您发现某个插槽没有有效选项,因为早期插槽已采用其最后一个选项,请删除所有选项,直到您到达具有所需值的插槽,然后选择另一个(一个尚未使用的插槽)选择),并返回到步骤2.请注意,回溯重置排序列表中比您最终更改的插槽更高的插槽的所有选项和值。

步骤3.1如果发现所有插槽都有值,请将配置作为有效解决方案返回。

步骤3.2如果您发现某个插槽已经尝试了所有选项,但仍需要更改其值,因为步骤2.1,则返回false,因为没有针对指定域的有效解决方案。