首先是实际应用问题:
给定一组角度测量值 v[i]
,范围在 [0,360) 度之间,求包含所有 v[i]
的最小区间。
注意:该区间可能跨越 0 点。
问题的抽象描述:
对于给定的值集合 v[i]
,求满足以下条件的值 c
和 d
:
- 对于所有的
i
,dist(v[i],c) <= d
d
尽可能小dist(x,y) = abs(((x-y + N/2 + N) mod N) - N/2)
?
当在一个开放的(无限)尺度上时,其中 dist(x,y) = abs(x-y)
很容易解决:
calculate max and min of all v[i]
c = (max + min)/2;
d = (max - min)/2;
但是对于有限的尺度(模N)和上述距离定义,如何找到c和d的最佳方法呢?
也许有一种方法可以在O(n)的时间复杂度内完成(如果n是值的数量的话)。