将水果放在盒子里的最小动作

时间:2015-08-12 11:35:17

标签: algorithm math combinations permutation probability

我有3个盒子 - B1,B2,B3。每个盒子最初包含3种不同种类的水果混合物 - 苹果,橙子,芒果。我们的目标是将水果放在盒子里,每个盒子只包含一种水果。所以你需要将水果从一个盒子转移到另一个盒子以便进行安排。如何以最少的动作进行此操作?

假设有9个整数。由于每个框最初包含所有3种类型的水果,您可以将9个整数分成3组,每组分别代表B1,B2,B3中水果的初始排列。考虑:10,17,20,32,29,19,43,27,28。水果按Apple,Orange和&芒果。所以第一个盒子包含10个Apple,17个Orange& 20芒果等。

所需的最小移动次数是多少,以便所提到的盒子只包含一种类型的水果。任何盒子都可以包含任何一种水果。

2 个答案:

答案 0 :(得分:1)

通过将其表达为赋值问题然后使用Hungarian algorithm来找到最佳解决方案来解决此问题的一种方法。这将具有复杂度O(n ^ 3),其中n是框的数量。

要将其表示为作业,请将问题视为尝试为显示其最终内容的每个框指​​定标签。该作业的得分由当前未包含在框中的水果数量给出。

因此,例如,如果第一个框包含10个Apple,17个Orange和20个芒果,并且总共有85个苹果,那么将Apple标签分配到第一个框的成本是85-10 = 75。

答案 1 :(得分:0)

只有6种方法可以为3个盒子分配标签:

  1. 苹果,橘子,芒果
  2. 苹果,芒果,橘子
  3. 橘子,苹果,芒果
  4. 橙子,芒果,苹果
  5. 芒果,苹果,橘子
  6. 芒果,橘子,苹果
  7. 对于这些排列中的每一种,您都可以进行某种添加以找到移动成本。例如,对于排列1,您需要移动所有不在框1中的苹果,所有的橙子不在框2中,所有芒果不在框3中。因此,添加第2,第3,第4,第6,第7和第8个数字来自你的意见。

    为每个排列添加类似的添加,然后选择得分最低的排列。

    此处不需要/使用任何类型的花式算法,除非您想对n个框进行泛化。