Сетевые модели перевозок. Кратчайший маршрут на сети.
Некоторые определения. Пусть задано множество X = {х0, х1, …}, состоящее из элементов х0, х1, … хi,… xn. Число элементов n может быть конечным или бесконечным. Элементы множества X назовем вершинами графа. Графом – называется множество вершин, соединенных в каком – либо порядке линиями, называемыми ребрами графа. Ребро графа – это линия, соединяющая две его вершины. Ребро обозначается указанием вершин, которые оно соединяет, например g(х0, х1), g(хi, xj). Форма линии ребра, как правило, не имеет значения.
Ребро может быть ориентированным или неориентированным. Ориентация на ребре указывается стрелками. На ориентированном ребре g(хi, xj) одна из вершин хi является начальной, а другая вершина хj – конечной. Ориентированное ребро называется дугой.
Граф называется ориентированным, если все его ребра являются ориентированными. В ориентированном графе каждая вершина имеет входящие дуги и исходящие дуги.
Петлей называется ребро, у которого начальные и конечные вершины совпадают.
аршрут на графе задается начальной вершиной х0, конечной вершиной хк и последовательностью ребер, их соединяющей. Цепью (для неориентированного графа) называется последовательность ребер
S = (g1, g2,…,gk-1, gk, gk+1, …, gn),
в которой у каждого промежуточного ребра gk , к = 2, …, n-1 одна из вершин является вершиной предшествующего ребра gk-1, а другая вершина – вершиной последующего ребра gk+1. Первое ребро g1 начинается из начальной вершины и не имеет предшествующих ребер. Последнее ребро gn заканчивается в конечной вершине и не имеет последующих ребер.
Путь – это цепь, построенная для ориентированных графов. Путь состоит из начальной, конечной вершин и последовательности дуг, у которых начальная вершина каждой промежуточной дуги совпадает с конечной вершиной предыдущей дуги.
Цикл – это цепь, у которой начальная и конечная вершина совпадает. Цикл это замкнутая цепь или замкнутый путь. Сеть, не имеющая циклов называется ациклической.
Две вершины графа называются связными, если существует, по крайней мере, одна цепь их связывающая. Граф называется связным, если любые его две вершины являются связными.
Сетью называется связный ориентированный граф без петель. Вершины сети называются узлами. Узлы удобно обозначать (нумеровать) цифрами. Дуга, соединяющая узел i (начальный узел дуги) и узел j (конечный узел дуги) обозначается парой чисел (i, j). Для каждой дуги (i, j) определена ее мера, называемая длиной дуги. Длина дуги обозначается Сij. В приложениях длина дуги имеет смысл расстояния (км) между узлами, стоимости перевозки из i-го в j-ый узел, времени движения. Она также называется обобщенной стоимостью.
Система уравнений для длины кратчайших маршрутов. Пусть задана сеть, содержащая n узлов. Пример приведен на рис. 9.1. Первый узел будем считать начальным, а n-ый – конечным. На рис.9.1 число узлов n=8, восьмой узел является конечным. Заданы длины дуг Сij сети. С помощью длин дуг можно ввести квадратную матрицу
С = (Сij) , i, j = 1,…, n ,
число строк и столбцов в которой равно числу узлов; (i, j) – ый элемент матрицы С положим равным длине дуги между i- ым и j -ым узлами, если такая дуга существует, или равным бесконечности, если дуг нет. Диагональные элементы Сij положим равным нулю, хотя это не всегда имеет смысл. Например, матрица С сети, представленной на рис. 9.1 имеет вид
¥ | ¥ | ¥ | ¥ | ||||||
¥ | ¥ | ¥ | ¥ | ¥ | |||||
¥ | ¥ | ¥ | ¥ | ||||||
¥ | ¥ | ¥ | ¥ | ¥ | |||||
С = | ¥ | ¥ | ¥ | ¥ | (9.1) | ||||
¥ | ¥ | ¥ | ¥ | ||||||
¥ | ¥ | ¥ | ¥ | ||||||
¥ | ¥ | ¥ | ¥ | ¥ | ¥ | ¥ |
Построение матрицы осуществляется построчно. Для элементов 1 –ой строки (соответствующих длине дуг, исходящих из 1 –го узла) указываются три значения С12 = 4, С13 = 1, С14 = 6 по всем трем исходящим дугам; элемент С11 = 0; остальные элементы полагаются равными бесконечности. Далее процесс повторяется для 2 – ой и последующих строк.
Сеть – связный граф. Для любых двух узлов существует, по крайней мере, один путь, их связывающий. Следовательно, существует и кратчайший путь. Кратчайший путь представляет собой особый интерес, поскольку он определяет оптимальный маршрут между двумя узлами.
Рассмотрим задачу об определении кратчайшего пути между двумя узлами (для определенности – между начальным первым узлом и конечным n-ым). Для каждого из узлов сети введем длину
U1, U2,…, Ui,…Un
кратчайшего маршрута соответственно между 1, 2,…,n-ым узлами и конечным n-ым узлом. Величина Un = 0 , величину U1 предстоит определить, величины U2,… , Un-1 являются вспомогательными. Мы увидим далее, чтобы найти кратчайший маршрут из 1-го узла нужно вначале определить все величины Ui.
Может быть показано, что величины U1,…, Un связаны между собой следующей системой нелинейных алгебраических уравнений[ ]
Ui = min {Cij + Uj} , i=1, 2,… n-1, Un=0. (9.2)
j , j≠i
Уравнения (9.2) записываются для каждого из узлов сети. Минимум в правой части уравнений находится перебором по всем j, что соответствует исходящим дугам. Уравнение (9.2) означает, что оптимальный путь из i-го узла (в конечный n-ый узел) следует в тот узел j*, в котором сумма
ij + Uj
принимает минимальное значение. Например, для узла, 2 сети (рис. 9.1) уравнение (9.2) имеет вид
U2=min{C24+U4, C25+U5}.
Для узлов i = 4,5 , связанных между собой двойными дугами, уравнения (9.2) выражают величины U4 и U5 друг через друга:
U4 = min{C48+U8, C45+U5}, U5 = min{C54+U4, C58+U8, C56+U6}.
В целом для сети, имеющей циклы (как, например, рис.9.1) система уравнений (9.2) не разрешима. Для ее решения используется численный метод последовательных приближений.
Метод последовательных приближений. Вводятся промежуточные величины:
U10, U20, … , Un0;
U11, U21, …, Un1; …
U1k, U2k, …, Unk;
где к = 0, 1, …,n-2 – номер приближения (итерации). Значения этих величин при к = n-2 равны искомым значениям
U1n-2=U1, …, Uin-2=Ui, …, Unn-2=Un
длин кратчайших маршрутов. Величины Uik определяются последовательно по шагам. При к = 0 положим в качестве начального приближения
Un0 = 0, Ui0 = Cin, при i = 1, 2,…,n-1, . (9.3)
Нулевое приближение Ui0 равно длине прямого маршрута (без промежуточных узлов) из i-го узла в конечный n-ый узел, если дуга, соединяющая эти узлы , существует. В противном случае величина Ui0 полагается равной бесконечности. Значения Ui0 равны n-му столбцу матрицы С.
Первое приближение при к = 1 вычисляется по формуле
Ui1 = min{Cij + Uj0}, i= 1, 2,…, n-1, Un1=0. (9.4)
j ≠ i
Здесь в отличие от формул (9.2) все числовые величины в правой части уже известны. Поэтому минимум и, следовательно, величины Ui1 легко находятся.
Величины Ui1 определяют длину кратчайшего маршрута с числом промежуточных (транзитных) узлов не более 1. Если для некоторого i-го узла величина Ui1 = ¥, это означает, что отсутствуют как дуги, связывающие его напрямую с конечным узлом, так и пути через 1 промежуточный узел. Если величина Ui1 - конечна и минимум в равенстве (9.4) достигается при некотором узле j* , j* ≠ n, то ее значение определяет длину маршрута
i → j* → n
с одним промежуточным узлом. Если же величина Ui1 - конечна и минимум достигается в узле j* = n, то значение Ui1 равно длине пути i → n без промежуточных узлов. Заметим, что такой маршрут может и не быть оптимальным.
Произвольные к-ые итерации далее вычисляются по формуле
Uik = min{Cij + Uj(k-1)}, I = 1, 2, …, n-1 , Unk = 0, (9.5)
j ≠ i
где значения Ui(k-1) определяются на предыдущих шагах. Значение Uik определяют длину кратчайшего пути из i-го в n-ый узел с числом промежуточных узлов не более k. Поскольку для искомого кратчайшего маршрута из 1-го узла в n-ый число промежуточных узлов не может быть более (n-2), то итерации при к = n-2 прекращаются. Полученные значения Ui(n-2) определяют длину кратчайшего маршрута.
Прокладка оптимального маршрута. После определения величин U1, …, Un нахождение кратчайшего маршрута осуществляется с помощью уравнений (9.2), которые записываются для узлов, лежащих на оптимальном маршруте. При i = 1 имеем равенство
U1 = min{C1j + Uj}, (9.5)
j ≠ 1
находим узел j1 на котором этот минимум достигается. Первая дуга кратчайшего маршрута проложена 1 → j1 .Записываем далее уравнения (9.2) для узла i = j1:
Uj1 = min{Cj1,j + Uj}.
j≠j1
Найдя узел j2, на котором здесь достигается минимум, прокладываем кратчайший маршрут далее: 1 → j1 → j2 . Этот процесс обрывается по достижению конечного n-го узла. Число шагов, которые необходимо сделать, как уже нами отмечалось, не может быть более (n-2).
Дата добавления: 2015-05-16; просмотров: 1760;