Я хочу использовать структуру данных для сортировки данных пространства-времени (x, y, z, время).
В настоящее время алгоритм обработки ищет набор из 4D (x, y, z, времени) точек, учитывая сферический (3d) пространственный радиус и линейный (1d) временной радиус, отмечая для каждой точки, какие другие точки находятся в пределах эти радиусы. Причина в том, что после обработки я могу запросить любую точку 4D для всех ее соседей за O (1) раз.
Однако в некоторых распространенных конфигурациях пространственных и временных радиусов первый запуск алгоритма занимает около 12 часов. Хотите верьте, хотите нет, но это действительно быстро по сравнению с тем, что существует в нашей отрасли. Тем не менее, я хочу помочь ускорить начальные запуски и поэтому хочу знать: Подходит ли kd-дерево для 4-мерных данных пространства-времени?
Обратите внимание, что я не ищу реализации поиска ближайшего соседа или поиска k ближайших соседей.
Подробнее:
Пример набора данных имеет 450 000 4D точек.
Некоторые наборы данных ограничены во времени, поэтому упорядочение по времени, безусловно, экономит обработку, но все же приводит ко многим проверкам расстояния.
Время представлено датами в стиле Excel с типичными диапазонами от 30 000 до 39 000 (приблизительно). Пространственные диапазоны иногда являются более высокими значениями, иногда более низкими значениями, но диапазон между каждой пространственной координатой аналогичен времени (например, maxX-minX ~ maxT-minT).
Еще больше информации:
Я подумал, что добавлю немного более не относящихся к делу данных на случай, если кто-нибудь имел дело с подобным набором данных.
В основном я работаю с данными, которые представляют пространственно-временные события, которые записываются и подтверждаются несколькими датчиками. Ошибка связана, поэтому включены только события, которые соответствуют порогу ошибки.
Временной интервал этих наборов данных колеблется между 5-20 годами данных.
Для действительно старых данных (> 8 лет) события часто были очень пространственно плотными по двум причинам: 1) тогда было относительно мало доступных датчиков, и 2) датчики были расположены близко друг к другу, так что соседние события может быть правильно подтверждено с низкой ошибкой. Дальнейшие события могут быть записаны, но у них слишком высокая ошибка
Для более новых данных (<8 лет) события часто бывают очень плотными во времени по обратным причинам: 1) обычно доступно много датчиков, и 2) датчики размещаются через равные промежутки времени на большем расстоянии . </p>
В результате нельзя сказать, что наборы данных являются только плотными во времени или пространственно-плотными (за исключением случаев, когда наборы данных содержат только новые данные).
Заключение
Я явно должен задавать больше вопросов на этом сайте.
В течение следующего времени я буду тестировать несколько решений, которые будут включать в себя 4d-дерево kd, 3d-дерево kd с последующей проверкой временного расстояния (предложенное Дрю Холлом) и текущий алгоритм, который у меня есть. Кроме того, мне предложили другую структуру данных, называемую деревом TSP (разбиение пространства-времени), которая использует октре для пространства и bsp на каждом узле для времени, поэтому я также могу проверить это.
Предполагая, что я помню, я обязательно опубликую некоторые тесты профилирования для различных конфигураций радиусов времени / пространства.
Спасибо всем