Структура данных, которая обеспечивает способ получения пересекающихся периодов с низкими вычислительными затратами.

1

У меня есть (большой) набор данных. Он состоит из элементов с свойством timestamp, поэтому я бы назвал их событиями для ясности (хотя это может быть любое сопоставимое свойство).

Если я хочу иметь возможность быстро получать все события с меткой времени между A и B, я должен хранить их в TreeMap. Но это не конец истории.

Существуют отдельные события (с одной временной меткой) и непрерывные события (с двумя временными отметками - один для начала и один для конца).

Теперь давайте обозначим четыре метки времени ABCD, такие, что A <B <C <D. Существует также непрерывное событие x, начинающееся с A и заканчивающееся на D.

Интересно, существует ли эффективная структура данных, которая при запросе событий между B и C также возвращает событие x (потому что оно имеет общую часть с периодом, который мы запрашиваем). Самым важным для меня является стоимость приобретения элементов, но также важны затраты на построение и обновление структуры.

И, наконец, было бы еще лучше, если бы была уже реализована реализация Java такой структуры.

Теги:
data-structures
time-complexity

1 ответ

2
Лучший ответ

Вы ищете Сегмент-Дерево. Реализация одного события тривиальна (выбор простой зависит от реализации дерева) -

  • с равными отметками времени: [A,A] или:
  • с диапазоном "эпсилон": [A,A+e] такое, что e - наименьшее положительное число, которое может быть представлено.

Посмотрите на этот вопрос, и вы также можете искать и задавать этот тег. наслаждаться

Ещё вопросы

Сообщество Overcoder
Наверх
Меню