Диаметр множества точек (вращающиеся калиперы)
Есть множество точек на плоскости. Нужно найти две самые удалённые из них.
Найдём выпуклую оболочку исходного множества и получим более простую задачу: найти две наиболее удалённые вершины в выпуклом многоугольнике. Сделать это можно за линейное время с помощью метода, который называется вращающиеся калиперы (англ. rotating calipers).
Постановка задачи
Пусть — выпуклый многоугольник, в котором порядок обхода вершин направлен против часовой стрелки, и никакие три последовательные точки не лежат на одной прямой. Найти пару чисел , такие, что максимально.
Вращающиеся калиперы
| Определение: |
| Прямая называется опорной прямой (англ. line of support) для многоугольника , если его внутренность лежит по одну сторону от , при этом проходит хотя бы через одну из вершин . |
|
Так как и — какие угодно граничные точки фигуры , принадлежащие соответственно прямым и , то из перпендикулярности отрезка к прямым и следует, что ни одна из прямых , не может иметь с фигурой целый общий отрезок. Другими словами, каждая из этих прямых содержит единственную граничную точку фигуры .
| Лемма: |
Диаметр выпуклого полигона равен максимальному расстоянию между параллельными опорными прямыми. |
Литература
- M.I. Shamos Computational geometry, 1978 — С. 76.
- Яглом И.М., Болтянский В.Г. Выпуклые фигуры, 1951 — С. 20, 144.