Алгоритм подбора абстрактных расстояний в 2D - PullRequest
10 голосов
/ 07 февраля 2012

Предположим, нам дано небольшое количество объектов и «расстояний» между ними - какой алгоритм существует для подгонки этих объектов к точкам в двумерном пространстве способом, который приближает эти расстояния?

Сложность в том, что «расстояние» - это не расстояние в евклидовом пространстве - поэтому мы можем только соответствовать / приблизиться.

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

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

Учитывая, что количество объектов мало, вы можете создать неориентированный взвешенный граф, где эти объекты будут узлами, а ребро между любыми двумя узлами имеет вес, соответствующий расстоянию между этими двумя объектами.В итоге получается n * (n-1) / 2 ребер.

После создания графа существует множество программ и алгоритмов визуализации, соответствующих графам.

0 голосов
/ 09 февраля 2012

Это пример многомерного масштабирования или, в более общем смысле, нелинейного уменьшения размерности .Существует достаточно инструментов / библиотек для этого (см. Вторую ссылку для списка).

0 голосов
/ 07 февраля 2012

Попробуйте метод триангуляции, что-то вроде этого;

  • Начните с выбора трех объектов с известными расстояниями между ними и создайте треугольник в произвольной сетке на основе длины сторон.

  • Для каждого дополнительного объекта, который не был размещен, найдите, по крайней мере, три других объекта, которые были размещены, до которых вы знаете расстояния, и используйте эти расстояния для размещения объекта, используя пересечение расстояния / расстояния (т.е. пересечение точка трех окружностей с центром вокруг неподвижных точек с радиусами расстояний)

  • Повторяйте до тех пор, пока все объекты не будут размещены или больше не будет размещено никаких объектов.

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

Редактировать: Согласно приведенному ниже комментарию, где расстояния являются приблизительными и содержат элемент ошибки, вышеупомянутый подход может использоваться для установления предварительных координат для каждого объекта, и затем эти координаты могут быть скорректированы используя метод наименьших квадратов, такой как вариация координат Это также учитывало бы весовые расстояния на основе их величины по мере необходимости. Более подробное описание можно найти в книге Ghilani & Wolf по теме . Это очень сильно зависит от характера различий между вашими расстояниями и того, как вы хотели бы, чтобы ваши объекты были представлены в евклидовом пространстве на основе этих расстояний. Отношения должны быть смоделированы и применены как часть любого решения.

...