На чём держится
точки на плоскости
Статьи
GRA
Алгоритм
Задача коммивояжёра
Кратчайший объезд всех точек: ближайший сосед, 2-opt со списками соседей, Or-opt, оценка Хелда — Карпа.
NP-трудна; точно O(2ⁿ · n²)
2 задачи
PAR
Алгоритм
Ближайшая пара точек
Две ближайшие точки из n за n log n: разрез, полоса шириной 2d и семь соседей; сеткой — за n в среднем.
O(n log n)
2 задачи
GEO
Приём
Векторы и ориентация
Знак векторного произведения — поворот налево или направо; на нём стоит почти вся вычислительная геометрия.
O(1) на один поворот
2 задачи
GEO
Алгоритм
Пересечение отрезков
Где встречаются два отрезка — точно, в дробях; и как найти все встречи среди тысяч отрезков без перебора пар.
O(1) на пару; O(n²) перебором для n отрезков
2 задачи
GEO
Алгоритм
Выпуклая оболочка
Наименьший выпуклый многоугольник, содержащий все точки, за O(n log n).
O(n log n)
2 задачи
GEO
Алгоритм
Точка в многоугольнике
Луч из точки пересекает границу нечётное число раз — точка внутри; число оборотов — то же со знаками.
O(n) на точку
2 задачи
GEO
Алгоритм
Площадь многоугольника
Площадь по координатам вершин: сумма xᵢyᵢ₊₁ − xᵢ₊₁yᵢ, а её знак — направление обхода.
O(n)
2 задачи
GEO
Алгоритм
Триангуляция Делоне и диаграмма Вороного
Зоны ближайшей точки и треугольники с пустыми окружностями: две стороны одной структуры.
O(n log n) в среднем
2 задачи
GEO
Структура данных
k-d дерево
Двоичное дерево, которое делит пространство по осям по очереди: ближайшая точка — за десятки шагов вместо перебора.
O(n log n) построение; O(log n) на запрос в среднем
1 задача
GEO
Приём
Вращающиеся калиперы
У 971 из 2679 кварталов центра Алматы наименьший прямоугольник повёрнут на 4–8°: сетка улиц смотрит не строго на север.
O(n) после оболочки, O(n log n) с ней
2 задачи
GEO
Алгоритм
Упрощение линий Рамера — Дугласа — Пекера
Упростить ломаную без потери формы: точка, дальше всех от хорды, остаётся, если она дальше допуска.
O(n log n) в типичном случае, O(n²) в худшем
2 задачи
GEO
Приём
Кривые Гильберта и geohash
Пронумеровать плоскость так, чтобы соседи на карте стояли рядом в одномерном индексе: Z-порядок, geohash, Гильберт.
O(k) на номер
1 задача
ML
Алгоритм
k-средних
Делит точки на k групп так, чтобы точки были поближе к центру своей группы.
O(n · k · d) за шаг
2 задачи
ML
Алгоритм
DBSCAN
Собирает в кластеры плотные области точек любой формы, а одинокие точки помечает как шум.
O(n·Q + Σ|N(p)|)
2 задачи
ML
Алгоритм
k ближайших соседей
Отвечает так, как ответило большинство из k самых похожих известных примеров.
O(n · d) на вопрос
2 задачи
Задачи
Район по соседям
Алгоритм Ллойда по правилам
Вдоль какой линии
Где встречаются отрезки
Кластеры на карте эпицентров
Маршрут по кривой Гильберта
Пары ближе r
Перекрёсток: внутри, снаружи или на границе
Пересекаются ли отрезки
Площадь забора
Площадь района из нескольких кусков
Районы электросети
Сколько треугольников
Упростить тропу
Ближайшие города
Время круга
Где поставить новую часть
Дальность дрона
Два ближайших города
Карта на всех масштабах
Навигатор без тригонометрии
План облёта
Порог плотности
Пронести в проём
Пункт выдачи
Самая далёкая пара
Сколько кругов
Сколько соседей спросить о глубине
Туда на восток, обратно на запад
Яблони в узлах сетки
Подписи сёл на карте
Часто рядом
геоданные 13 классика 13 карты и навигация 9 собеседования 7 многоугольник 6 ближайший сосед 5 разделяй и властвуй 3 случайность 3 хеширование 3 точность вычислений 3 игры 3 олимпиады 3