Диаметр множества точек (вращающиеся калиперы) — различия между версиями
Megabyte (обсуждение | вклад) (Новая страница: «{{В разработке}} Есть множество точек на плоскости. Нужно найти две самые удалённые из них...») |
Megabyte (обсуждение | вклад) |
||
Строка 18: | Строка 18: | ||
Пусть <tex>L_1</tex> и <tex>L_2</tex> {{---}} две параллельные опорные прямые фигуры <tex>\Phi</tex>, расстояние между которыми имеет максимальное значение. <tex>A_1</tex> и <tex>A_2</tex> {{---}} граничные точки фигуры <tex>\Phi</tex>, принадлежащие соответственно прямым <tex>L_1</tex> и <tex>L_2</tex>. Тогда отрезок <tex>A_1A_2</tex> перпендикулярен обеим прямым <tex>L_1</tex> и <tex>L_2</tex>. | Пусть <tex>L_1</tex> и <tex>L_2</tex> {{---}} две параллельные опорные прямые фигуры <tex>\Phi</tex>, расстояние между которыми имеет максимальное значение. <tex>A_1</tex> и <tex>A_2</tex> {{---}} граничные точки фигуры <tex>\Phi</tex>, принадлежащие соответственно прямым <tex>L_1</tex> и <tex>L_2</tex>. Тогда отрезок <tex>A_1A_2</tex> перпендикулярен обеим прямым <tex>L_1</tex> и <tex>L_2</tex>. | ||
|proof= | |proof= | ||
− | Предположим, что это не так. Тогда расстояние между прямыми <tex>L_1</tex> и <tex>L_2</tex> было бы меньше, чем отрезок <tex>A_1A_2</tex>, и тем более | + | Предположим, что это не так. Тогда расстояние между прямыми <tex>L_1</tex> и <tex>L_2</tex> было бы меньше, чем отрезок <tex>A_1A_2</tex>, и тем более меньше, чем расстояние между двумя опорными прямыми <tex>L'_1</tex> и <tex>L'_2</tex> фигуры <tex>\Phi</tex>, перпендикулярными к отрезку <tex>A_1A_2</tex>, что противоречит условию. |
}} | }} | ||
|[[Файл:perpendicular.png|250px|thumb|right]] | |[[Файл:perpendicular.png|250px|thumb|right]] | ||
Строка 31: | Строка 31: | ||
}} | }} | ||
+ | |||
+ | == Литература == | ||
+ | * ''M.I. Shamos'' Computational geometry, 1978 {{---}} С. 76. | ||
+ | * ''Яглом И.М., Болтянский В.Г.'' Выпуклые фигуры, 1951 {{---}} С. 20, 144. | ||
[[Категория: Вычислительная геометрия]] | [[Категория: Вычислительная геометрия]] |
Версия 04:35, 8 января 2014
Эта статья находится в разработке!
Есть множество точек на плоскости. Нужно найти две самые удалённые из них.
Найдём выпуклую оболочку исходного множества и получим более простую задачу: найти две наиболее удалённые вершины в выпуклом многоугольнике. Сделать это можно за линейное время с помощью метода, который называется вращающиеся калиперы (англ. rotating calipers).
Постановка задачи
Пусть
— выпуклый многоугольник, в котором порядок обхода вершин направлен против часовой стрелки, и никакие три последовательные точки не лежат на одной прямой. Найти пару чисел , такие, что максимально.Вращающиеся калиперы
Определение: |
Прямая | называется опорной прямой (англ. line of support) для многоугольника , если его внутренность лежит по одну сторону от , при этом проходит хотя бы через одну из вершин .
|
Так как
и — какие угодно граничные точки фигуры , принадлежащие соответственно прямым и , то из перпендикулярности отрезка к прямым и следует, что ни одна из прямых , не может иметь с фигурой целый общий отрезок. Другими словами, каждая из этих прямых содержит единственную граничную точку фигуры .Лемма: |
Диаметр выпуклого полигона равен максимальному расстоянию между параллельными опорными прямыми. |
Литература
- M.I. Shamos Computational geometry, 1978 — С. 76.
- Яглом И.М., Болтянский В.Г. Выпуклые фигуры, 1951 — С. 20, 144.