Помогите распознать алгоритм, Как называется?

Рейтинг: 0Ответов: 1Опубликовано: 27.04.2015

Науч. Рук говорит что тот алгоритм который он мне дал называется 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.

Фотки с доски:

1

2

3

Ответы

▲ 1

Это алгоритм кластеризации FOREL