РефератыИнформатика, программированиеНаНахождение кратчайшего маршрута между двумя городами по существующей сети дорог

Нахождение кратчайшего маршрута между двумя городами по существующей сети дорог

Информационная
карта


5013
Информационная
5418 Исходящий
7992 Инвентарный
5436 Инвентарный


карта
АИП номер,
дата номер
ФАП номер
ВНТИЦ

ИКАП
———— ——————————————
———————————————
———————————————



| 50 |
| | | | | |


————
——————————————
———————————————
———————————————


7839
Тип ЭВМ 7902 Тип
и версия ОС
5715 Инструмен-
7848 Оперативная



тальное
ПО память



———————————
——————————————————
———————————————
——————————————


|
| | | | | |
|



———————————
——————————————————
———————————————
——————————————


7965
Разновидность
ПС 73 Библиотека
программ 5679
Код программы
по


46
Программный
модуль 82 Программная
система ЕСПД


55
Программа
91 Программный
комплекс
————————————————



64 Пакет
программ 28
Информационная
структура |
|


19
Комплект программ
37 Прочее |
|



————————————————


7884
Объем программы
—————————————
7362 Срок окончания
———————————————



|
| разработки
| |



—————————————
———————————————


7947
Описание программы
—————————
4956 Распространение
4511 Сертифика-



|
| ПП ция


7956
Описание
применения|—————————|
35 Организация-
34 Сертифициро-



|
| разработчик
вана



|—————————|


7974
РТО | | 44 Организация,
43 Несертифици-



—————————
ведущая
ФАП рована

Сведения
об организации,
представляющей
АИП во ВНТИЦ

2457
Код ОКПО 2934 Телефон
2394 Телефакс
2754 Город



——————————————
——————————————
—————————————
———————————————————



——————————————
——————————————
—————————————
———————————————————


1332
Сокращенное
наименование
министерства
(ведомства)
2403 Код ВНТИЦ



—————————————————————————————————————————————————————
———————————————



—————————————————————————————————————————————————————
———————————————


2151
Полное наименование
организации



———————————————————————————————————————————————————————————————————————


|

|



———————————————————————————————————————————————————————————————————————


2358
Сокращенное
наименование
организации
—————————————————————————————



—————————————————————————————


2655
Адрес организации



———————————————————————————————————————————————————————————————————————


|

|



———————————————————————————————————————————————————————————————————————


Сведения
об организации-разработчике

2988
Телефон 3087 Телефакс
2781 Город



——————————————
—————————————
————————————————————————————————————



——————————————
—————————————
————————————————————————————————————


2187
Наименование
организации



———————————————————————————————————————————————————————————————————————


|

|



———————————————————————————————————————————————————————————————————————


2385
Сокращенное
наименование
организации
—————————————————————————————



|
|



—————————————————————————————


2682
Адрес организации



———————————————————————————————————————————————————————————————————————



———————————————————————————————————————————————————————————————————————


6183
Авторы (разработчики
ПС)



———————————————————————————————————————————————————————————————————————


|

|



———————————————————————————————————————————————————————————————————————


9045
Наименование
программы



———————————————————————————————————————————————————————————————————————


|

|


|

|



———————————————————————————————————————————————————————————————————————


9117
Реферат



———————————————————————————————————————————————————————————————————————


|

|


|

|


|

|


|

|


|

|


|

|


|

|


|

|


|

|


|

—————————————————————|


|
|5436
|


|
|
|



———————————————————————————————————————————————————————————————————————



Фамилия,
инициалы Должность
Уч.степень,
Подпись МП



звание



———————————————————————————————————————————————————————————————————————


|Руководитель
|6111 |6311 |6210 | |


|организации
| | | | |


|—————————————|——————————————————————|——————————|————————————|——————————|


|Руководитель
|6120 |6320 |6228 | |


|разр.(ФАП)
| | | | |



———————————————————————————————————————————————————————————————————————


5634
Индексы УДК
7434 Дата 7506 Входящий
номер



———————————————————————————————————
————————
——————————————————————



———————————————————————————————————
————————
——————————————————————


5616
Коды тематических
рубрик



———————————————————————————————————————————————————————————————————————


|
. . | . | . . | . | . . | . | . . | . | . .
|



———————————————————————————————————————————————————————————————————————


5643
Ключевое слово



———————————————————————————————————————————————————————————————————————


|———————————————————————————————————————————————————————————————————————|


|———————————————————————————————————————————————————————————————————————|


|———————————————————————————————————————————————————————————————————————|


|———————————————————————————————————————————————————————————————————————|


|———————————————————————————————————————————————————————————————————————|


|———————————————————————————————————————————————————————————————————————|



———————————————————————————————————————————————————————————————————————





Введение


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



Большинство
объектов, изучаемых
экономической
наукой, может
быть охарактеризовано
кибернетическим
понятием сложная
система.



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



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



Сложность
экономики
иногда рассматривалась
как обоснование
невозможности
ее моделирования,
изучение средствами
математики.
Но такая точка
зрения в принципе
неверна. Моделировать
можно объект
любой природы
и любой сложности.
И как раз сложные
объекты представляют
собой наибольший
интерес для
моделирования;
именно здесь
моделирование
может дать
результаты,
которые нельзя
получить другими
способами
исследования.



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


1. Краткое
описание модели
поставленной
задачи


Благодаря
своему широкому
применению,
теория о нахождении
кратчайших
путей в последнее
время интенсивно
развивается.



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


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



Сетевые модели
используются
для решения
следующих
задач:



проектирование
газопровода;



нахождение
кратчайшего
маршрута между
городами по
сети дорог;



определение
максимальной
пропускной
способности
при транспортировки
нефти;



составление
временных
графиков работ
и др.



Существуют
три наиболее
эффективных
алгоритма
нахождения
кратчайшего
пути:



1) алгоритм
построения
минимального
основного
дерева. Предполагает
соединение
всех узлов сети
с помощью путей
наименьшей
длины.



2) алгоритм
Дейкстры.
Используется
для нахождения
кратчайшего
пути между
заданным исходным
узлом и любым
другим узлом
сети



3) алгоритм Флойда.
Используется
для нахождения
оптимального
маршрута между
любыми двумя
узлами сети.


Основные
определения


Сеть состоит
из множества
улов, связанных
дугами (или
ребрами). Таким
образом, сеть
описывается
парой множеств
(N,A), где
N – множество
узлов, а A
– множество
ребер. Например,
сеть, показанная
на рис. 1, описывается
след образом.


N = {1, 2, 3, 4, 5},



A = {(1, 3), (1, 2), (2, 3), (2, 4), (2,
5), (3, 4), (3, 5), (4, 5)}.




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



Ребро называется
направленным,
или ориентированным
(и в этом случае
ребро будем
называть дугой),
если в одном
направлении
возможен только
положительный
поток, а в противоположном
– только нулевой.
В ориентированной
сети
все ребра
ориентированы.



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



Связная сеть
– такая сеть,
у которой любые
два узла связаны
по крайней мере
одним путем.
На рис. 1 показан
именно такой
тип сети и не
имеющий циклов.
Остовное дерево
– это дерево,
содержащая
все узлы сети.
На рис. 2 показаны
дерево и Остовное
дерево для сети
из рис. 1.




2. Математическая
формулировка
задачи, обоснование


Алгоритм
Флойда


Алгоритм Флойда
находит кратчайший
путь между
любыми двумя
узлами сети.
В этом алгоритме
сеть представлена
в виде квадратной
матрицы с n
строками и n
столбцами.
Элемент (i
,j) равен
расстоянию
dij от
узла i к узлу
j, которое
имеет конечное
значение, если
существует
дуга (i ,j),
и равен бесконечности
в противном
случае.



Покажем сначала
основную идею
метода Флойда.
Пусть есть три
узла i, j
и k и заданы
расстояния
между ними
(рис. 3). Если выполняется
неравенство
dij
+ djk
< dik,
то целесообразно
заменить путь
i → k путем
i → j →
k. Такая
замена (далее
ее будем условно
называть треугольным
оператором)
выполняется
систематически
в процессе
выполнения
алгоритма
Флойда.




Алгоритм Флойда
требует выполнения
следующих
действий.



Шаг 0. Определяем
начальную
матрицу расстояний
D0 и матрицу
последовательности



узлов S0.
Диагональные
элементы обеих
матриц помечаются
знаком “ – “,



показывающим,
что эти элементы
в вычислениях
не участвуют.
Полагаем k=1.


Основной шаг.
Задаем строку
k и столбец
k как ведущую
строку и ведущий
столбец.



Рассматриваем
возможность
применения
треугольного
оператора ко
всем элементам
dij
матрицы Dk-1.
Если выполняется
неравенство


dij
+ djk
< dik
(i ≠k, j≠k,
i ≠j),


тогда выполняем
следующие
действия :



создаем матрицу
Dk
путем замены
в матрице Dk-1
элемента dij
на сумму dij
+ djk,
(рис. 4)



создаем матрицу
Sk
путем замены
в матрице Sk-1
элемента sij
на k. Полагаем
k=k+1 и
повторяют шаг
k. (рис. 5)





















































d12




d1j




d1n




d21




d2i




d2n




.



.


.




.



.


.




.



.


.




.



.


.




.



.


.




.



.


.




di1




di2




dij




din




.



.


.




.



.


.




.



.


.




.



.


.




.



.


.




.



.


.




dn1




dn2




dnj




рис.
4





















































2 j n
1 j n


.



.


.




.



.


.




.



.


.




.



.


.




.



.


.




.



.


.


1 2 j n


.



.



.




.



.



.




.



.



.




.



.



.




.



.



.




.



.



.


1 2

j




рис.
5



После реализации
n шагов
алгоритма
определение
по матрицам
Dn
и Sn
кратчайшего
пути между
узлами i
и j выполняется
по следующим
правилам .



Расстояние
между узлами
i и j
равно элементу
dij в
матрице Dn.



Промежуточные
узлы пути от
узла i до
узла j определяем
по матрице Sn.
Пусть sij
= k, тогда
имеем путь i
→ j → k.
Если далее sik
= k и ski
= j, тогда
считаем, что
весь путь определен,
так как найдены
все промежуточные
узлы. В противном
случае повторяем
описанную
процедуру для
путей от узла
i к узлу k
и от узла k
к узлу j.




3. Численное
решение показательного
примера


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



Шаг 0. Начальное
решение матрицы
D0 и S0
строятся
непосредственно
по заданной
схеме



сети. Матрица
D0 симметрична,
за исключением
пары элементов
d35 и d53,
где d35 = ∞
(поскольку
невозможен
переход от узла
5 к узлу 3).









рис. 8





























































D0




1




2




3




4




5




1


100 30


2


100 20 15


3


30 20 10


4


15 10 50


5


60 50































































S0




1




2




3




4




5




1


2 3 4 5


2

<
br />
1 3 4 5


3


1 2 4 5


4


1 2 3 5


5


1 2 3 4





Шаг 1. В матрице
D0 выделены
ведущие строка
и столбец (k=1)
(рис. 8). После этого
каждый элемент
проверяется
с помощью
треугольного
оператора.
Таким образом,
чтобы на основе
матриц D0
и S0 получить
матрицы D1
и S1, выполняем
следующие
действия:



проверяем d32
> d31 + d12
= 20 > 30 + 100 = 20 > 130 если
условие принимает
истину, то
устанавливаем
S32 = 1 ,а если
нет тогда все
так и остается.



Матрицы D1
и S1 имеют
следующий вид
(см. рис. 9):









рис. 9





























































D1




1




2




3




4




5




1


100 30


2


100 20 15


3


30 20 10


4


15 10 50


5


60 50































































S1




1




2




3




4




5




1


2 3 4 5


2


1 3 4 5


3


1 2 4 5


4


1 2 3 5


5


1 2 3 4





Шаг 2. Полагаем
k=2. Треугольный
оператор применяется
к элементам
матриц D1
и S1,



выделенным
двойной рамкой.
В результате
получаем матрицы
D2 и S2
(см. рис.10):









рис. 10





























































D2




1




2




3




4




5




1


100 30 115


2


100 20 15


3


30 20 10


4


115 15 10 50


5


60 50































































S2




1




2




3




4




5




1


2 3 2 5


2


1 3 4 5


3


1 2 4 5


4


2 2 3 5


5


1 2 3 4





Шаг 3. Полагаем
k=3. В матрице
D2 и S2
выделены ведущие
строка и столбец.



Треугольный
оператор применяется
к элементам
матриц D2
и S2, выделенные
двойной рамкой.
В результате
получаем матрицы
D3 и S3(см.
рис.11):








рис. 11





























































D3



1



2



3



4



5



1


50 30 40

2


50 20 15

3


30 20 10

4


40 15 10 50

5


90 80 60 50































































S3



1



2



3



4



5



1


3 3 3 5

2


3 3 4 5

3


1 2 4 5

4


3 2 3 5

5


3 3 3 4





Шаг 4.
Полагаем k=4.
Выделены ведущие
строка и столбец
в матрице D3
и S3.



Получаем новые
матрицы (см.
рис.12):








рис. 12





























































D4



1



2



3



4



5



1


50 30 40 90

2


50 20 15 65

3


30 20 10 60

4


40 15 10 50

5


90 65 60 50































































S4



1



2



3



4



5



1


3 3 3 4

2


3 3 4 4

3


1 2 4 4

4


3 2 3 5

5


3 4 3 4





Шаг 5.
Полагаем k=4.
Ведущие строка
и столбец в
матрице D4
и S4 выделены.
Никаких



действий на
этом этапе не
выполняем;
вычисления
закончены.



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



Для нахождения
соответствующих
маршрутов
напомним, что
сегмент маршрута
(i,j) состоит
из ребра (i,j)
только в том
случае, когда
sij=j.
В противном
случае узлы
i и j
связаны, по
крайней мере,
через один
промежуточный
узел.


4. Описание
алгоритма
автоматизированных
расчетов



Cоставляется
начальная
матрица расстояний
D0 и матрица
последовательности
узлов S0.
В каждой ячейке
матрицы D
пишется элемент
dij,
который определяет
расстояние
между узлом
i и узлом
j, матрица
S заполняется
автоматически
. Элемент, в котором
i==j помечается
“—“, он в вычислении
не участвует.



Шаг 1. Пока kVvod*dannix----------------->8--------------*/


while ( n < 3 || n >
MAX_VERT ){



printf ( "nvvedite
kol_vo versin v seti [ 2 >> %d ] : ", MAX_VERT );



scanf ( "%i",
&n );



if ( n > MAX_VERT ||
n < 3 )



printf (
"nkol_vo versin dolzno bit v diapozone ot [ 2 >> %d ] !
n", MAX_VERT );



};



printf ( "n"
);



for ( i=0;i8--------------*/



/*--------------------------------------------------------------------------------------*/



/*-------->8-------------start>>resenia*dannix-------------->8---------------*/


for( k=0;k
0 ){



D[i][j] = ( D[k][j]
+ D[i][k] );



S[i][j] = k+1;



};



};



};



};


/*-------->8---------------end>>resenia*dannix-------------->8--------------*/



/*--------------------------------------------------------------------------------------*/



/*-------->8-------------start>>vivoda*dannix--------------->8---------------*/


printf ( "nt"
);



printf ( "Matrixa
Rastoqnij :" );



printf ( "nn"
);



for ( i=0;i8--------------*/


printf
( "n < Nazmite lubyu klavisy ! >"
);



getch
(
);



return
0;



};
























принял
…………………………………….
Лист
Н.контр.

23



Утв.


Лист






Министерство
образования
Российской
Федерации



Департамент
образования
и науки Краснодарского
края



Колледж «………………………..»

Курсовая
работа


по предмету:
«Математические
методы»



на тему:
«Нахождение
кратчайшего
маршрута между
двумя городами
по существующей
сети дорог»

Выполнил:


Студент


Группы
………..

…………..

шифр:
2203021

Руководитель

…………………...

Дата


г. Краснодар



2004





































































СОДЕРЖАНИЕ













































Введение. 3
1.Краткое
описание модели
поставленной
задачи
4
2. Математическая
формулировка
задачи, обоснование
6
3. Численное
решение
показательного
примера
9
4. Описание
алгоритма
автоматизированных
расчетов
11
5. Расчет
экономической
эффективности
расчетной
модели
12
6. Постановка
задачи на
программирование
13
7. Руководство
пользователю
16
Заключение. 18
Список
использованной
литературы.
19
Приложение. 20

……………………………..
Изм Лист № документа Подпись Дата
Разраб. …………….. Нахождение
кратчайшего
маршрута между
двумя городами
по существующей
сети дорог
Лит. Лист Листов
Пров. ……………..
Т.контр
Н. контр.
Утв
Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Нахождение кратчайшего маршрута между двумя городами по существующей сети дорог

Слов:7545
Символов:58989
Размер:115.21 Кб.