是否有一种方法可以找到不同大小、未排序的数字数组之间的距离?

Is there a measure to find the distance between different sized, unsorted arrays of numbers?

假设我有一个数字数组,例如 [2,6,3,4]。我想要一种方法来量化这个阵列和其他阵列之间的距离。根据以下规则运行的某种相似性度量:

  1. 数组中元素的顺序无关紧要。所以 [2,6,3,4] 和 [2,3,4,6] 之间的距离理想情况下应该为零。
  2. 数组可以有不同的大小。所以我想要数组之间的相似性度量,例如 [2,6,3,4] 和 [2,6,3,4,6],或 [2,6,3,4] 和 [2,4] .
  3. 它应该对异常值有一定的抵抗力。例如,[1,2,3] 应该类似于 [1,2,3,100]

有没有类似的方法?提前致谢。

好的,这可能是一个解决方案:

1) 既然你说了The order of the elements in the array shouldn't matter,那我就可以自由排序了。因此,您首先必须对所有数组进行专门的升序排序。

2)每个数组单独排序后,数组的集合必须是lexicographically sorted。您可能必须将数组转换为 String variables。您可以使用 ComparableComparator 来实现词典排序。

3) 字典排序后...相似的数组彼此足够接近。如果连续数组的长度相同,则计算 欧几里得距离 以获得更多度量。 就是这样..所有排序的数组和类似的数组都在附近:)

注意: 词典排序给你的优势是不计算不同大小的数组之间的距离,但它们之间有顺序:)

您可以排序然后取 Levenshtein distance