我需要从输入的整数数组中导出整数簇,以使簇内的变化最小化。(数组中的整数或数据值对应城市间行驶的16辆汽车的油耗,最后我会根据数据值的聚类,从这16辆汽车中推导出4个聚类。)
约束:元素的数量总是16,没有。簇的数量为 4,簇的大小为 4。
我打算做的一种简单方法是对输入数组进行排序,然后将它们分成 4 组,如下所示。我认为我也可以使用 k-means 聚类。
但是,我卡住的地方如下:数组中的数据随时间变化。基本上,我需要每 1 秒监视一次阵列并重新组合/重新集群它们,以便最大限度地减少集群内的变化。此外,我需要满足上述约束。为此,我得到的一个想法是根据它们的平均值和变化选择两组,并在组之间移动数据值以最小化组内的变化。但是,我不知道如何选择要在组之间移动的数据值以及如何选择这些组。我无法每秒对数组进行排序,因为我无法承受每秒的 NlogN。如果您指导我提出一个简单的解决方案,那就太好了。
sorted `input array: (12 14 16 16 18 19 20 21 24 26 27 29 29 30 31 32)`
cluster-1: (12 14 16 16)
cluster-2: (18 19 20 21)
cluster-3: (24 26 27 29)
cluster-4: (29 30 31 32)