Первое практическое применение, которое привело меня к проблеме:
Учитывая набор угловых измерений 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;
Но как лучше всего найти c и d для конечного масштаба (по модулю N) и
определение расстояния, как указано выше?
Может быть, есть способ сделать это O (n) (если n - число значений)?