Главная Случайная страница


Полезное:

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


Категории:

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






Построение пути на графе





 

В основе алгоритмов (табл. 1.1) построения кратчайшего пути m[ s, t ] между источником s и стоком t в ориентированном графе G = (X, U) лежат процедуры вычисления некоторых пометок l(xi), приписываемых вершинам xj Î X. Значения l(xi) представляют собой верхние ограничения на длины путей m[ s, xj ] от s до всех xj, которые могут уменьшаться в процессе итерационных вычислений. Величина l(xi) изменяется каждый раз при выполнении условия

l(xi) + l (xi, xj) < l(xj), (1.1)

где l (xi, xj) - длина дуги (xi, xj) Î U. Новое значение пометки определяется как

l(xj) = l(xi) + l (xi, xj).

Процесс прерывается, если ни одно из ограничений l(xj) не может быть улучшено. Окончательное значение пометки l*(xj) показывает истинную длину кратчайшего пути m[ s, xj ].

Таким образом, чтобы определить длину пути m[ s, t ], необходимо вычислить расстояния от s до всех вершин графа. При этом не существует алгоритма определения расстояния от источника s до стока t, который был бы более эффективным и не требовал вычислений длин путей m[ s, xj ] до всех вершин xj Î X \ s [6]. Методы вычисления значений l*(xj) для основных алгоритмов поиска кратчайшего пути на графе представлены в следующих разделах.

Построение пути на графе (т. е. определение последовательности вершин или дуг) по известным значениям l*(xj) может быть выполнено двумя способами. Пусть дуга (xi, xj) Î U лежит на кратчайшем пути m[ s, t ], т. е. (xi, xj) Î m[ s, t ]. Тогда для вершин xi и xj должно быть справедливым соотношение

l*(xj) = l*(xi) + l (xi, xj). (1.2)

Первый способ построения кратчайшего пути основан на систематической проверке условия (1.2). Здесь последовательность вершин графа, составляющих кратчайший путь m[ s, t ], определяется в обратном порядке, начиная от стока t. В частности, для пути

m[ s, t ] =(s, x (1), x (2), …, x (k), t) (1.3)

можно найти вершину x (k) Î Г-1(t), удовлетворяющую условию

l*(x (k)) = l*(t) - l (x (k), t).

Затем определяется вершина x (k -1)Î Г-1(x (k)), для которой

l*(x (k -1)) = l*(x (k)) - l (x (k -1), x (k)).

Указанный процесс продолжается до тех пор, пока не будет достигнут источник s.

Второй способ построения пути предполагает неявное использование соотношения (1.2), когда уже при вычислении каждого значения l(xj) указывается вершина, из которой ведет путь в xj, уменьшающий величину l(xj). В этом случае пометка любой вершины графа состоит из двух частей и имеет вид [l(xj), mj ], где mj - вершина, из которой помечена xj.

Значение mj изменяется одновременно с l(xj), т. е. если справедливо условие (1.1), то mj = xi. Окончательно для пути m[ s, t ] вида (1.3) вершина x (k) определяется условием x (k) = mt в соответствии с пометкой стока [l*(t), mt ]. На следующую вершину x (k -1) = mk указывает пометка [l*(x (k)), mk ] и т.д.

 

У П Р А Ж Н Е Н И Я

 

1.9. Что показывают пометки, приписываемые вершинам графа в алгоритмах поиска кратчайшего пути?

1.10. Как используются значения пометок вершин для построения кратчайшего пути на графе?

1.11. Можно ли построить путь m[ s, t ], начиная от источника s?

1.12. Разработать подпрограмму построения кратчайшего пути в ориентированном графе по известным значениям пометок l*(xj). Длины дуг l (xi, xj) и структура графа G = (X, U) задается матрицей весов
D = n ´ n, где dij = l (xi, xj) при (xi, xj) Î U и dij = ¥ при (xi, xj) Ï U.

1.13. Реализовать рекурсивный вариант подпрограммы построения пути m[ s, t ] по условиям предыдущего задания.

1.14. Построить кратчайшие пути m[ xi, xj ], , для графа, показанного на рис. 1.4. Значения l*(xj) пометок вершин xj Î X приведены в упражнении 1.23.

 

Date: 2015-10-21; view: 442; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию