Коннор, андроид из КиберЛайф
Гуру
(2751)
3 года назад
Как определить расстояние между векторами? Вектор по определению не имеет координат. Он имеет направление и длину. Остальное - производное. Таким образом за начало любого вектора можно взять любую точку, например центр системы координат. Так что расстояния между ними значения не имеют (их можно свести к нулю). Похожесть определять по расстоянию между конечными точками при постраении векторов из центра системы координат - как вариант.
MастерУченик (242)
3 года назад
Хорошо, если перефразировать условие - дано 20 объектов, каждый состоит из 10 значений в промежутке 1;-1
Какой алгоритм сортировки по критерию похожести 19 объектов относительно одного выбранного?
Плоскость XY
Каждый 2D вектор состоит из 10 точек. Представляет собой изломанную 10 раз линию.
Ось Х:
Координаты всех точек целочисленные, в пределах от 1 до 10. Иными словами расстояние между соседними точками по Х всегда =1
Ось Y:
Произвольное значение каждой точки от 1 до -1
Общее уравнение для вектора можно записать в виде:
[X1=1, Y1=rand(1;-1)],...X10=10,Y10=rand(1;-1)]
Задача:
Если построить 20 векторов согласно условию и выбрать любой один из них (main vector), то каким образом можно оставшиеся 19 векторов отсортировать по критерию "похожести" относительно выбранного main vector?
Мои мысли:
Поскольку координаты по оси Х у всех векторов совпадают, нас интересует разница лишь по оси Y в соответствующих точках. Хорошо. Значит берем main vector и один из 19 векторов, считаем абсолютное расстояние между их Y на одинаковых значениях Х. Получится список из 10 значений. Находим среднее арифметическое.
По такому же принципу далее сравниваем main vector с каждым из оставшихся векторов, после чего выстраиваем рейтинг "похожести" от наименьшего среднего арифметического к наибольшему.
Есть идеи получше?
P.S. За термин "похожесть" извиняюсь, не знаю как это правильно назвать.
Надеюсь суть передал.
Спасибо.