将二维数组划分为尽可能相等的连续区域?

时间:2014-02-04 06:43:27

标签: algorithm multidimensional-array

我有一个浮点数的二维数组,我想把这个数组分成任意数量的区域,这样所有区域元素的总和大致相等。这些地区必须是连续的。尽可能相等,我的意思是应尽可能减少区域总和的标准偏差。

我这样做是因为我有一个与某个地区的“人口”相对应的价值图,我想将这个地区划分为相对平等的人群。

谢谢!

2 个答案:

答案 0 :(得分:0)

我会这样做:

1.计算全部金额

2.计算当地质心(坐标)

3.现在计算区域总和

  • 例如:

    region sum = whole sum / number of centers of masses
    

4.对于每个质心

  • 开始一个地区
  • 并逐渐增加大小,直到它与总和匹配区域总和
  • 避免区域交叉(使用一些使用地图)
  • 如果地区有所需的金额或无处增长停止

您必须稍微调整此算法以满足您的需求和输入数据

希望它有点帮助...

答案 1 :(得分:0)

标准偏差是衡量分歧是否接近相等的方法。较低的标准偏差意味着总和越接近。

由于问题似乎与群集问题类似,因此可以使用Genetic algorithms来解决问题: -

  
      
  1. 标准偏差可用作染色体的适应度量。
  2.   
  3. 考虑k个传染性区域,然后每个基因(元素)将具有保持区域传染性的k值之一。
  4.   
  5. 在染色体上应用遗传算法,并在固定的世代后获得k值的最佳染色体。
  6.   
  7. 将k从2变为n,并通过应用遗传算法获得最佳染色体。
  8.