Разработка виртуальной лаборатории для поиска минимального маршрута
Особенности создания виртуальных лабораторий с точки зрения дискретной математики. Специфика разработки виртуальной лаборатории, реализующей волновой алгоритм для поиска минимального маршрута и определения метрических характеристик заданного графа.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.08.2012 |
Размер файла | 3,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
6
Размещено на http://www.allbest.ru
Разработка виртуальной лаборатории для поиска минимального маршрута
Содержание
Введение
1. Анализ задания, обзор аналогов
1.1 Анализ задания
1.2 Обзор аналогов
2. Сценарий работы пользователя
2.1 Прецеденты использования
2.2 Сценарий работы пользователя
3. Архитектура программного кода
4. Описание формата ответов и тестового набора
4.1 Формат ответа
4.2 Формат тестового набора
5. Виртуальный стенд
6. Проверяющий сервер
7. Задания и тестовые наборы
Заключение
Введение
виртуальная лаборатория дискретная математика граф
По наиболее общему определению виртуальная лаборатория представляет собой некую среду, позволяющую проводить эксперименты, не имея непосредственного доступа к объекту исследования. В случае дискретной математики виртуальные лаборатории имеют особое значение, так как предметы дисциплины по большей части абстрактны, и создание моделей в рамках этого курса обеспечит лучшее понимание материала.
В рамках данной курсовой работы необходимо разработать виртуальную лабораторию, реализующую волновой алгоритм для поиска минимального маршрута и определения метрических характеристик заданного графа.
1. Анализ задания и обзор аналогов
1.1 Анализ задания
Волновой алгоритм -- алгоритм, позволяющий найти минимальный путь в графе с рёбрами единичной длины. Основан на алгоритме поиска в ширину. Применяется для нахождения кратчайшего пути в графе, в общем случае находит лишь его длину.
Суть алгоритма следующая:
1. Указываются вершины первого фронта - смежные с начальной точкой пути. Им приписывается метка 1.
2. Вершинам следующего фронта - смежным с вершинами предыдущего - приписывается метка на один больше.
3. Если во фронте не достигнута конечная точка пути, и есть неразмеченные вершины, смежные с текущим фронтом, то повторяется шаг 2. Иначе выполняется шаг 4.
4. Если во фронте достигнута конечная точка пути, то длина кратчайшего пути составит значение метки фронта, к которому она принадлежит. Если нет неразмеченных вершин, смежных с текущим фронтом, то конечная точка пути недостижима из начальной (бесконечно далека).
С помощью волнового алгоритма можно рассчитать основные метрические характеристики графа - диаметр и радиус.
Расстояние от данной вершины a до наиболее удаленной от нее вершины называется эксцентриситетом вершины a и обозначается через ecc(a).
Величина наименьшего эксцентриситета называется радиусом графа и обозначается через rad(G), а величина наибольшего - диаметром и обозначается diam(G).
Наименьший диаметр имеет полный граф - его диаметр равен 1. Среди связных графов с n вершинами наибольший диаметр, равный n-1, имеет цепь Pn .
Разметив граф волновым алгоритмом поочередно от каждой вершины, можно определить ее эксцентриситет, а из множества всех эксцентриситетов графа установить его радиус и диаметр.
1.2 Обзор аналогов
В качестве аналогов были выбраны визуализаторы по дискретной математике, представленные на сайте кафедры компьютерных техгологий СПбГУ ИТМО.
К недостаткам ресурса можно отнести:
· отсутствие какой бы то ни было документации;
· неудобный интерфейс.
К плюсам:
· охват широкого спектра алгоритмов в области дискретной математики и комбинаторики.
2. Сценарий работы пользователя
2.1 Прецеденты использования
При разработке диаграммы прецедентов рассматривались следующие актеры:
· студент, главный актер, его цель - нахождение кратчайшего пути в заданном графе и определение его метрических характеристик; для реализации этих задач он взаимодействует с апплетом;
· апплет, второстепенный актер; цель апплета - получить ответ пользователя и отправить его на проверку на сервер;
Далее следует определить возможные сценарии взаимодействия актеров с системой и между собой (см. рисунок 1)
Как видно из схемы, главная роль отводится студенту - апплет же реагирует на его действия: отрисовывает интерфейс, производит раскраску графа, а по окончании работы отправляет ответ на сервер.
Рисунок 1 - Диаграмма прецедентов использования
2.2 Сценарий работы пользователя
1. Отрисовка графа, описанного в задании матрицей смежности:
1.1. Установка количества вершин.
1.2. Указание вершин начала и конца пути.
2. Поиск минимального маршрута в графе:
2.1. Отчитывая от начальной точки маршрута, указываются вершины n_го фронта (отмеченным вершинам приписывается метрика n);
2.2. Если конечная точка маршрута не достигнута, повторяется шаг 2.1;
2.3. Указывается длина кратчайшего пути.
3. Определение метрических характеристик графа:
3.1. Для каждой вершины производится полная разметка графа волновым алгоритмом для поиска эксцентриситета:
3.1.1. Отчитывая от начальной вершины, указываются вершины n_го фронта (отмеченным вершинам приписывается метрика n);
3.1.2. Если есть неразмеченные вершины, повторяется шаг 3.1.1;
3.1.3. Указывается эксцентриситет вершины
3.2. Из сводки всех эксцентриситетов выводятся радиус и диаметр графа.
4. Завершение работы, отправка результатов.
3. Архитектура программного кода
На схеме ниже представлена структура классов виртуального стенда (рисунок 4).
Описание классов:
1. Console - интерфейс для реализации лабораторного стенда.
2. Node - класс, описывающий вершину графа:
o int x, y - координаты узла;
o void setCoords(int x, int y) - устанавливает координаты;
o int[] getCoords() - возвращает координаты;
3. Edge - класс, реализующий ребро графа:
o int[] nodes - ID вершин, которые соединяет ребро;
o int[] getNodes - возвращает вершины, соединяемые ребром.
4. Front - класс, интерпретирующий фронт волнового алгоритма:
o int[] nodes - вершины, образующие фронт;
o void add(int index) - добавляет вершину во фронт;
o int findNode(int index) - проверка на наличие во фронте; если вершина найдется, то возвратится ее индекс во фронте, инасе возвратится -1;
o int[] getNodes() - возвращает вершины фронта;
o int getNodesCount() - возвращат размер фронта;
o void remove(int index) - удаляет вершину из фронта.
5. Graph - класс, описывающий граф:
o Edge[] edges - массив рёбер графа
o Node[] nodes - массив вершин графа;
o Frontd[] fronts - масств созданных фронтов волнового алгоритма.
o int edgesCount, nodesCount, frontdCount - число рёбер, узлов и размеченных фронтов в графе;
o int finish, start - концы маршрута;
o void addEdge(int[] nodes)- добавляет в граф ребро;
o void addFront() - создает новый фронт в графе;
o void addToFront(int index) - добавляет узел во фронт;
o void removeEdge(int[] nodes) - удаляет ребро;
o void removeFront() - удаляет текущий фронт;
o boolean isAllNodesMarked() - проверка на полную раскраску графа;
o void removeFromFront(int index) - удаление вершины из фронта.
6. Laboratory - класс апплета виртуального стенда:
o String answer - строка ответа аттестующегося;
o Graph graph - граф, на котором реализуется задание;
o int step - текущий шаг прохождения лабораторной работы;
o void changeMark(Graphics g, int clickedNode) - изменение разметки вершины;
o void initComponents() - инизиализация компонентов интерфейса;
o void paintEdge(Graphics g, int first, int second) - отрисовка ребра;
o void paintNode(Graphics g, int index) - отрисовка вершины;
o void paintGraph(JPanel panel, int nodesCount) - отрисовка графа;
o void setNewStartNode(Graphics g, int node) - установка новой начальной точки на четвертом этапе - вычислении эксцентриситетов;
Рисунок 2 - Схема классов виртуального стенда
4. Описание формата ответа и тестовых наборов
4.1 Формат ответа
Формат строки ответа, возвращаемой методом апплета getResults(), имеет следующий вид:
pathLength exct1 exct2 … exctN rad diam
.., где “pathLength” - длина кратчайшего пути в графе, описанном матрицей смежности, “exct1 exct2 … exctN” - эксцентриситеты для графа на N вершинах, “rad” - радиус графа, “diam” - диаметр графа.
В качестве примера приводится строка, полученная в результате работы с графом, заданным следующей матрицей смежности:
0 |
0 |
0 |
1 |
0 |
1 |
1 |
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
|
0 |
0 |
0 |
0 |
1 |
0 |
1 |
|
1 |
0 |
0 |
0 |
0 |
0 |
1 |
|
0 |
0 |
1 |
0 |
0 |
0 |
0 |
|
1 |
1 |
0 |
0 |
0 |
0 |
0 |
|
1 |
0 |
1 |
1 |
0 |
0 |
0 |
После всех необходимых измерений, получились следующие результаты:
? длина кратчайшего пути - 5;
? эксцентриситеты - 3 5 4 3 5 4 3;
? радиус графа - 3
? диаметр графа - 5
Строка ответа будет выглядеть следующим образом:
5 3 5 4 3 5 4 3 3 5
4.2 Формат тестового набора
В тестовый набор на задание с графом на N вершинах входит N+3 проверки - на каждую часть ответа, вводимую студентом. Каждая проверка описана в таблице 1.
Таблица 1. Формат тестового набора.
Входная строка |
Выходная строка |
|
min_path |
длина кратчайшего пути для заданного графа |
|
exct1 |
эксцентриситет для первой вершины заданного графа |
|
exct2 |
эксцентриситет для второй вершины заданного графа |
|
……………………………………………….. |
||
exctN |
эксцентриситет для N-ой вершины заданного графа |
|
radius |
радиус заданного графа |
|
diameter |
диаметр заданного графа |
5. Виртуальный стенд
На первом шаге студенту предоставляется интерфейс для ввода начальных данных - количества вершин в графе, а также начала и конца пути (рисунок 3).
Рисунок 3 - ввод начальных данных
По этим данным строятся вершины графа, отмечаются концы пути. Предоставляется интерфейс для отрисовки рёбер (рисунок 4).
Рисунок 4 - отрисовка рёбер
Затем становится возможным создание фронтов и раскраска графа по методу волнового алгоритма с целью нахождения длины кратчайшего пути (рисунок 5). Как только вершина конца пути попадает во фронт, становится доступным поле для ввода длины минимального маршрута, а также кнопка для перехода на следующий этап.
Рисунок 5 - поиск кратчайшего пути.
Следующий шаг - это раскраска графа, начиная от каждой вершины по очереди, с целью нахождения эксцентриситетов (рисунок 6).
.
Рисунок 6 - определение эксцентриситетов
Когда для каждой вершины будет определен эксцентриситет, будет произведен переход к последнему шагу - вводу радиуса и диаметра графа по данным предыдущего этапа (рисунок 7).
Рисунок 7 - ввод радиуса и диаметра графа
По нажатии кнопки «Завершить работу» методом getResult() ответ студента отправится на проверку.
6. Проверяющий сервер
При анализе ответа студента проверяется каждое задание в отдельности. Сопоставляются с эталонными значениями:
? длина кратчайшего пути;
? каждый эксцентриситет;
? радиус графа;
? диаметр графа.
Таким образом, за каждое верно введенное значение студент получает 100/(N+3) баллов из расчета, что полностью верный ответ - это 100 баллов.
Благодаря такой системе оценивания, можно более тонко дать характеристику навыкам и знаниям аттестующегося: результатом становится не просто флаг «выполнено / не выполнено», а числовая характеристика.
7. Задания и тестовые наборы
Ниже представлено несколько вариантов заданий и тестовые наборы для них.
Таблица 2. Задания для виртуальной лабораторной работы.
Задание |
Входящий тестовы набор |
Выходящий тестовый набор |
|
Граф задан матрицей. Определить минимальную длину пути из вершины 3 в вершину 5. Определить метрические характеристики данного графа. 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 |
min_path |
5 |
|
exct1 |
4 |
||
exct2 |
4 |
||
exct3 |
5 |
||
exct4 |
5 |
||
exct5 |
5 |
||
exct6 |
3 |
||
exct7 |
3 |
||
radius |
4 |
||
diameter |
5 |
||
Граф задан матрицей. Определить минимальную длину пути из вершины 3 в вершину 5. Определить метрические характеристики данного графа. 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 |
min_path |
2 |
|
exct1 |
2 |
||
exct2 |
2 |
||
exct3 |
2 |
||
exct4 |
2 |
||
exct5 |
2 |
||
exct6 |
2 |
||
radius |
2 |
||
diameter |
2 |
||
Граф задан матрицей. Определить минимальную длину пути из вершины 3 в вершину 5. Определить метрические характеристики данного графа. 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 |
min_path |
3 |
|
exct1 |
2 |
||
exct2 |
3 |
||
exct3 |
3 |
||
exct4 |
3 |
||
exct5 |
2 |
||
radius |
2 |
||
diameter |
3 |
Заключение
В результате выполнения тестирования виртуальной лаборатории найдено оптимальное количество вершин в графе, составляющем задание.
Во-первых, число узлов не должно быть меньше 5. Иначе нет возможности составить сколько-нибудь трудное задания для данного алгоритма. Помимо этого результаты сдачи студентами лабораторной работы будут мало их рассеивать, так как рассеивающая способность в данной работе прямо пропорциональна числу вершин, на которых построен граф (за каждое задание студент получает 100/(N+3) баллов, где N - это число вершин).
Во-вторых, нет надобности составлять задания с графами более 9 вершин, поскольку выполнение большей части работы в таком случае сведется к рутинным операциям. Такая работа тоже будет мало дифференцировать аттестующихся, поскольку навыки и знания, необходимые для выполнения данной работы, проверяются и на меньшем числе вершин, а так только добавляются ошибки, связанные с рассеянием внимания на однообразных действиях.
Размещено на Allbest.ru
Подобные документы
Практическое использование алгоритмов для нахождения минимального пути в лабиринте. Разработка программы на языке С++ и в среде Visual C++. Основные способы поиска пути: метод волны и приоритетов. Описание разработанных функций и инструкция пользователя.
дипломная работа [54,3 K], добавлен 16.03.2012Концепция построения виртуальной лаборатории (ВЛ) "Программирование микроконтроллерных систем". Принцип построения лабораторного практикума. Архитектура аппаратного обеспечения ВЛ. Аппаратные способы реализации генератора сигналов произвольной формы.
магистерская работа [669,4 K], добавлен 29.06.2009Разработка виртуальной библиотеки, которая в электронной форме и с лаконичным, удобным интерфейсом позволяет хранить информацию в надёжном и компактном виде, при этом значительно увеличивая скорость поиска нужной информации и проста в распространении.
курсовая работа [1,1 M], добавлен 05.07.2012Цели создания виртуальных частных сетей, их классификация. Принцип работы, преимущества и недостатки данной технологии. Процесс обмена данными. Архитектура локальной сети, защита ее сегментов. Структура интегрированной виртуальной защищенной среды.
курсовая работа [2,8 M], добавлен 28.03.2014Разработка программной реализации решения задачи о минимальном покрывающем дереве графа (построение минимального остова), используя алгоритмы Прима и Крускала. Подсчет времени работы алгоритмов. Их программная реализация на практике с помощью Delphi 7.
курсовая работа [538,1 K], добавлен 29.08.2010Общие сведения об управляющих автоматах, построенных на основе принципа программируемой логики. Горизонтально-вертикальное кодирование. Алгоритмы кодирования операционной части. Анализ результатов оценки критериев. Алгоритм поиска минимального покрытия.
дипломная работа [1,8 M], добавлен 07.08.2012Основные определения поиска подстроки в строке. Простейшие алгоритмы поиска подстроки в строке. Алгоритмы последовательного поиска и Рабина-Карпа, создание и описание программы, реализующей их. Порядок работы с приложением. Тестирование алгоритмов.
курсовая работа [2,7 M], добавлен 24.05.2012Характеристика виртуальной образовательной среды Unity. Особенности трехмерной виртуальной образовательной среды, как рабочего места пользователя. Организация взаимодействия пользователя с виртуальной рабочей средой факультета с использованием скриптов.
курсовая работа [373,7 K], добавлен 22.08.2013Способ представления графа в информатике. Алгоритмы поиска элементарных циклов в глубину в неориентированных графах. Описание среды wxDev-C++, последовательность создания проекта. Руководство пользователю программы поиска и вывода на экран простых циклов.
курсовая работа [783,2 K], добавлен 18.02.2013Обоснование использования виртуальной модели, средства для разработки функциональных модулей. Разработка виртуальной модели "Представление знаний в информационных системах". Разработка алгоритмов построения виртуальной модели предметной области.
дипломная работа [1,4 M], добавлен 12.08.2017