两个数组中的元素序列如何相似

时间:2018-06-27 15:28:49

标签: arrays algorithm sequence

我有两个数组。包含元素的有序列表,例如[e1, e2, e2, e3, e4, e5, e5]。 B是A的子集,带有重复,例如[e1, e1, e2, e5, e4]。实际上,数组将大于此数组(长度可能少于10,000个元素),而性能很重要。

如何定量确定两个数组中元素的顺序有多相似? (理想情况下,不只是蛮力进行比较)

2 个答案:

答案 0 :(得分:1)

首先,您需要验证B的每个元素都属于A。由于A是排序数组,因此这是一次log(n)操作(使用二进制搜索),需要重复n次最多只能进行nxlog(n)个操作。

第二,您需要验证B的元素是否已排序或计算对它们进行排序所需的交换次数。这再次是使用e.q.的nxlog(n)操作。快速排序或任何其他有效算法。

答案 1 :(得分:1)

如果您要查看两个不同数据序列的相似性,考虑到同一数据可能有很多重复的副本,您可能想看看dynamic time warping,该算法可以测量这个数量。它可用于语音识别,时间序列数据分析和字符串相似度。