Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm N非­;重叠最优分割_Algorithm_Grouping - Fatal编程技术网

Algorithm N非­;重叠最优分割

Algorithm N非­;重叠最优分割,algorithm,grouping,Algorithm,Grouping,这是我几天前遇到的一个问题。 给定一个整数项列表,我们希望将这些项划分为最多N个不重叠的连续存储箱,以最小化任何存储箱中的最大项数。 例如,假设给了我们项目(5、2、3、6、1、6),我们想要3个箱子。我们可以按如下方式对其进行优化划分: n

这是我几天前遇到的一个问题。 给定一个整数项列表,我们希望将这些项划分为最多N个不重叠的连续存储箱,以最小化任何存储箱中的最大项数。 例如,假设给了我们项目(5、2、3、6、1、6),我们想要3个箱子。我们可以按如下方式对其进行优化划分:

  • n<3:1,2(2项)

  • 3给定
    n
    bin和一个包含
    p
    项的数组,下面是一个可以使用的贪婪算法

    要最小化箱子中的最大项目数:


    • p给定
      n
      bin和一个包含
      p
      项的数组,下面是一个可以使用的贪婪算法

      要最小化箱子中的最大项目数:


      • p以下是一些psudocode,它将为您提供一个具有尽可能少的存储箱数量的解决方案:

        Sort the list of "Elements" with Element as a pair {Value, Quanity}.
        
        So for example {5,2,3,6,1,6} becomes an ordered set:
        Let S = {{1,1},{2,1},{3,1},{5,1},{6,2}}
        
        Let A = the largest quanity of any particular value in the set
        Let X = Items in List
        Let N = Number of bins
        Let MinNum = ceiling ( X / N )
        if A > MinNum then Let MinNum = A
        
        Create an array BIN(1 to N+1) of pointers to linked lists of elements.
        
        For I from 1 to N
          Remove as many elements from the front of S that are less than MinNum
          and Add them to Bin(I)
        Next I
        Let Bin(I+1)=any remaining in S
        
        LOOP while Bin(I+1) not empty
          Let MinNum = MinNum + 1
          For I from 1 to N
            Remove as many elements from the front of Bin(I+1) so that Bin(I) is less than MinNum
            and Add them to Bin(I)
          Next I
        END LOOP
        

        您的最小存储箱大小可能是
        MinNum
        bin(1)
        bin(N)
        将包含值的分布。

        以下是一些psudocode,它将为您提供一个具有最小存储箱数量的解决方案:

        Sort the list of "Elements" with Element as a pair {Value, Quanity}.
        
        So for example {5,2,3,6,1,6} becomes an ordered set:
        Let S = {{1,1},{2,1},{3,1},{5,1},{6,2}}
        
        Let A = the largest quanity of any particular value in the set
        Let X = Items in List
        Let N = Number of bins
        Let MinNum = ceiling ( X / N )
        if A > MinNum then Let MinNum = A
        
        Create an array BIN(1 to N+1) of pointers to linked lists of elements.
        
        For I from 1 to N
          Remove as many elements from the front of S that are less than MinNum
          and Add them to Bin(I)
        Next I
        Let Bin(I+1)=any remaining in S
        
        LOOP while Bin(I+1) not empty
          Let MinNum = MinNum + 1
          For I from 1 to N
            Remove as many elements from the front of Bin(I+1) so that Bin(I) is less than MinNum
            and Add them to Bin(I)
          Next I
        END LOOP
        

        您的最小仓位大小可能是
        MinNum
        bin(1)
        bin(N)
        将包含值的分布。

        您对此有何看法?这更像是一个算法问题,为什么只使用
        java
        tag,只是好奇而已?欢迎来到StackOverflow。要获得更好的回答和更少的反对票,请先浏览,然后阅读,尤其是和,然后根据这些指导原则发布您的问题。
        将最大项目数最小化
        -您确定吗?也许
        会最小化平均值或桶中的(max-min)
        ?对不起,这是第一次。是的,它是最大限度地减少项目数量。我不知道这个问题。我想我需要先分类。但下一步是什么?你需要找到所有的解决方案,还是只有一个?有时可能会有多个最佳分组。您对此有何看法?这更像是一个算法问题,为什么只使用
        java
        tag,只是好奇而已?欢迎来到StackOverflow。要获得更好的回答和更少的反对票,请先浏览,然后阅读,尤其是和,然后根据这些指导原则发布您的问题。
        将最大项目数最小化
        -您确定吗?也许
        会最小化平均值或桶中的(max-min)
        ?对不起,这是第一次。是的,它是最大限度地减少项目数量。我不知道这个问题。我想我需要先分类。但下一步是什么?你需要找到所有的解决方案,还是只有一个?有时可能有多个最佳分组。