Автор работы: Пользователь скрыл имя, 18 Августа 2012 в 17:42, курсовая работа
В первом разделе «Разработка модели» описывается сущность задачи, применяемая математическая модель. Также описываются способы организации исходных данных. Рассматриваются инструменты реализации алгоритма.
Во втором разделе «Проектирование программы» рассматриваются разрабатываемые функции их структура и реализация.
В третьем разделе «Тестирование» описываются требования к техническим средствам для проведения испытаний, рассматриваются возможные ошибки, представляются результаты тестирования.
В четвертом разделе «Применение» описывается назначение программы, рассматривается практический пример использования программы.
В заключении будет проанализировано созданное программное приложение, определена степень соответствия поставленной задачи и выполненной работы.
Введение 4
1. Разработка модели
1.1 Сущность задачи 6
1.2 Организация данных 8
1.3 Инструменты разработки 10
2. Проектирование программы
2.1 Описание основных алгоритмов 11
2.2 Описание структуры 12
3. Тестирование
3.1 Технические требования 14
3.2 Полное тестирование 14
4. Применение
4.1 Назначение программы 20
Заключение 21
Литература 22
УЧЕРЕЖДЕНИЕ ОБРАЗОВАНИЯ
«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ МАКСИМА ТАНКА»
Кафедра прикладной математики и информатики
«Графы. Поиск оптимального маршрута по городам Беларуси»
Пояснительная записка
к курсовому проекту по информатике
Выполнил
студент математического факультета
Макаронок Сергей, 304 гр.
Руководитель:
ст. преподаватель кафедры
прикладной математики
и информатики
Шутько Е.И.
Минск, 2010
Содержание
Введение
1. Разработка модели
1.1 Сущность задачи
1.2 Организация данных
1.3 Инструменты разработки
2. Проектирование программы
2.1 Описание основных алгоритмов
2.2 Описание структуры
3. Тестирование
3.1 Технические требования
3.2 Полное тестирование
4. Применение
4.1 Назначение программы 20
Заключение
Литература
Приложение А 23
Введение
Благодаря своему широкому
применению, теория о нахождении кратчайших
путей в последнее время
Нахождение кратчайшего пути – жизненно необходимо и используется практически везде, начиная от нахождения оптимального маршрута между двумя объектами на местности (например, кратчайший путь от дома до университета), в системах автопилота, для нахождения оптимального маршрута при перевозках, коммутации информационного пакета в Internet и т.п.
Кратчайший путь рассматривается при помощи некоторого математического объекта, называемого графом.
Вес пути в графе определяется как сумма весов ребер этого пути. Кратчайшим путем между двумя вершинами называется путь наименьшего веса, соединяющий эти вершины. Будем рассматривать задачу отыскания кратчайших путей от заданной вершины до всех остальных вершин графа.
Наиболее эффективными алгоритмами нахождения кратчайшего пути являются следующие:
Указанные алгоритмы легко
выполняются при малом
Алгоритм Флойда, в отличие
от алгоритма Дейкстры, находит все
кратчайшие пути в графе, к тому же,
допускает наличие
С помощью алгоритма Флойда-
Основной задачей данного курсового проекта под названием «Графы. Поиск оптимального маршрута по городам Беларуси», является программная реализация алгоритма поиска кратчайшего пути между двумя любыми вершинами графа.
Программа должна работать так, чтобы пользователь вводил количество вершин и длины рёбер графа, а после обработки этих данных на экран выводились кратчайшие пути между вершинами и их длина. Необходимо предусмотреть различные исходы поиска, чтобы программа не выдавала ошибок и работала правильно.
Данная программа может использоваться в дискретной математике для исследования графов или в качестве наглядного пособия, демонстрирующего применение алгоритма Флойда на практике.
Пояснительная записка состоит из четырех разделов содержащих информацию по составлению и применению программы.
В первом разделе «Разработка
модели» описывается сущность задачи,
применяемая математическая модель.
Также описываются способы
Во втором разделе «Проектирование программы» рассматриваются разрабатываемые функции их структура и реализация.
В третьем разделе «Тестирование»
описываются требования к техническим
средствам для проведения испытаний,
рассматриваются возможные
В четвертом разделе «Применение» описывается назначение программы, рассматривается практический пример использования программы.
В заключении будет проанализировано
созданное программное
Приложение должно содержать текст программы.
1 Разработка модели
1.1 Сущность задачи
Кратчайший путь рассматривается при помощи некоторого математического объекта, называемого графом.
Граф G (рис.2.1.1) задается множеством точек (вершин) х1, х2,...,хn. (которое обозначается через Х) и множеством линий (ребер) а1, а2,...,аm. (которое обозначается символом А), соединяющих между собой все или часть этих точек. Таким образом, граф G полностью задается (и обозначается) парой (Х, А). Если ребра из множества А ориентированы, что обычно показывается стрелкой, то они называются дугами, и граф с такими ребрами называется ориентированным графом.
Например, если дорога имеет не двух-, а одностороннее движение то направление этого движения будет показано стрелкой.
Если ребра не имеют ориентации, то граф называется неориентированным, (двухстороннее движение).
В ориентированном графе дуга обозначается упорядоченной парой, состоящей из начальной и конечной вершин, ее направление предполагается заданным от первой вершины ко второй.
Путем (или ориентированным маршрутом) ориентированного графа называется последовательность дуг, в которой конечная вершина всякой дуги, отличной от последней, является начальной вершиной следующей.
При рассмотрении пути µ
представленного
Метод Флойда позволяет найти кратчайшие пути между всеми парами вершин графа.
Обозначим lij длину дуги (xi, xj), если таковой не существует примем lij = ¥, кроме того, положим lii = 0. Обозначим длину кратчайшего из путей из xi в xj с промежуточными вершинами из множества {x1, …, xm}. Тогда можно получить следующие уравнения
Уравнение (2) очевидно. Обоснуем уравнение (3).
Рассмотрим кратчайший путь из xi в xj с промежуточными вершинами из множества {x1, …, xm, xm+1}. Если этот путь не содержит xm+1, то . Если же он содержит xm+1, то деля путь на отрезки от xi до xm+1 и от xm+1 до xj, получаем равенство .
Уравнения (2) и (3) позволяют
легко вычислить матрицу
Отметим, что алгоритм Флойда непосредственно не указывает сам кратчайший путь между вершинами, а только его длину.
Алгоритм Флойда можно
модифицировать таким образом, чтобы
можно было находить и сами пути.
Для этого получим
Эта матрица вычисляется параллельно с по следующим правилам
Последнее выражение следует из обоснования (3).
Теперь кратчайший путь выписывается из следующего рекурсивного алгоритма:
Кратчайший путь из xi в xj:
1°. Если Rij = 0 то выполнить 2°,
иначе выполнить 3°.
2°. Если i=j то выписать xi и закончить,
иначе выписать xi и xj закончить.
3°. Выписать кратчайший путь между xi и .
4°. Выписать кратчайший путь между и xj.
Пункты 3° и 4° предполагают рекурсивное обращение к рассмотренному алгоритму.
Для вывода кратчайшего пути для заданных двух вершин, необходимо еще модифицировать алгоритм Флойда. В рассмотренный алгоритм необходимо вставить проверку: совпадает ли текущая вершина xi с начальной, а xj с конечной вершиной искомого пути.
Рассмотренный алгоритм Флойда легко выполняются при малом количестве вершин в графе. При увеличении их количества задача поиска кратчайшего пути усложняется. Здесь на помощь приходит современная техника
Компьютерные средства и информационные технологии повысили возможности такого всеохватывающего метода изучения и создания, как моделирования объектов, явлений и процессов – как тех, что существуют в природе, так и тех, что создаются человеком искусственно.
Количество объектов усложнялись, увеличивались, и натурное моделирование (макеты сооружений) стало невыгодным, неэкономным. Поэтому для изучения начали применять математику. Использование математических моделей – уравнения, неравенства, формулы и тому подобное называется математическим моделированием, для развития и приспособления которого нужны были эффективные численные методы.
Реализовать большой потенциал математического моделирования невозможно без мощных средств автоматизации вычислений, которыми являются компьютеры. Благодаря появлению компьютеров и развитию информационных технологий создаются методы и средства компьютерного моделирования, способные решать сложные практические задачи, такие как: управление большими энергетическими системами, создание достоверных прогнозов погоды или урожая, моделирование региональных и общегосударственных систем, проектирование самолетов, кораблей и т. п. Компьютерная модель – это размещенная в компьютере совокупность средств, что реализуют концепцию вычисления.
1.2 Организация данных
Для удобства, все данные целесообразно записать в стандартный блокнот.
Рассмотрим это на примере:
В первой строке файла будет содержаться количество вершин в графе. Далее, через пробел: начало дуги, конец и вес (в случае ориентированного графа); смежные вершины и вес ребра (в случае неориентированного графа).
Рассмотрим пример организации файла для графа, представленного на рисунке 1:
рисунок 1 - ориентированный граф
Для данного графа файл выглядит следующим образом:
Таблица 1.2.1–Описание переменных
Переменная |
Тип |
Описание |
SizeMatrix |
int |
Количество точек (вершин) грифа |
i,j |
int |
Счётчики |
ot |
int |
Номер начальной точки (вершины) |
do |
int |
Номер конечной точки (вершины) |
MatrixWeight [i,j] |
int |
Массив i-j элемент которого содержит расстояние между i-й и j-й точками (вершинами) Замечание:
|
MatrixPath [i,j] |
int |
Массив строк, который содержит пути Замечание: После прохождения обработки по алгоритму Флойда p-й элемент массива содержит кратчайший путь. |
WeightPath |
int |
Длина пути между двумя вершинами. Замечание: После прохождения обработки по алгоритму Флойда - содержит длину кратчайшего пути. |
cont |
int |
Переменная служит для определения выбранного варианта вывода информации. |
Информация о работе Графы. Поиск оптимального маршрута по городам Беларуси