我有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
是否有更好的算法来实现这一目标?
答案 0 :(得分:2)
在最坏的情况下,没有任何方法可以解决访问每个数组的每个成员的问题。在最佳情况下,您可能只能访问一个数组的每个成员,而另一个数组的一个成员。顺序基于最坏的情况;因此O(n + m)