改进O(m + n)算法来计算相关性吗?

时间:2019-07-06 22:54:14

标签: algorithm time-series

我有2个数据集,其中包含排序的时间戳记

我想计算它们之间的相关性。

如果两个时间戳出现在彼此的某个阈值之内,我们认为它们是匹配的。

我有一个O(M + N)算法,我认为它可以正常工作,但是我想知道是否有更好的算法?

基本上,我遍历两个时间戳数组,计算每个时间戳之间的绝对时差,如果其短于阈值,则增加一个计数器。
我从当前两个时间戳中最早的那个数组中选择下一个时间戳,然后重复。
最后,相关性是找到的匹配项数除以数据集大小。

这是到目前为止我所拥有的伪代码:

matches=0
i=0, j=0

while i < timestamps_1.size and j < timestamps_2.size
    diff = abs(timestamps_1[i] - timestamps_2[j])
    if diff < threshold
        matches += 1
    if timestamps_1[i] < timestamps_2[j]
        i += 1
    else
        j += 1
correlation = matches / timestamps_2.size            

是否有更好的算法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

在最坏的情况下,没有任何方法可以解决访问每个数组的每个成员的问题。在最佳情况下,您可能只能访问一个数组的每个成员,而另一个数组的一个成员。顺序基于最坏的情况;因此O(n + m)