Помогите распознать алгоритм, Как называется?
Науч. Рук говорит что тот алгоритм который он мне дал называется isodata, но в книге это совсем дургой алгоритм, вот сам алгоритм (который дали):
T: (x,y,m - метка) точка с координатами и меткой. инициализируются с m = 0;
D(T_i, T_j) - функция расстояния, например Евклидова мера
D_p - пороговое значение расстояния - параметр алгоритма
Кол-во кластеров K = 0
for i to N = кол-во точек do
if P_i.m != 0 : continue
T_0 := T_i, K++, T_0.m = K;
D_min = max_double;
for j to N do
if i = j || T_j.m != 0 then: continue
D_j = D(T_i, T_j)
if D_j < D_min then:
D_min := D_j
T_min := T_j
if D_min < D_p then
T_min.m := T_i.m
T_0 := среднее африфметическое для всех T_k: T_k.m = T_i.m
else continue
Алгоритм которыйй он мне дал, как ни странно, не работает. Я его реализовывал полгода назад но уже потерял рабочую реализацию.
Формальным языком:
1) Взять непомеченную точку P_i как основу нового кластера
2) Найти для нее ближайшую точку P_k != P_i из массива, если расстояние D(P_k, P_i) не превышает порогового то пометить точку P_k (и перерасчитав центр кластера повторить шаг 2, в моей реализации), иначе перейти к шагу 1.
Фотки с доски: