Есть массив векторных дискретных данных (вектор определен на пространстве размености V для примера V=10 )число эленментов массива - N =
.. Дискретное пространство значений - куб на V допустим 100 на каждое измерение. То есть число дискретных отсчетов
.
Необходимо создать пирамидальную структуру, чтобы легко переходить из пространства данных в пространство значений.
Понятно, что пространсво значений сильно разрежено относительно данных - то есть на каждый вектор приходися
неиспользованных значений.
Алгоритм создания такой структуры с моей точки зрения выглядит так:
1. создаем 100 узлов первого измерения и далее из каждого выращиваем дерево с ветвлением по мере поступдения значений векторов.
2. Кадое дерево требует выделения новой памаяти как под указатели, так и под параметры ветвления и анализа данных.
Если писать такую программу в С подобных языках, то возникает проблема с переаллокацией - из опыта знаю, что слишком много указателей под каждый из которых выделена память на массив, просто затыкает вычислительный процесс. Поэтому навеняка есть алгоритм, который работает напрямую с заранее выделенной памятью (пусть с некоторым кратным запасом пропорциональным N).
То есть сначала оценивается максимальная память на данные и на указатели, а затем они просто переоаределяются.
Заранее прошу прощение за сумбурное объяснение, но программированием занялся лишь через пять лет после окончания физфака, и было это очень давно.
Так что базовые алгоритмы прошли мимо меня. :)(Одно время даже считал себя автором depth first search и dynamic programming алгоритмов).
Поэтому заранее спасибо, если дадите ссылку на подобный алгоритм (что-то похожее должно быть в базовых классах С++)