Я имею конечное метрическое пространство, заданное как (симметричное) k на k матрицу расстояния. Я бы хотел, чтобы алгоритм (приблизительно) изометрически вставлял это в евклидово пространство R ^ (k-1). Хотя это не всегда удается сделать точно, решая систему уравнений, заданную расстояниями, я ищу решение, которое внедряется с некоторой (очень малой) управляемой ошибкой.
В настоящее время я использую многомерное масштабирование (MDS) с выходным размером, установленным в (k-1). Мне приходит в голову, что в целом MDS может быть оптимизирован для ситуации, когда вы пытаетесь уменьшить размер встроенного внедрения до чего-то менее (k-1) (обычно 2 или 3) и что может быть лучший алгоритм для моего ограниченного случай.
Вопрос: что такое хороший/быстрый алгоритм реализации метрического пространства размера k в R ^ {k-1} с использованием евклидова расстояния?
Некоторые параметры и указатели:
(1) Мои k относительно малы. Скажем, 3 < k < 25
(2) На самом деле меня не волнует, если я вставляю в R ^ {k-1}. Если это упрощает вещи/делает вещи быстрее, любой R ^ N также будет прекрасен, пока он изометричен. Я рад, если есть более быстрый алгоритм или один с меньшей ошибкой, если я увеличусь до R ^ k или R ^ (2k + 1).
(3) Если вы можете указать на реализацию python, я буду еще счастливее.
(4) Все, что лучше, чем MDS будет работать.