Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
15.04.2015
Размер:
508.93 Кб
Скачать

3.4. Решение задачи о кратчайшем пути в транспортной сети непосредственно по графу

Пусть дан конечный граф, каждой дуге которого поставлено в соответствие число cij, называемое длиной дуги. Требуется найти путь наименьшей длины, ведущий из некоторой вершиныSв некоторую вершинуt. Рассмотрим один из алгоритмов решения данной задачи – алгоритм Минти. Он позволяет связать кратчайшими путями фиксированную вершину сети со всеми остальными.

Предварительный шаг. Пометим вершинуSчисломes = 0. Далее продолжаем расстановку пометок следующим образом. Помеченные вершины будем относить к множествуR, непомеченные – к множеству. Итак, S Î R.

Общий шаг. Итак,R– множество помеченных вершин. Хотя бы одна вершина всегда имеется вR. Каждой вершинеi Î Rпоставлено в соответствие числоei. Рассмотрим все дуги(), исходящие из множества помеченных вершинRи заканчивающиеся на непомеченных вершинахj Î .Найдем для каждой дуги () величинуhij = ei + cij. Выделим дуги, на которых достигается минимум этой суммы, и отметим числомej=min hij, (i Î R, jÎ)те вершиныj Î, на которых заканчиваются выделенные дуги. Будем производить таким образом помечивание вершин до тех пор,пока не пометим вершину t. Число et указывает длину кратчайшего пути от S к t.

Заключительный шаг.Искомый путь определяем, двигаясь отtкS по выделенным дугам в направлении, обратном их ориентации.

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

3.5. Решение задач о кратчайших путях в табличной форме

3.5.1. Определение кратчайшего пути между двумя

вершинами графа

Рассмотрим алгоритм решения для случая многомерного графа [5]. В конечном многомерном графе каждой дуге поставлено в соответствие число Сi1,i2,,,il,m1,m2,,ml, называемое длиной дуги из вершиныxi1,i2,,ilв вершинуxm1,m2,,ml. Требуется найти путь наименьшей длины, ведущий из некоторой вершиныSв некоторую вершинуt. Для использования табличного представления многомерных матриц (пп. 1.4, 1.5) введем помечивание индексовCi1,i1,,m1,ml.Алгоритм включает в себя 3 шага.

Предварительный шаг. В табличном представлении матрицыCстолбецпомечается знаком *. Диагональному элементу в столбце, т.е., придается значение. Помеченные вершины будем относить к множествуR, непомеченные – к, т.е.S Î R.

Общий шаг. Рассмотрим все дуги, исходящие из множества помеченных вершинRи заканчивающиеся на непомеченных вершинах. Для каждой дуги найдем

hm,l=Cm,m + Cm,l,

для чего входим в -строку и складываем диагональный элемент строкии элемент. Находим минимум, затем столбецliпомечаем значением мультииндекса, а диагональному элементу столбцаliпридаем значение=. И так до тех пор, пока не пометим вершинуt.

Заключительный шаг. Искомый путь определяем, двигаясь отtкSпо отметкам вершин.

Рассмотренный алгоритм может использоваться для определения и наибольшего пути в многомерном ориентированном графе, если длину дуг Ci1,i1,,m1,mlвзять условно со знаком минус, а длину отсутствующих в графе дуг, как и ранее при поиске кратчайшего пути, брать равной бесконечности. Поиск наибольшего пути требуется, например, в задачах расчета сетевых графиков. Он носит название критического пути [4].

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

Соседние файлы в папке ДМ