有没有措施来找到不同大小,未排序的数字数组之间的距离?

时间:2015-04-09 16:38:30

标签: arrays distance similarity

说我有一组数字,例如[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]
  4. 有没有任何方法可以做类似的事情?提前谢谢。

2 个答案:

答案 0 :(得分:1)

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

1)因为你说The order of the elements in the array shouldn't matter,所以这给了我一些自由排序。因此,您首先必须对所有数组进行特定升序排序。

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

3)在词典排序之后......类似的数组将彼此足够接近。如果连续数组具有相同的长度,则计算欧几里德距离以获得更多度量。  所以它是..所有数组排序和类似的数组靠近:)

注意: Lexicographical Sort为您提供的优势是不计算不同大小的数组之间的距离,但它们之间有顺序:)

答案 1 :(得分:0)

您可以排序,然后选择Levenshtein distance