Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Нахождение кратчайших путей

Читайте также:
  1. A. Восстановление и поддержание проходимости дыхательных путей
  2. I. Дискенезия желче-выводящих путей.
  3. V Нахождение в природе и физиологическая роль алкинов
  4. Вопрос 48. Поиск путей реформирования советской системы 1985-1991гг.
  5. ВОПРОС № 11 ИВАН Грозный: поиск альтернативных путей социально-политического развития Руси.
  6. Восстановление проходимости воздухоносных путей
  7. ГЛАВА 3. РАЗРАБОТКА ПУТЕЙ СОВЕРШЕНСТВОВАНИЯ
  8. Доказательная база в лечении инфекций нижних мочевых путей.
  9. дыхательных путей
  10. Е. нарушением проходимости дыхательных путей вследствие ларингоспазма

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

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

Существуют три наиболее эффективных алгоритма нахождения кратчайшего пути: алгоритм Дейкстры (используется для нахождения оптимального маршрута между двумя вершинами), алгоритм Флойда (для нахождения оптимального маршрута между всеми парами вершин) и алгоритм Йена (для нахождения k-оптимальных маршрутов между двумя вершинами)

Алгоритм Дейкстры

Идея основывается на следующем очевидном утверждении.

Пусть построен минимальный путь из вершины A в вершину B. И пусть вершина B связана с некоторым количеством вершин i. Обозначим через Ci – цену пути из вершины B в вершину i. Выберем из Ci минимальную величину. Тогда минимальное продолжение пути из точки B пойдёт через выбранную величину.

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

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

1) Строим множество вершин инцидентных выделенным и находим среди их вершину с наименьшей ценой. Найденная вершина добавляется в множество выделенных.

2) Строим множество вершин инцидентных выделенным и определяем для них новые цены. Новая цена вершины это минимальная цена пути от множества выделенных вершин до данной вершины. Строится новая цена так:

a) Для невыделенной вершины во множестве выделенных определяется подмножество вершин инцидентных данной.

b) Для каждой вершины выделенной подмножества определяется цена пути до данной.

c) Определяется минимальная цена. Эта цена и становится ценой вершины.

Схема алгоритма:

1) Множество выделенных вершин = исходная вершина

2) Пока есть невыделенные вершины выполнять

a) Для каждой вершины инцидентной последней выделенной рассчитать предварительную цену как минимальную из уже имеющейся и цены, полученной с учетом пути от выделенной до данной.

b) Среди множества вершин, для которых определена предварительная цена, найти вершину с минимальным значением предварительной цены.

c) Найденную вершину занести во множество выделенных вершин.

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

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

Построим матрицу размерности |V| x |V|, элементы которой (обозначим из v) определяются по правилу:

= 0;

= Вес (, ), где i<>j, если в графе существует ребро (дуга) (, );

= бесконечность, где i<>j, если нет ребра (дуги) (, ).

 

Схема алгоритма:

 

1) Выполнять цикл, завершение которого наступает по выполнению одного из двух условий: либо количество шагов цикла равно V, либо был обнаружен цикл отрицательной длины. Шаги цикла нумеруются с нуля. Шаг цикла будем обозначать переменной m.

a) Строится матрица с индексом равным номеру шага, обозначим его через m, в которой элементы определяются через элементы матрицы предыдущего шага по следующим формулам:

+1=min{ , + },

где i<>j; =0.

b) Если + < 0 для какого-то i, то в графе существует цикл (контур) отрицательной длины, проходящий через вершину ;

 

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

 

Практическое применение алгоритмов решения задачи

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

 

 




Дата добавления: 2015-02-16; просмотров: 50 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав