Алгоритм установки абстрактных расстояний в 2D

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

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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

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

Изменить:. В соответствии с комментарием ниже, где расстояния являются приблизительными и включают элемент ошибки, вышеупомянутый подход может использоваться для установления временных координат для каждого объекта, и эти координаты могут быть затем с использованием метода наименьших квадратов, такого как изменение координат Это также учитывало бы весовые расстояния в зависимости от их величины по мере необходимости. Для более подробного описания, проверьте книгу Гилани и Вольфа по этому вопросу. Это во многом зависит от характера различий между вашими расстояниями и того, как вы хотели бы, чтобы ваши объекты были представлены в евклидовом пространстве на основе этих расстояний. Связь должна быть смоделирована и применена как часть любого решения.