определение расстояния между точками в n-измерениях - PullRequest
0 голосов
/ 04 октября 2009

Я строю таблицу mySQL, перечисляя точки в n-измерениях, каждое измерение индексируется. Учитывая любую точку в n-мерной системе, я хотел бы иметь возможность выводить все остальные точки в порядке их расстояния от выбранной точки.

Простым решением было бы рассчитать расстояния от каждой точки, используя теорему Пифагора ... sqrt (x ^ 2 + y ^ 2) = z. Я искал более эффективный метод. Требуется только приблизительный заказ, поэтому я очень открытый.

Спасибо.

-diddle

Ответы [ 2 ]

1 голос
/ 04 октября 2009

Обычная техника для такого рода вещей - это учитывать квадрат расстояния вместо фактического расстояния, которое устраняет квадратный корень, но, если я правильно понимаю вопрос, вам не нужно извлекать фактическое расстояние из индекс. В этом случае вы можете просто использовать сумму абсолютного значения каждого компонента.

0 голосов
/ 04 октября 2009

Наряду с тем, что было дано, вы могли бы также рассмотреть «объединение» ваших точек - то есть (по крайней мере, мысленно) нарисовать сетку над вашей «картой» и отслеживать точки в зависимости от того, в какой квадрат они попадают. По сути, вы начинаете с точек в том же квадрате, затем в «кольце», окружающем квадрат выбранной точки, затем в следующем кольце наружу и так далее. В зависимости от размера сетки, которую вы используете, вы можете сделать это как можно точнее или приблизительным. Конечно, 2D-сетка предназначена для 2D-точек - если у вас больше размеров, вам придется увеличить размерность сетки, чтобы соответствовать.

...