Есть ли алгоритм карты близости или структура данных? - PullRequest
2 голосов
/ 23 февраля 2009

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

Учитывая некоторые данные с плавающей запятой, поместите эти данные в слоты (одномерный регистр) или сетку (двумерный регистр) так, чтобы каждый элемент данных находился в элементе слота или сетки, значение которого наиболее близко к значению элемента.

Это не тот случай, когда значения слота / сетки расположены равномерно.

Например, поместите следующие данные в следующие слоты:

данные: 0,1, 0,6, 4,23, 5,1, 7,0

слотов: 0,0, 0,4, 0,6, 1,2, 5,0, 10,0

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

Что было бы неплохо, так это что-то вроде дерева или хеш-таблицы, где вы запрашиваете у дерева значение, соответствующее ключу, но с неаккуратными сравнениями, которые дают наиболее близкое совпадение.

Существует ли такой зверь?

(Прямо сейчас, у меня просто есть циклы, которые делают много сравнений. Похоже, что я мог бы по крайней мере добиться большего успеха, используя бинарный поиск по слотам, хотя ...)

Ответы [ 2 ]

6 голосов
/ 23 февраля 2009

Взгляните на k-d деревья .

2 голосов
/ 23 февраля 2009

Для 2D-случая я бы порекомендовал диаграммы Вороного , которые хорошо освещены в большинстве текстов по вычислительной геометрии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...