Кинетическая структура данных — это структура данных, используемая для отслеживания атрибута геометрической системы, которая непрерывно движется. [1] [2] [3] [4] Например, кинетическая структура данных выпуклой оболочки поддерживает выпуклую оболочку группы движущихся точек. Разработка кинетических структур данных была мотивирована проблемами вычислительной геометрии , включающими физические объекты в непрерывном движении, такими как обнаружение столкновений или видимости в робототехнике, анимации или компьютерной графике.
Кинетические структуры данных используются в системах, где есть набор значений, которые изменяются как функция времени, известным образом. Таким образом, система имеет некоторые значения, и для каждого значения известно, что . Кинетические структуры данных позволяют выполнять запросы к системе в текущее виртуальное время и две дополнительные операции:
Могут поддерживаться дополнительные операции. Например, кинетические структуры данных часто используются с набором точек. В этом случае структура обычно позволяет вставлять и удалять точки.
Кинетическая структура данных позволяет хранящимся в ней значениям непрерывно меняться со временем. В принципе, это можно аппроксимировать путем выборки положения точек через фиксированные интервалы времени, а также удаления и повторной вставки каждой точки в «статическую» (традиционную) структуру данных. Однако такой подход уязвим для избыточной или недостаточной выборки, в зависимости от того, какой интервал времени используется, а также может быть расточительным с точки зрения вычислительных ресурсов.
Для построения кинетических структур данных можно использовать следующий общий подход: [5]
Сбои сертификатов называются «событиями». Событие считается внутренним, если свойство, поддерживаемое кинетической структурой данных, не изменяется при возникновении события. Событие считается внешним, если свойство, поддерживаемое структурой данных, изменяется при возникновении события.
При использовании подхода с сертификатами есть четыре показателя производительности. Мы говорим, что величина мала, если она является полилогарифмической функцией , или является для произвольно малого , где — количество объектов:
Отзывчивость — это наихудшее количество времени, необходимое для исправления структуры данных и дополнения сертификатов при сбое сертификата. Кинетическая структура данных отзывчива, если наихудшее количество времени, необходимое для обновления, невелико.
Максимальное количество сертификатов, в которых участвует любое одно значение. Для структур, включающих движущиеся точки, это максимальное количество сертификатов, в которых участвует любая одна точка. Кинетическая структура данных является локальной, если максимальное количество сертификатов, в которых участвует любое одно значение, невелико.
Максимальное количество сертификатов, используемых для расширения структуры данных в любой момент времени. Кинетическая структура данных является компактной, если количество сертификатов, которые она использует, равно или для произвольно малого . (небольшой фактор больше линейного пространства)
Отношение наихудшего числа событий, которые могут произойти при продвижении структуры к наихудшему числу «необходимых изменений» в структуре данных. Определение «необходимых изменений» зависит от проблемы. Например, в случае кинетической структуры данных, поддерживающей кинетическую оболочку набора движущихся точек, число необходимых изменений будет равно числу раз, которое кинетическая оболочка изменится по мере продвижения времени к . Кинетическая структура данных считается эффективной, если это отношение мало.
Эффективность определенной кинетической структуры данных может быть проанализирована для определенных типов траекторий. Обычно рассматриваются следующие типы траекторий: