Вопрос

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

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

Спасибо.

-дидл

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top