В практических приложениях имеет большое значение задача о нахождении кратчайшего пути между двумя вершинами связанного графа.
Задача о кратчайшем пути на графе в общем виде может быть сформулирована следующем образом.
Дан граф . Каждому ребру
этого графа приписано некоторое число
,
называемое длиной ребра. В частных случаях
может
быть расстоянием между вершинами, соединяемыми ребром u,
временем или стоимостью проезда по этому ребру и т.п. При этом любая цепь
будет характеризоваться длиной
(2.1)
Требуется для двух произвольных вершин а и b
графа Gнайти
путь , причем такой, чтобы его полная длина
была наименьшей [13].
Сначала рассмотрим правило для решения задачи частного вида, когда длина каждого ребра равна 1.
Общее правило для нахождения кратчайшего пути в графе
состоит в том, чтобы каждой вершине приписать индекс
, равный длине кратчайшего пути из данной
вершины в конечную вершину [13].
Приписывание индексов в случае графа с ребрами единичной длины производится в следующем порядке.
1.
Конечной вершине приписывается индекс 0.
2. Всем вершинам, из которых идет ребро в конечную вершину, приписывается индекс 1.
3.
Всем вершинам, еще не имеющим
индексов, из которых идет ребро в вершину с индексом ,
приписывается индекс
.
Этот процесс продолжается до тех пор, пока не будет помечена начальная вершина. По окончании разметки индекс у начальной вершины будет равен длине кратчайшего пути. Сам кратчайший путь найдем, если будем двигаться из начальной вершины в направлении убывания индексов.
Задача приписывания вершинам графа числовых индексов усложняется, если ребра графа имеют произвольную длину.
Процесс приписывания индексов для такого графа заключается в следующем [13].
1.
Каждая вершина помечается индексом
. Первоначально конечной вершине
приписывается индекс
. Для остальных вершин предварительно
полагаем
.
2.
Ищем такую дугу , для которой
, и
заменяем индекс
индексом
.
Продолжаем этот процесс замены до тех пор, пока
остается хотя бы одна дуга, для которой можно уменьшить .
Сформулируем правило для нахождения кратчайшего пути.
Пусть – начальная вершина с
индексом
. Ищем вершину
такую,
что
, и т.д. до тех пор, пока не дойдем до
конечной вершины
. Путь
,
длина которого равна
, является кратчайшим.
На рис. 2.12 представлен пример нахождения кратчайшего пути из вершины a в вершину b.
Рис. 2.12 Нахождение кратчайшего пути
Алгоритм нахождения длиннейшего пути представляет собой процесс приписывания индексов для вершин графа и заключается в следующем [15].
1
Каждая вершина помечается индексом
. Первоначально начальной вершине
приписывается индекс
. Для остальных вершин предварительно
полагаем
.
2
Ищем такую дугу , для которой
, и
заменяем индекс
индексом
.
Продолжаем
этот процесс замены до тех пор, пока остается хотя бы одна дуга, для которой
можно увеличить .
Пусть – конечная вершина с индексом
. Ищем вершину
, такую,
что
, и т.д. до тех пор, пока не дойдем до начальной
вершины
. Путь
, длина
которого равна
, является длиннейшим.
2.2.5 Алгоритм поиска тончайшего пути
Тончайшим путем между двумя вершинами графа называется путь минимальной тонкости.
1.
Начачальной вершине присваиваем метку
, остальным вершинам
– метку
.
Начальную вершину окрашиваем.
2.
Для каждой неокрашенной вершины ,
связанной с последней окрашенной вершиной
дугой
пересчитываем ее метку по формуле
.
3.
Среди неокрашенных находим вершину с
минимальной меткой и окрашиваем ее и ведующую в нее из одной из ранее
окрашенных вершин
дугу
,
удовлетворяющую условию
. Если при этом
окрашенной оказалась конечная вершина, то задача решена, тонкость искомого пути
равна метке конечной вершины, а сам путь изображен на окрашенном дереве. В
противном случае переходим к п. 2.
По
окончании выполнения алгоритма окрашенные вершины и дуги составят корневое
дерево с корнем , отображающее тончайшие пути из
этой вершины во все остальные.
Технологической операцией будем называть последовательность переходов, выполняемых одним станком. При формировании технологических операций такого типа возникает следующая задача [22].
Дана
последовательность переходов в обработке
некоторой детали. Для каждого перехода заданы варианты выбора станков
, которые могут его выполнить. Требуется
так выбрать станки для выполнения переходов, чтобы число получаемых при этом
операций было минимально. На рис. 2.13 приведены пример этой задачи и одно из
его решений. Покажем сводимость к задаче КРАТЧАЙШИЙ ПУТЬ.
Рис. 2.13 Пример задачи формирования технологических операций а) и одного его решения б)
Построим
орграф с вершинами s, tи вершинами для
каждого перехода
и каждого станка
, который может его выполнить. Множество
дуг будут составлять дуги
, которые следует
провести для всех допустимых наборов значений индексов i, j, k. Все дуги
вида
нагрузим нулем, остальные – единицей. На рис. 2.14
приведен пример построения орграфа для примера задачи (см. рис. 2.13).
Произвольный путь из истока s в сток tна построенном взвешенном орграфе обладает следующими свойствами:
а)
промежуточные вершины пути определяют разбиение
последовательности переходов на операции, поскольку,
это
номера станков, которые их выполняют. Причем нет никакого варианта разбиения, которому
не соответствовал бы некоторый путь из sв t;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.