Научная статья на тему ' разработка модуля-задания “построение графа по матрице смежности” для лабораторного комплекса GraphLabs'

разработка модуля-задания “построение графа по матрице смежности” для лабораторного комплекса GraphLabs Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
171
21
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
лабораторный комплекс / модуль / граф / матрица смежности / алгоритм визуализации / алгоритм автоматизированной проверки. / laboratory complex / module / graph / adjacency matrix / graph visualization algorithm / automatic checking algorithm.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Родкина Э. А., Завражнова М. В., Шошина А. В.

В статье описаны результаты реализации модуля-задания для проверки знаний по университетскому курсу “Теория графов”, рассмотрена модификация алгоритма визуализации графа на основе окружности и алгоритма автоматизированной проверки.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Родкина Э. А., Завражнова М. В., Шошина А. В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DEVELOPMENT OF MODULE “CREATION OF GRAPH BY ADJACENCY MATRIX” FOR LABORATORY COMPLEX GRAPHLABS

The article describes the results of realization of module for testing knowledges in theory of graphs, shows modification of graph visualization and automatic checking algorithms.

Текст научной работы на тему « разработка модуля-задания “построение графа по матрице смежности” для лабораторного комплекса GraphLabs»

MEDICAL SCIENCES / <<Ш^Ш(МиМ~ЛШ®Ма1>#Ш(№)),2(0]9

УДК: 004.415.25

Родкина Э. А., Завражнова М. В., Шошина А. В.

Национальный исследовательский ядерный университет "МИФИ"

DOI: 10.24411/2520-6990-2019-10597 РАЗРАБОТКА МОДУЛЯ-ЗАДАНИЯ "ПОСТРОЕНИЕ ГРАФА ПО МАТРИЦЕ СМЕЖНОСТИ" ДЛЯ ЛАБОРАТОРНОГО КОМПЛЕКСА GRAPHLABS

Rodkina E. A., Zavrajnova M. V., Shoshina A. V.

National research nuclear university "MEPhl"

DEVELOPMENT OF MODULE "CREATION OF GRAPH BY ADJACENCY MATRIX" FOR

LABORATORY COMPLEX GRAPHLABS

Аннотация

В статье описаны результаты реализации модуля-задания для проверки знаний по университетскому курсу "Теория графов", рассмотрена модификация алгоритма визуализации графа на основе окружности и алгоритма автоматизированной проверки. Abstract

The article describes the results of realization of module for testing knowledges in theory of graphs, shows modification of graph visualization and automatic checking algorithms.

Ключевые слова: лабораторный комплекс, модуль, граф, матрица смежности, алгоритм визуализации, алгоритм автоматизированной проверки.

Key words: laboratory complex, module, graph, adjacency matrix, graph visualization algorithm, automatic checking algorithm.

Введение

Графы впервые встречаются в письмах Леонардо Эйлера, где он предлагает решение задачи о семи кенигсбергских мостах [5, с.13]. Сам термин был введен Джеймсом Джозефом Сильвестром в 1878 году [5, с.13]. Сейчас теория графов - наука, широко применяющаяся в программировании, что подчеркивает ее актуальность в нынешнем веке 1Т-технологий.

Практическое применение графов достаточно обширно. На основе данного математического объекта могут быть реализованы алгоритмы поиска решений, разрешения зависимостей. В частности, матрица смежности (простейшая модель связанной системы, учитывающая не только связь между элементами системы, но и направление связи) используется в мобильных приложениях для построения маршрутов.

Основная цель данной работы - разработка модуля построения графа по матрице смежности для проверки знаний студентов по курсу "Теория графов". Непосредственно к задачам относятся:

• Анализ структуры и средств комплекса ОгарЬЪаЬБ.

• Выбор и модификация алгоритмов отри-совки и автоматизированной проверки;

• Реализация и тестирование модуля.

Структура лабораторного комплекса

GraphLabs

Лабораторный комплекс GraphLabs представляет собой сайт, пользовательский интерфейс которого включает форму для входа на сайт (после ее заполнения происходит переход в личный кабинет студента с доступными к выполнению лабораторными работами). Сами лабораторные - это модули, реализованные на языке JavaScript. Интерфейс каждого модуля включает в себя панель инструментов, рабочую область, задание и панель с полученной оценкой.

Лабораторный комплекс включает следующие библиотеки: Core.Graphs - модуль, реализующий логику работы с графами, Core.GraphVisualizer -модуль, реализующий расчет координат при визуализации, Core.Template - шаблон для создания модулей, Core.Lib - библиотека визуальных компонентов.

На рисунке 1 можно видеть небольшую схему, где изображена взаимосвязь компонентов лабораторного комплекса.

Рис. 1 - Взаимосвязь компонентов ОгарЫаЪз

Все модули на схеме наследуются от шаблона, а шаблон использует библиотеки Core.GraphVisual-izer и Core.Graph. Разрабатываемый модуль (Tasks.GraphByAdjacencyMatrix) также использует Core.Lib для отображения матрицы в качестве задания для студента.

Описание алгоритма визуализации графа Для визуализации графа в лабораторном комплексе используется алгоритм отрисовки вершин по кругу [1, с. 119], поскольку он несколько проще в реализации, чем иные наиболее распространенные ([1, с.119], [1, с.120], [2]): в его основе лежат

всем известные математические формулы для правильного многоугольника, не требуются предварительные действия.

Алгоритм (рис.2) принимает на вход количество вершин, которые необходимо отрисовать.

1. Если вершин нет, то мы не выполняем операций.

2. Если вершина 1, то вычисляем координаты центра экрана по формулам:

' (1),

Ус

width

2

height

(2),

где width и height - ширина и высота экрана.

Рис. 2 - Алгоритм работы кругового визуализатора

2

MEDICAL SCIENCES /

3. Если вершин строго больше одной, то определяется угол между вершинами в отрисованной модели по формуле:

2п /оч

<Р=Т (3),

где N - количество вершин. Радиусы вершин и окружности, на которой будут располагаться вершины, определяются по формулам:

Г = ■

R =

(min(width,height)-r*2)

(4),

(5).

Дальше для каждой вершины из графа в массив модельных координат добавляется координата

в зависимости от предыдущей координаты вершины и смещения по окружности на угол между вершинами. Начальное значение координаты определяется при значении угла <р = 0.

Описание алгоритма автоматизированной проверки

Были проанализированы несколько алгоритмов автоматизированной проверки ([3], [4], [6]), после чего в качестве основы выбран алгоритм из модуля "Построение матрицы смежности на основе графа" [6], поскольку он максимально адаптирован к лабораторному комплексу GraphLabs.

Алгоритм (рис.3) состоит из следующих ша-

2

Рис.3 - Алгоритм проверки модуля

"Построение графа по матрице смежности"

1. получаем данные о графе и матрице из модели в Redux Storage;

2. начинаем с элемента матрицы, который находится на первой строке и в первом столбце, штраф равен нулю; index=0; jndex=0;

3. если index больше или равен размеру матрицы, то завершаем работу;

4. если jndex больше или равен размеру матрицы, то jndex=index, index=index+1, переходим к шагу 5;

5. если index<jndex, то переходим к шагу 6. Если нет - переходим к шагу 10;

6. если элемент в ячейке матрицы на пересечении строки index и столбца jndex равен единице, то переходим к шагу 7 и jndex=jndex+1. Если равен нулю - переходим к шагу 11:

7. если нет ребра между вершинами с номерами index и jndex, то переходим к шагу 8. Если есть - шаг 9;

8. увеличиваем штраф на 5 и переходим к шагу 9;

9. jndex=jndex+1 и переходим к шагу 3;

10. если index=jndex, то переходим к шагу 11. Если нет - шаг 9;

11. если есть ребро между вершинами с номерами index и jndex, то переходим к шагу 8. Если нет - шаг 9;

12. завершаем работу.

Результаты реализации и тестирования модуля

На рисунке 4 можно увидеть итоговую структуру модуля "Построение графа по матрице смежности". Основной класс, который содержит модуль, носит название App.

Рис.4 - UML-диаграмма, характеризующая модуль

В ходе реализации модуля были выполнены следующие шаги:

1. Модифицирована панель инструментов

(рис.5), а именно: добавлены кнопки "Add vertex"

"Choose first vertex", "Choose second vertex", "Add edge", "Remove vertex", "Remove vertex";

Рис.5 - Интерфейс модуля с модифицированной моделью инструментов

2. Разработана новая модель для задания -матрица смежности (рис.6);

MEDICAL SCIENCES / <<Ш^Ш(МиМ~ЛШ®Ма1>#Ш№)),2(0]9

Рис. 6 - Интерфейс модуля с заданием-матрицей

3. Разработан алгоритм автоматизированной проверки (рис.7);

Рис. 7 - Интерфейс модуля, где рассчитана оценка за выполнение задания

4. Добавлена возможность выделения вершин цветом (рис.8).

Рис.8 - Интерфейс модуля с выделенными вершинами

Также была составлена схема тестирования модуля, результаты которой можно увидеть в таблице 1.

<<ЭД1ШадУМ-^©1УГМ&1>>#Щ42)Ш]]9 / MEDICAL SCIENCES_

Таблица 1.

Результаты тестирования модуля

Номер кейса Результат прохождения

Проверка отображения матрицы Пройден

Проверка наличия и внешнего соответствия кнопок Пройден

Проверка отображения компонентов на экране Пройден

Проверка отображения графа с разным количеством вершин Пройден

Проверка отображения ребра Пройден

Проверка отсутствия ребра при нажатии на вершины, которые оно будет соединять Пройден

Проверка отсутствия ребра при нажатии на кнопку "Добавить ребро" Пройден

Проверка возможности перетаскивать вершины Пройден

Проверка возможности растягивать ребра при перемещении вершин Пройден

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Проверка внешнего отображения вершин Пройден

Проверка внешнего отображения ребер Пройден

Проверка корректности вычисления результата Пройден

Проверка отсутствия ребра при последовательном нажатии на ребро и на кнопку "Удалить ребро" Пройден

Проверка отсутствия изменений на графе при нажатии на кнопку "Удалить ребро" Пройден

Проверка смены цвета вершины на красный при однократном нажатии на нее Пройден

Проверка возвращения к оригинальному вершины при двукратном нажатии на нее Пройден

Таким образом, функционал модуля работает корректно, все основные задачи работы выполнены.

Заключение

Как уже было упомянуто выше, основная цель работы - создание модуля создания графа по матрице смежности. Для ее достижения на данный момент были решены следующие задачи: изучена структура лабораторного комплекса GraphLabs, выбраны и модифицированы алгоритм визуализации графов и автоматизированной проверки.

Основной областью применения реализуемого модуля является образование, так как весь лабораторный комплекс направлен на закрепление практических навыков по теории графов у студентов, в частности на обучение построению графа по матрице смежности.

В качестве практической значимости можно упомянуть изучение структуры графа, которая встречается во многих повседневных ситуациях (метро, генеалогическое древо и т.п.), а также изучению задач, где используется матрица смежности (например, определение расстояний между вершинами - построение маршрутов, минимизация ДНФ - представление данных для обработки алгоритмами).

Список литературы

1. Демешко М. В., Демин А. Ю. Программная реализация алгоритмов визуализации графов // Технологии Microsoft в теории и практике программирования: тезисы докл. Всерос. конф. (Томск, 22-23 марта 2016 г.). - Томск, 2016. - С. 119-122.

2. Пупырев С. Н. Модели, алгоритмы и программный комплекс визуализации сложных сетей: Автореф. дис. канд. физ.-мат. наук. - Екатеринбург, 2009. - 21 с.

3. Реализация графов и деревьев на Python. [Электронный ресурс] - URL: https://habr.com/ru/post/112421/ (дата обращения: 24.06.2019).

4. Топ-15 алгоритмических задач, реализованных на C++. [Электронный ресурс] - URL: https://proglib.io/p/algorithm-tasks/ (дата обращения: 24.06.2019).

5. Харари Ф. Теория графов. - М.: Мир, 1973. - 300 с.

6. Tasks.AdjacencyMatrixByGraph. Task module for GraphLabs. [Электронный ресурс] - URL: https://github.com/GraphLabsSuite/Tasks.Adjacency MatrixByGraph/blob/master/src/App.tsx (дата обращения: 24.06.2019).

i Надоели баннеры? Вы всегда можете отключить рекламу.