找出列表中有多少个组

时间:2017-06-29 13:00:23

标签: algorithm grouping k-means

我有一个列表,其中每个值的区间为0..100。

前:

[0,1,2,20,21,29,30,31,31,32,89,90,91,92,92,92,92]

是否有算法可以确定此列表中有多少组?对于上面的列表,应该说有3组(0..2), (20..32), (89..92)

据我所知,k-means算法会将列表拆分成一定数量的组,但在我的情况下,我需要确定首先有多少组,所以k-means不会这真的有帮助。

如果语言有任何相关性,我将需要在PHP中执行此操作。

1 个答案:

答案 0 :(得分:0)

如果您知道您的群组可以按某个最小距离d分隔,则可以通过计算不在同一群组中的所有连续元素来计算群组:

Input: A, d
Output: num_groups

sort(A)
for i = 0 ... size(A) - 2
    if A[i + 1] - A[i] >= d
        num_groups++

如果您尚未确定最多k组的最佳最小距离,则可以通过计算相邻差异并选择{{1}来确定此值最大元素:

k