Нахождение кратчайшего пути алгоритмом Дейкстры

Автор работы: Пользователь скрыл имя, 29 Декабря 2011 в 03:13, курсовая работа

Описание работы

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

Содержание работы

ВВЕДЕНИЕ 3
1. ТЕОРИЯ ГРАФОВ. 4
1.1. ИСТОРИЧЕСКАЯ СПРАВКА. 4
1.2. ОСНОВНЫЕ ТЕРМИНЫ И ТЕОРЕМЫ ТЕОРИИ ГРАФОВ. 10
2. ЗАДАЧИ НА ГРАФАХ. 13
2.1. ОПИСАНИЕ РАЗЛИЧНЫХ ЗАДАЧ НА ГРАФАХ. 13
2.2. НАХОЖДЕНИЕ КРОТЧАЙШИХ ПУТЕЙ В ГРАФЕ 14
2.3 АЛГОРИТМЫ НАХОЖДЕНИЯ КРАТЧАЙШЕГО ПУТИ 15
Алгоритм Дейкстры 15
Алгоритм Джонсона 16
Алгоритм Флойда - Уоршелла 17
Алгоритм Беллмана - Форда 18
3.РЕШЕНИЕ ЗАДАЧИ «ВРУЧНУЮ» 20
4.ПРОГРАММА «ОПРЕДЕЛЕНИЕ КРАТЧАЙШЕГО ПУТИ В ГРАФЕ» 25
ЛИСТИНГ ПРОГРАММЫ 25
5.ПРИЛОЖЕНИЯ 27
6.ЗАКЛЮЧЕНИЕ 28
7. СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 29

Файлы: 1 файл

Копия Курсовая работа.doc

— 905.50 Кб (Скачать файл)

 

Содержание

 

ВВЕДЕНИЕ

За последние  три десятилетия теория графов превратилась в один из наиболее бурно развивающихся разделов математики. Это вызвано запросами стремительно расширяющейся области приложений. Также имелось много других причин для такого оживления изучения графов. Естественные науки оказали свое влияние на это благодаря исследованиям электрических цепей, моделей кристаллов и структур молекул. Развитие формальной логики привело к изучению бинарных отношений в форме графов. Большое число популярных головоломок подавалось формулировкам непосредственно в терминах графов, и это приводило к пониманию, что многие задачи такого рода содержат некоторое математическое ядро, важность которого  выходит за рамки конкретного вопроса. Теория графов становится одной из существенных частей математического аппарата кибернетики, языком дискретной математики. В значительной степени через теорию графов происходит ныне проникновение математических методов в науку и технику.

В связи с  этим актуальны исследования различных  вопросов теории графов. В качестве темы нашей работы была выбрана тема нахождение наикратчайшего пути в графах.

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

 

1. Теория Графов.

1.1.Происхождение графов.

 

       Теория  графов - это раздел дискретной математики, особенностью которой является геометрический подход к изучению объектов.. В общем смысле граф представляется как множество вершин (узлов), соединённых рёбрами. В строгом определении графом называется такая пара множеств G=(V,E), где V есть подмножество любого счётного множества, а E — подмножество V×V.

       

       Пример  графа с шестью вершинами и семью рёбрами 

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

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

       Первая  работа по графам была опубликована двадцатилетним Леонардом Эйлером в 1736 г., когда  он работал в Российской академии наук. Она содержала решение задачи о кенигсбергских мостах: можно ли совершить прогулку таким образом, чтобы, выйдя из любого места города, вернуться в него, пройдя в точности один раз по каждому из семи мостов? Обозначив четыре части города вершинами, а семь мостов ребрами, Эйлер дал отрицательный ответ на поставленный вопрос. С тех пор поток задач с применением графов нарастал подобно снежной лавине. Наряду с многочисленными головоломками и играми на графах, рассматривались важные практические проблемы, многие из которых требовали математических методов. Уже в середине прошлого века Кирхгоф применил графы для анализа электрических цепей.

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

       Кенигсбергские  мосты схематически можно изобразить так: 

                               

                                                           Упрощённая схема Граф                      

                                                          мостов Кёнигсберга.                 кёнигсбергских мостов

     

Нетрадиционные  решения задачи

На карте  старого Кёнигсберга был ещё один мост, появившийся чуть позже, и соединявший остров Ломзе с южной стороной. Своему появлению этот мост обязан самой задаче Эйлера-Канта. А произошло это вот как. Кайзер (император) Вильгельм славился своей прямотой, простотой мышления и солдатской «недалёкостью». Однажды, находясь на светском рауте, он чуть не стал жертвой шутки, которую с ним решили сыграть учёные умы, присутствующие на приёме. Они показали кайзеру карту Кёнигсберга, и попросили попробовать решить эту знаменитую задачу, которая по определению была нерешаемой. Ко всеобщему удивлению, кайзер попросил перо и лист бумаги, сказав, что решит задачу за полторы минуты. Ошеломлённый немецкий истеблишмент не мог поверить своим ушам, но бумагу и чернила быстро нашли. Кайзер положил листок на стол, взял перо, и написал: «приказываю построить восьмой мост на острове Ломзе». Так в Кёнигсберге и появился новый мост, который так и назвали — мост кайзера. А задачу с восемью мостами теперь мог решить даже ребёнок.

 

    Правило Эйлера:

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

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

       Сформулированная в середине 19 в. проблема четырех красок  также выглядит как развлекательная задача, однако попытки ее решения привели к появлению некоторых  исследований графов, имеющих теоретическое и прикладное значение. Проблема четырех красок формулируется так: ”Можно ли область любой плоской карты раскрасить четырьмя цветами так, чтобы любые две соседние области были раскрашены в различные цвета?”. Гипотеза о том, что ответ утвердительный, была сформулирована в середине 19в. В 1890 году было доказано более слабое утверждение, а именно, что любая плоская карта раскрашивается в пять цветов. Сопоставляя любой плоской карте двойственный ей плоский граф, получают эквивалентную формулировку задачи в терминах графов: Верно ли, что хроматическое число любого плоского графа меньше либо равно четырёх? Многочисленные попытки решения задачи оказали влияние на развитие ряда направлений теории графов. В 1976 году анонсировано положительное решение задачи с использованием ЭВМ.

       Другая  старая топологическая задача, которая  особенно долго не поддавалась решению и будоражила умы любителей головоломок, известна как “задача об электро -, газо - и водоснабжении”. В 1917 году Генри Э.Дьюдени дал ей такую формулировку. В каждый из трёх домов, изображенных на рисунке, необходимо провести газ, свет и воду.

 

                      Свет          вода             газ

       Можно ли так проложить коммуникации, чтобы  они, нигде не пересекаясь друг с  другом, соединяли каждый дом с  источниками электричества, газа и воды? Иначе говоря, можно построить плоский граф с вершинами в шести указанных точках? Оказывается, такой граф построить нельзя. Об этом говорится в одной очень важной теореме – так называемой теореме Куратовского. Теорема утверждает, что каждый граф, не являющийся плоским, содержит в качестве подграфа один из двух простейших пространственных графов:[6]

     

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

       В 20 в. задачи, связанные с графами, начали возникать не только в физике, химии, электротехнике биологии, экономике, социологии и т.д., но и внутри математики, в таких разделах, как топология, алгебра, теория вероятностей, теория чисел. В начале 20 в. графы стали использоваться для представления некоторых  математических объектов и формальной постановки различных дискретных задач; при этом наряду с термином «граф» употреблялись и другие термины, например, карта, комплекс, диаграмма, сеть, лабиринт. После выхода в свет в 1936 году монографии Д. Кёнига термин «граф» стал более употребительным, чем другие. В этой работе были систематизированы известные к тому времени факты. В 1936 году вышла небольшая брошюра Ойстена Оре, содержащая блестящее элементарное введение в теорию графов. В 1962 году в Англии была издана книга французского математика Клода Бержа “Теория графов и её приложение”. Обе книги, безусловно, представляют интерес для любителей занимательной математики. Сотни известных головоломок, на первый взгляд не имеющих ничего общего друг с другом, легко решаются с помощью теории графов.[6]

       В 20-30-х годах 20 в. появились первые результаты, относящиеся к изучению свойств связности, планарности, симметрии графов, которые привели к формированию ряда новых направлений в теории графов.

       Значительно расширились исследования по теории графов в конце 40-х - начале 50-х годов, прежде всего в силу развития кибернетики и вычислительной техники. Благодаря развитию вычислительной техники, изучению сложных кибернетических систем, интерес к теории графов возрос, а проблематика теории графов существенным образом обогатилась. Кроме того, использование ЭВМ позволило решать возникающие на практике конкретные задачи, связанные с большим объемом вычислений, прежде не поддававшиеся решению. Для ряда экстремальных задач теории графов были разработаны методы их решения, например, один из таких методов позволяет решать задачи о построении максимального потока через сеть. Для отдельных классов графов (деревья, плоские графы и т. д.), которые изучались и ранее, было показано, что решения некоторых задач для графов из этих классов находятся проще, чем для произвольных графов (нахождение условий существования графов с заданными свойствами, установление изоморфизма графов и др.).[5]

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

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

 

           

       Примерами задач о подсчете графов с заданными  свойствами являются задачи о нахождении количеств неизоморфных графов с одинаковым числом вершин и (или) ребер. Для числа неизоморфных деревьев с n вершинами была получена асимптотическая формула [4]

                   где C= 0,534948..., e = 2,95576... 
Для числа  Gn неизоморфных графов без петель и кратных ребер с n вершинами было показано, что

Информация о работе Нахождение кратчайшего пути алгоритмом Дейкстры