假设我注册了一组“开启”间隔[tstart,tend]
a = [[0+t, 3.9+t], [7.1+t, 8.0+t], [9.02+t, 10.2+t]]
如何找到此模式的最佳匹配偏移量t以匹配另一组间隔:
b = [[5, 6], [7, 10], [11, 15], [18, 19], [20, 21] ... ]
[ t ]
---- - -
- --- ---- - - --- -- ---- - --
答案 0 :(得分:-1)
平凡算法(不一定非效率):选择偏移量t的所有值,使得每个集合中的一个间隔在其起点或终点对齐。对于这些偏移值中的每一个,计算总重叠以找到最大值。复杂度为O(n ^ 3),其中n是集合的大小(a和b的最大值)。给定偏移的重叠计算为O(n),可能的偏移值的数量为O(n ^ 2)。
在您的示例中,抵消将是:
匹配区间a [0]的开头到b:
5-0 = 5,7-0 = 7,11 = 0 = 11,....
将区间a [0]的结束与b:
中所有区间的结束相匹配6-3.9 = 2.1,10-3.9 = 6.1,15-3.9 = 11.1,......
我们继续对a中的所有间隔执行相同操作,并收集所有生成的偏移值。然后我们计算每个偏移的重叠。
答案 1 :(得分:-1)
您可以定义:
并计算: