Поиск ближайших точек.
- Формулировки задач.
- Задача: даны N точек, найти пару ближайших
- Задача: для каждой из N точек найти ближайшую среди тех же N.
- Задача: для каждой из N точек найти ближайшую среди множества из других M точек.
- Диаграмма Вороного
- Линейный размер (следствие из теоремы Эйлера, и того, что степень каждой вершины > 3)
- Построение за O(N2) (простой алгоритм, из всех известных мне, самый короткий)
- Построение за O(NlogN) ScanLine-ом с параболами (не забудем повернуть на случайный угол)
- Триангуляция Де Лоне
- Двойственность этих задач (срединный перпендикуляр соединяет два центра описанных окружностей)
- Построение: итеративный метод с док-вом (если что-то не так, развернем диагональ)
- Метод проецирования на прямую.
- Прямая должна быть случайной.
- Задача 2: тест, на котором работает O(NsqrtN)
- Задача 3: тест, на котором работает O(N2)
- Квадродеревья.
- Собственно подход, схожесть с проекцией на прямую.
- Задача 2: тест, на котором работает O(NsqrtN)
- Задача 3: тест, на котором работает O(N2)
Практика
- Спроецируем на прямую, дубль #1 110304a1 : 1A
- Спроецируем на прямую, дубль #2 110304a1 : 1B
- Спроецируем на прямую, дубль #3 110304a1 : 1C
- Диаграмма Вороного за O(N2) 110304a1 : 1D
- Диаграмма Вороного за O(NlogN) 110304a1 : 1E
- Применение ScanLine-а к Диаграмме Вороного за O(NlogN) timus : 1369