Бонусная лекция. Корневая и Диаграмма Вороного (20 марта 2014)
- Корневая эвристика со split и rebuild
- Split: разбить кусок, содержащий i-ю позицию на 2 куска. [code]
- Insert(i, x), Delete(i), количество кусков увеличивается на 2, когда станет слишком много, делаем rebuild
- Reverse [L..R], getMin [L..R], relaxMax [L..R] [code]
- Диаграмма Вороного
- Определение. Хранение (ориентированный граф, для каждого ребра есть ссылка на обратное и номер грани)
- Доказательство линейности размера
- Построение за O(n2)
- В теории можно строить за O(nlogn). Решение задача "ближайшая точка для каждой" за O(n) при построенной диаграмме.
- Ближайшие точки
- Поиск ближайшей точки в A для каждой точки множества A за O(n√ n ), где n = |A|