В ППП NNT используется 4 функции для расчета расстояний между узлами сетки.
Функция dist вычисляет евклидово расстояние между нейронами, размещенными
в узлах сетки, в соответствии с формулой
, (7.10)
где pos i, pos j – векторы положения нейронов с номерами i и j.
Обратимся к прямоугольной сетке из шести нейронов (см. рис. 7.6) и вычислим соответствующий массив расстояний:
pos = gridtop(2,3);
d = dist(pos)
d =
0 1 1 1.4142 2 2.2361
1 0 1.4142 1 2.2361 2
1 1.4142 0 1 1 1.4142
1.4142 1 1 0 1.4142 1
2 2.2361 1 1.4142 0 1
2.2361 2 1.4142 1 1 0
Этот массив размера 6´6 описывает расстояния между нейронами и содержит на диагонали нули, поскольку они определяют расстояние нейрона до самого себя, а затем, двигаясь вдоль строки, – до второго, третьего и т. д.
На рис. 7.9 показано расположение нейронов в узлах прямоугольной сетки. Введем понятие окрестности для прямоугольной сетки. В этом случае окрестность размера 1, или просто окрестность 1, включает базовый нейрон и его непосредственных соседей; окрестность 2 включает нейроны из окрестности 1 и их соседей.
Рис. 7.9
Размер, а соответственно и номер окрестности, определяется максимальным значением координаты смещения нейрона от базового. Вводимое таким способом расстояние
между нейронами называется расстоянием максимального координатного смещения
и может быть вычислено по формуле
(7.11)
где pos i, pos j – векторы положения нейронов с номерами i и j.
Для вычисления этого расстояния в ППП NNT предназначениа М-функция boxdist. Для конфигурации нейронов, показанной на рис. 7.6, эти расстояния равны:
pos = gridtop(2,3);
d = boxdist(pos)
d =
0 1 1 1 2 2
1 0 1 1 2 2
1 1 0 1 1 1
1 1 1 0 1 1
2 2 1 1 0 1
2 2 1 1 1 0
Расстояние максимального координатного смещения между базовым нейроном 1 и нейронами 2, 3 и 4 равно 1, поскольку они находятся в окрестности 1, а расстояние между базовым нейроном и нейронами 5 и 6 равно 2, и они находятся в окрестности 2. Расстояние максимального координатного смещения от нейронов 3 и 4 до всех других нейронов равно 1.
Определим другое расстояние между нейронами, которое учитывает то количество связей, которое необходимо установить, чтобы задать путь движения от базового нейрона. Если задано S нейронов, положение которых определяется векторами p i, i = 1, …, S,
то расстояние связи между ними определяется соотношением
(7.12)
Если евклидово расстояние между нейронами меньше или равно 1, то расстояние связи принимается равным 1; если между нейронами с номерами i и j имеется единственный промежуточный нейрон с номером k, то расстояние связи равно 2, и т. д.
Для вычисления расстояния связи в ППП NNT предназначена функции linkdist.
Для конфигурации нейронов, показанной на рис. 7.6, эти расстояния равны:
pos = gridtop(2,3);
d = linkdist(pos)
d =
0 1 1 2 2 3
1 0 2 1 3 2
1 2 0 1 1 2
2 1 1 0 2 1
2 3 1 2 0 1
3 2 2 1 1 0
Расстояние связи между базовым нейроном 1 и нейронами 2, 3 равно 1, между базовым нейроном и нейронами 4 и 5 равно 2, между базовым нейроном и нейроном 6 равно 3.
Наконец, определим расстояние максимального координатного смещения по формуле
, (7.13)
где pos i, pos j – векторы расположения нейронов с номерами i и j.
Для вычисления расстояния максимального координатного смещения в ППП NNT предназначена функции mandist. Вновь обратимся к конфигурации нейронов на рис. 7.6:
pos = gridtop(2,3);
d = mandist(pos)
d =
0 1 1 2 2 3
1 0 2 1 3 2
1 2 0 1 1 2
2 1 1 0 2 1
2 3 1 2 0 1
3 2 2 1 1 0
В случае прямоугольной сетки оно совпадает с расстоянием связи.