Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Алгоритмы поиска путей

Путь минимальной суммарной длины во взвешенном графе с неотрицательными весами (алгоритм Дейкстры).

Алгоритмы поиска путей.

Тема 2. Поиск пути в графе.

Гамильтоновы графы.

Граф называется гамильтоновым, если в нем имеется простой цикл, соединяющий каждую вершину графа. Сам цикл также называется гамильтоновым. Гамильтоновой называется и цепь, соединяющая все вершины графа.

В 1859 году известный ирландский математик У. Гамильтон придумал задачу «Кругосветное путешествие».

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

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

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

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

2.3 Путь минимальной суммарной длины во взвешенном графе с произвольными весами для всех пар вершин (алгоритм Флойда).

2.4 Путь с минимальным количеством промежуточных вершин (волновой алгоритм).

2.5 Нахождение K путей минимальной суммарной длины во взвешенном графе с неотрицательными весами (алгоритм Йена).

 

Здесь рассматриваются алгоритмы работы с графами. Граф - пара G= (V, E), где V - множество вершин (вершинами могут быть объекты произвольной природы) и E - множество ребер, ребра - элементы вида e = (vi, vj), где vi, vj принадлежат множеству вершин, т.е. ребро это элемент из декартова произведения множества V на себя. Достаточно подробно терминология теории графов разобрана на странице А.Чернобаева, поэтому за более полной информацией можно обратиться туда, там же можно найти алгоритмы для работы с графами, как те которые представлены здесь, так и многие другие. Нам же для дальнейшей работы понадобится рассмотреть способы задания и структуры для хранения информации о графе.

Первый способ задания графа (не взвешенного) это задать матрицу связности S размера n*n, где n количество вершин графа, т.е. мощность множества V, при этом элемент sij = 1, если существует ребро из i-ой в j-ую вершины и sij = 0, если такого ребра нет. Нетрудно видеть, что матрица S - симметрична, если граф неориентированный, и может быть не симметричный в противном случае. При этом полагаем, что sii = 0, т.е. в графе нет петель. Такой способ задания графа используется, например, в волновом алгоритме.

Второй способ используется для задания взвешенного графа, т.е. графа каждому ребру которого соответствует некий параметр - вес. Для определения такого графа используется матрица весов W размер которой n*n, где n количество вершин графа. При этом элемент wij равен весу ребра соединяющего i-ую и j-ую вершины. Если такого ребра нет, то wij полагаем равным бесконечности (на практике это максимальное число возможное на данном языке программирования). Этот способ задания используется, например, в алгоритмах поиска пути во взвешенном графе.

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

Пример: несколько городов, в том числе А и Б, связаны между собой сетью автомобильных дорог. Путешественник отправляется из города А в город Б. Какой маршрут он должен выбрать, чтобы добраться до Б, проехав минимальное расстояние.

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

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

Предположим, что каждой дуге (i, j) ориентированного графа (случай неографа или смешанного графа качественно ничем не отличаются) поставлено в соответствие число aij –длина дуги (aij-действительные числа). Каждой паре узлов (i, j), для которых не существует дуги, соединяющих их, приписывается длина aij=∞. Задача состоит в нахождении в данном графе такого пути из узла S в узел T, для которого суммарная длина дуг минимальна.

<== предыдущая лекция | следующая лекция ==>
Эйлеровы графы | Путь минимальной суммарной длины во взвешенном графе с неотрицательными весами (алгоритм Дейкстры)
Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 545; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.