- •Введение
- •Анализ предметной области. Постановка задачи на разработку
- •Комплектация помещений
- •Перечень технических устройств
- •Рабочая программа дисциплины «мис»
- •Описание лабораторной работы
- •Пример решения задачи
- •Критерии оценки при выполнении лабораторной работы
- •Постановка задачи на разработку и требования к системе
- •Выбор средств разработки приложения
- •Язык программирования
- •Разработка программного приложения для выполнения лабораторных работ
- •Архитектура приложения
- •Разработка базы данных
- •Пользователи и алгоритмы их работы
- •Проверка результатов
- •Разработка пользовательского интерфейса
- •Реализация пользовательского интерфейса и тестирование приложения
- •Реализация интерфейса преподавателя
- •Реализация пользовательского интерфейса модуля «Алгоритм Косарайю»
- •Реализация пользовательского интерфейса модуля «Метод к-средних»
- •Тестирование разработанного приложения
- •Заключение
- •Список использованных источников
Пример решения задачи
Рассмотрим пример пошагового выполнения алгоритма Косарайю и метода K-средних вручную.
На первом этапе исходный направленный
граф
преобразуется в инвертированный граф
, где направление всех рёбер меняется
на противоположное.
На втором этапе алгоритма Косарайю осуществляется поиск в глубину (DFS) на инвертированном графе. Начальная вершина выбирается произвольно, например, вершина 1. Все вершины изначально помечаются как "не исследованные". При выполнении поиска в глубину проверяются соседние узлы текущей вершины. Если соседний узел не был исследован, к нему осуществляется переход, и процесс повторяется рекурсивно. Если все соседние узлы исследованы или отсутствуют, текущая вершина помечается как "исследованная", и происходит возврат к предыдущему узлу. В процессе поиска формируется стек, который содержит порядок завершения обхода вершин. Например, из вершины 1 осуществляется переход в вершину 3, затем в вершину 2, которая добавляется в стек. После этого происходит возврат к вершине 3, которая также добавляется в стек, так как все её пути исследованы. Когда все доступные пути из текущей вершины исследованы, происходит возврат к предыдущей вершине. Этот процесс продолжается до тех пор, пока не будут исследованы все узлы графа.
В результате выполнения поиска в глубину на инвертированном графе был сформирован финальный стек, который выглядит следующим образом: U = [2; 3; 4; 5; 1; 6; 7; 8; 9; 10; 12; 13; 14; 15; 11].
Применяя алгоритм поиска в глубину на исходном графе и используя порядок вершин, определенный в стеке, необходимо определить сильно связанные компоненты. Начинаем с последней вершины, добавленной в стек, то есть с вершины 11. Из этой вершины можно перейти в вершину 12, а из нее — в вершины 13 и 14. Далее осуществляется переход в вершину 13, откуда есть рёбра к вершинам 14 и 15. Анализируя вершину 14, мы видим, что из нее можно попасть только в вершину 15, которая, в свою очередь, имеет обратное ребро к вершине 11. Поскольку поиск начинается с вершины 11, это приводит к образованию замкнутого цикла. Таким образом, вершины 11, 12, 13, 14 и 15 взаимно достижимы и формируют первую сильно связанную компоненту U1[11; 12; 13; 14; 15]. После выявления первой компоненты все её вершины удаляются из стека, и поиск в глубину продолжается для оставшихся вершин стека: U[2; 3; 4; 5; 1; 6; 7; 8; 9; 10]. В процессе анализа обнаруживается, что вершины 10, 8, 9, 7 и 6 образуют вторую сильно связанную компоненту U2[10; 8; 9; 7; 6]. Далее выявляются еще пять вершин: 5, 4, 3, 2 и 1, которые формируют третью сильно связанную компоненту U3[5; 4; 3; 2; 1]. Таким образом, после применения алгоритма Косарайю к исходной сетевой инфраструктуре из пятнадцати маршрутизаторов удалось выделить три сильно связанные компоненты.
Рассмотрим метод K-средних для углубления в кластеризацию узлов.
На первом этапе применения алгоритма
K-средних к исходной сети мы определим
необходимое количество кластеров. Это
количество будет установлено на основе
выбранной метрики K =
,
где N – количество исходных
объектов. В данном примере, включающем
15 граничных маршрутизаторов K
=
=
= 3.
На втором этапе выбираются центры
кластеров
.
В данном случае они задаются заранее и
определяются как множество маршрутизаторов
2,7,14}.
Для выполнения третьего этапа требуется определить способ измерения расстояний между объектами. В данном случае используется евклидова метрика, которая выступает в роли меры расстояния (4). Для её расчёта можно задать одну из характеристик, влияющих на качество обслуживания, таких как пропускная способность, задержка, доступность системы или интенсивность обработки данных. Также возможно учитывать их совокупность, что задаёт параметр , представляющий собой многомерное числовое пространство.
|
(4) |
где
— евклидово расстояние
между точкой X и центроидом;
—
характеристики
качества обслуживания из вектора d;
D — размерность n-мерного числового пространства.
В рамках примера решения задачи методом K-средних для варианта 0 были заданы произвольные значения параметров, таких как пропускная способность, задержка и интенсивность обработки пакетов. Эти значения приведены в Таблице 1.1.
Таблица 1.1 – Характеристики каждого узла
Метрика Узел |
Пропускная способность (Гбит/с) |
Задержка (мс) |
Время работы (%) |
Интенсивность обработки пакетов (тыс. пакетов/сек) |
1 |
5,12 |
7,34 |
99,85 |
412,23 |
2 |
10,48 |
5,89 |
99,6 |
210,45 |
3 |
6,73 |
11,22 |
99,57 |
276,89 |
4 |
7,15 |
8,43 |
99,92 |
305,76 |
5 |
3,21 |
5,78 |
99,94 |
145,32 |
6 |
3,67 |
13,29 |
99,88 |
512,47 |
7 |
2,03 |
4,51 |
99,7 |
375,12 |
8 |
9,12 |
7,45 |
99,5 |
489,55 |
9 |
5,89 |
8,87 |
99,8 |
468,99 |
10 |
8,21 |
10,12 |
99,75 |
328,67 |
11 |
1,57 |
14,45 |
99,52 |
482,11 |
12 |
10,12 |
5,36 |
99,7 |
95,78 |
13 |
7,98 |
9,88 |
99,55 |
152,23 |
14 |
3,45 |
11,89 |
99,9 |
82,67 |
15 |
3,12 |
2,56 |
99,68 |
210,89 |
Для маршрутизатора 1 проведем вычисление расстояний до трех центроидов и определим, к какому из них он ближе всего. Исходя из предоставленных данных, координаты маршрутизатора 1 и центроидов первого кластера следующие:
Маршрутизатор 1: [5,12; 7,34; 99.85; 412,23]
(маршрутизатор 2): [10,48; 5,89; 99,60; 210,45]
(маршрутизатор 7): [2,03; 4,51; 99,7; 375,12]
(маршрутизатор 14): [3,45; 11,89; 99,9; 82,67]
Расстояние от маршрутизатора до каждого центроида рассчитывается по формуле (5):
|
(5) |
где
,
,
,
— координаты
маршрутизатора;
,
,
,
— координаты
соответствующего центроида.
Тогда расстояние до центроида 1:
Расстояние до центроида 2:
Расстояние до центроида 3:
После вычисления расстояний необходимо
определить минимальное значение среди
,
,
.
Маршрутизатор 1 будет отнесен ко второму
кластеру, центроидом которого является
маршрутизатор 7. Этот процесс будет
повторяться для каждого маршрутизатора
в сети, и в результате первой итерации
все маршрутизаторы будут классифицированы
в кластеры в зависимости от ближайшего
центроида.
По завершении первой итерации каждый маршрутизатор был отнесен к кластеру, который находился ближе всего по расстоянию. В результате были сформированы три кластера, центроиды которых расположены в следующих группах:U1[2;3;13;15], U2[1;4;6;7;8;9;10;12], U3[5;11;14].
Затем проводится перерасчет центроидов, который основывается на вычислении средних значений параметров, составляющих вектор .
После обновления характеристик кластеров их центры остались неизменными, и процесс перераспределения маршрутизаторов продолжался до момента стабилизации параметров. В этом примере алгоритм K-средних достиг сходимости на четвёртой итерации, после чего дальнейшие перераспределения не происходили. Итоговые кластеры сформировались следующим образом: U1[2;3;4;10;15], U2[7;1;6;8;9; 11], U3[14;5;12;13].

,