УДК 519.178 + 519.977.5 ББК 22.18
НЕКОТОРЫЕ АЛГОРИТМЫ ОПТИМИЗАЦИИ И ВИЗУАЛЬНОГО ПРЕДСТАВЛЕНИЯ ТРАНСПОРТНЫХ ПОТОКОВ
Гордийчук Т. В.1 Ицков А. Г.2
(Ижевский Государственный Технический Университет,
Ижевск)
Приведен алгоритм поиска оптимального пути на графе с переменными весами. Рассмотрены формулы построения двумерных кубических сплайнов дефекта 1 и их вывод.
Ключевые слова: взвешенный граф, кратчайший маршрут, кубический сплайн.
Введение
В транспортных сетях крупных городов существует множество маршрутов, и редко удается определить время прибытия, зная время отправления, и наоборот. Возникает проблема реализации алгоритма нахождения кратчайшего пути при условии, что известно расписание движения общественного транспорта.
В дискретной математике существует ряд алгоритмов оптимизации на графе, в частности, алгоритмов нахождения кратчайших расстояний, но в классической теории они реализованы на статических весах, т. е. вес дуги с течением времени не меняется. На практике же, если граф - это модель движения общественного транспорта, время прохождения пути может быть разным. Это обусловлено тем, что вес дуги будет зависеть не только от скорости движения, но и от времени ожидания и стоянки маршрута.
1 Годийчук Тарас Владимирович, студент Ижевского Государственного Технического Университета ([email protected]).
2 Ицков Александр Григорьевич, кандидат физико-математических наук, доцент ([email protected]).
274
Проблема поиска кратчайшего пути не является новой. Существует ряд алгоритмов для решения такого рода задач [2]. В сетевом планировании рассматриваются различные проблемы оптимизации на графах со случайными весами. В исследовании операций приводятся алгоритмы поиска максимального динамического потока [3]. В данной работе рассматривается задача поиска оптимального пути на графах, у которых пропускная способность дуг меняется динамически и зависит не только от времени, но и от управления, под действием которого происходит движение.
1. Постановка задачи
Пусть заданы ориентированный граф G = (X, A), где X = {xi,x2,..., xn} - множество вершин, а A = {ai, a2,..., am} -множество дуг; множество допустимых управлений U = {Ui,U2, ...,Uk}, и выполнены следующие условия:
1) G - связный граф и для всех Xi, Xj £ X существует путь из
rv> ■ тз пр . •
xi xj
2) для всех ai £ A существуют функции /¿(t, и) (время выхода из дуги ai) такие, что fi: I х Ui ^ I, где I = [0, +го), Ui С U = {и1,и2, . . . , Uk}, где Ui - множество допустимых управлений на дуге ai;
3) для всех t0, t1 £ I таких, что t1 > t0 и для всех и £ Ui выполнено fi(to,u) < fi(ti,u), i = 1, 2,... ,m (при одном и том же управлении - чем раньше произошло попадание в дугу, тем меньше будет время выхода из нее).
Тогда, если заданы начальная хн и конечная хк вершины и время начала движения Тн (время окончания движения Тк), необходимо найти путь из хн в хк - {a°}j=i, значения {u°}j=i и время Тк (Тн), так чтобы Тк — Тн ^ min.
При найденных значениях {a0}j=i, {u°}j=i и известном времени начала движения Тн время окончания движения Тк рассчи-
Управление большими системами
Специальный выпуск 30.1 «Сетевые модели в управлении» тывается по следующему алгоритму:
¿0 : = Тш ¿1 := Д0^0),
¿2 := Л;0(¿1, и0),
тк := ¿1 := Л0^-ъ^
где /0 - вес дуги а°.
Рассмотрим поставленную задачу на примере движения общественного транспорта. Пусть известен граф и расписание движения маршрутов. Тогда мы будем рассматривать U, как множество всевозможных маршрутов в транспортной сети, а и - множество маршрутов проходящих через дугу с номером і. Функции /і (¿, и) будут представлять собой сумму времени ожидания маршрута u (которое будет зависеть от времени попадания в начало дуги аі) и времени прохождения дуги на маршруте и.
2. Алгоритмы
2.1. ПОИСК ОПТИМАЛЬНОГО ВРЕМЕНИ ПРОХОЖДЕНИЯ ДУГИ
Пусть 0 — исходный граф, 5 — множество используемых маршрутов, ¿0 — начальное время, аі — дуга графа 0 (она задается парой чисел (і, і), где і — номер вершины, соответствующей началу дуги, а і — номер вершины, соответствующей концу дуги). ¿(к) — множество времен прибытия к-го маршрута в 1-ую
Ш) і
дугу, ¿Оад/ — множество времен отправления к-го маршрута из дуги с номером 1. Наборы ¿(к) и ¿0«? упорядочены по возрастанию. Найдем в наборе ¿^1) ближайшее к начальному ¿0 время ¿(кі), удовлетворяющее условиям:
1) ¿(кі) ^ 4П1)[р] (4П1)М — Р-ый элемент набора);
2) ^ - 1] <^(Ы).
Если не существует такого ¿(^1) [р], которое удовлетворяет указанным выше условиям, то к-ый маршрут не проходит через эту дугу при начальном времени ¿0. Зная индекс р находим время т(к1) = ¿О«* [р] (оптимальное время прибытия в конец дуги аі при использовании маршрута с номером к).
Для дуги аі находим все маршруты, которые проходят через нее и попадают в множество используемых маршрутов 5. Находя для каждого такого маршрута оптимальное время т(к1) и минимизируя его по к, находим минимальное время выхода т(і) из этой дуги и номер маршрута иі, на котором этот минимум достигается.
2.2. ПОИСК ОПТИМАЛЬНОГО ПУТИ
Пусть существует граф 0 (граф со взвешенными вершинами), который задан двумя таблицами: таблицей дуг и таблицей вершин, — таблица маршрутов и расписание движения, которое связывает все эти таблицы. Заданы начальное время ¿0 и две вершины жіп, ж^ (где жіга — вершина отправления, жои — вершина прибытия, а ¿0 — время отправления). Построим неявно по этим данным граф 0' — граф с тем же множеством вершин, но с постоянными весами дуг. Обозначим через Сі(к)(ііп, ¿о«*), а через С' веса дуг аі и аі графов 0 и 0' соответственно. Будем строить граф 0' по правилу:
1) В графе 0' между вершинами жі и ж^- дуга будет только в том случае, если она является частью какого-либо пути, начинающегося на вершине ЖіП.
2) Вес дуги С', который представляет собой пару чисел (тіга,тои), будет определяться из дуги аі с помощью описанного выше алгоритма.
Таким образом, зная начальную точку жіга и время ¿0, находим все дуги аі, выходящие из нее. По алгоритму поиска оптимального времени прохождения дуги определяем веса дуг С'. Из них находим минимальные времена ті попадания во все смежные с Жіп вершины и номера маршрутов на которых эти минимумы
достигаются. При этом для каждой из этих вершин, записывается в качестве предшествующей вершины. Далее для всех соседей находятся все смежные вершины, за исключением предшествующей, и в качестве ¿о берется значение тг. Если на каком-либо шаге текущее минимальное время в некоторой вершине ж-меньше ранее вычисленного, то все, что было найдено из этой вершины ранее, становится неверным, а в качестве минимума берется текущее время, соответственно, изменяются предшествующая вершина и номер маршрута, на котором этот минимум был достигнут. Иначе вычисления из вершины ж- прекращаются.
Такая реализация алгоритма позволяет найти кратчайшие (в смысле времени) пути между вершиной и всеми оставшимися вершинами при начальном времени ¿о (и как следствие - путь из
жто в жо«4).
Этот алгоритм не будет эффективным, поскольку при достаточно близких вершинах ж^ и жои он будет делать много лишних вычислений. Поэтому необходима его оптимизация.
Примем во внимание то обстоятельство, что если в вершине жои найдено время, за которое она может быть достигнута, и текущее время в некоторой вершине Жг больше этого значения, то дальнейшие вычисления из этой вершины бессмысленны, поскольку в данной формулировке задачи не рассматриваются дуги с отрицательным весом.
Если же нас интересует сам путь, то по множеству предшествующих вершин его однозначно можно восстановить. Возьмем в качестве начальной вершины ж вершину, равную жои*. Пока значение вершины, предшествующей ж, не будет равно нулю или ЖгП, то ж присваивается значение предшествующей вершины. Если после выполнения алгоритма значение ж стало равным нулю, то это говорит о том, что вершина жои* не достижима из жгп при начальном времени ¿о. Иначе, записав все значения, которые принимала переменная ж, в обратном порядке, мы получим сам путь. Поскольку для каждой вершины был не только определен минимум, но и найден номер маршрута, на котором этот минимум достигается, то можно восстановить весь путь с точностью
до номера маршрута и времени прибытия во все промежуточные вершины.
Пусть заданы те же начальные условия, только ¿0 — время прибытия в вершину жои*. Необходимо найти оптимальное время отправление из вершины ЖіП. В этом случае существенных изменений в алгоритме не последует.
В алгоритме поиска оптимального прохождения дуги условия 1 и 2 заменяются на следующие:
1) ¿(кі) ^ ¿05[р],
2) ¿(кі) < ¿0иі*) [р + 1],
¿(гаі) и ¿0«? меняются ролями, а когда будут найдены т(кі), то вместо минимума по к берется максимум.
В алгоритме поиска оптимального пути за начальную точку берется жои*; вместо дуг, выходящих из начальной вершины, ищутся дуги, входящие в эту вершину, минимум заменяется на максимум, а в проверке на прекращение вычислений знак неравенства меняется на противоположный. Если в вершине Жіп найдено время, за которое она может быть достигнута, и текущее время в некоторой вершине жі меньше этого значения, то дальнейшие вычисления из этой вершины бессмысленны.
Если в такой формулировке задачи нас интересует сам путь, то за начальную вершину берется значение ж, равное жіп, условие выхода - сравнение ж с жои* и нулем. А последовательность тех значений, которые принимал ж, записывается в прямом порядке.
2.3. МОДИФИКАЦИЯ ПОИСКА ОПТИМАЛЬНОГО ПУТИ
Пусть заданы граф 0 (такой же, как и в предыдущем алгоритме), начальное время ¿0, вершина отправления жіга и вершина прибытия жои*. Проведем преобразование исходного графа.
Граф транспортной сети 0 содержит достаточно много вершин, которым инцидентно ровно два ребра. Будем заменять ориентированную цепь, содержащую такие вершины, одной дугой, для которой начальная и конечная вершины совпадают с начальной и конечной вершинами цепи. Вес дуги будет равен суммарной
279
стоимости всех дуг, входящих в цепь. Далее действуем по вышеописанному алгоритму.
Построенные алгоритмы позволяют найти оптимальный по времени путь. Но возникает проблема иллюстрации результатов работы этих алгоритмов. Для визуального представления найденных маршрутов и различных объектов на карте города был применен метод, основанный на построении двумерных интерполяционных сплайнов. Идея метода состоит в том, что для от-рисовки пути необходимо иметь только набор узловых точек, лежащих вдоль движения маршрута, через которые будет проходить сплайн.
3. Интерполяционный кубический сплайн дефекта 1
Определение. Кубическим сплайном дефекта 1, интерполирующим на отрезке [а, Ь] данную функцию /(ж), называется функция
(1)д(ж) :=д*(ж) := а*+6*(ж-ж*)+с*(ж-ж*)2+4(ж-ж*)3,
при ж е [ж*-1 , ж*]П=1,
удовлетворяющая совокупности условий:
1) д(ж*) = /* (условие интерполяции в узлах сплайна);
2) д(жк) е С2аЬ] (двойная непрерывная дифференцируемость);
3) д/;(а) = д/;(Ь) = 0 (краевые условия) [1].
Для такого сплайна существую известные формулы для вычисления его коэффициентов:
(2)
(3)
(4)
/ (жй-ЬжД;)
/к /к—1
ж& ж&—1
а& —
2 1
(5) Ьк /(жк—1; жк) + 3С* + 3Ск—1;
(6) Л-к—1 Ск—2 + 2(Л-к—1 + Л-к )ск—1 + Л-к Ск =
( ) = 3/(ж*-1; ж*) - 3/(ж*-2; ж*—1).
4. Построение двумерных сплайнов
4.1. ДВУМЕРНЫЙ НЕЗАМКНУТЫЙ КУБИЧЕСКИЙ СПЛАЙН ДЕФЕКТА 1
Пусть задан упорядоченный набор точек на плоскости
(7) р=аж1 а,р2=аж2 а,...,рп=ахп
V ш / V Х2 / V хп
Построим для этого набора непрерывную функцию £(£), которая проходит через эти точки и имеет непрерывные первую и вторую производные.
Для удобства возьмем ¿1 := 0, а 4 = Т, где Т =
П—1 ____________________________
I] \/(жп+1 - ж„)2 + (хп+1 - Хп)2. Тогда так же, как и для клас-
г=1
сического кубического сплайна дефекта 1, функция Б(¿) имеет вид
(8) Б(^) := Б*(^) := (^-¿к)+ Ск(^-¿к)2 + ^(¿-¿к)3,
() при £ е [¿*—1, ]П=1.
и удовлетворяет условиям:
а) Б(ж*) = р*;
б) Б(ж*) е С2 ,т];
в) Б"(0) = Б"(Т) = 0.
Стоит заметить, что формула (8) имеет тот же вид, что и формула (2), с той лишь разницей, что функцая Б есаь вектор-
( ж(^) \
функция скалярного аргумента. То есть Б^) = ( ). Учиты-
вая этот факт, уравнение (8) можно записать следующим образом:
{ж(ф=ж* (¿):=а^+Ь^ (¿-¿к)+С1к (¿-¿к )2+4к (¿-4 )3, Х(^) :=Хк (¿) := а2к+^2к (^-¿к )+С2к ^-¿к )2+4к ^ - 4 )3, при г е [4—1,4]П=1, где а^к, Ьгк, Сгк, ¿гк, * = 1, 2, - компоненты соответствующих векторов.
Таким образом, исходную задачу можно свести к решению методом прогонки двух систем, организуя счет по формулам (2)-(6).
4.2. ДВУМЕРНЫЙ ЗАМКНУТЫЙ КУБИЧЕСКИЙ СПЛАЙН ДЕФЕКТА 1
Пусть задан упорядоченный набор точек (7). Построим для этого набора замкнутую кривую Б^), которая также имеет непрерывные первую и вторую производные.
Для удобства введем: Рп+1 := Р0, Бп+1 = Бо, ¿0 := 0
п ________________________________
и ¿п+1 := Т, где Т = ¿2 л/(жп+1 - жп)2 + (Хп+1 - Хп)2. Тогда
г=0
функция Б^) имеет вид
(10) Б(^) : = Бг(^) := + вг(^-¿г)+ Сг(^-¿г)2 +^г(£-¿г)3,
( ) при í е [¿г, ¿г+1 ]п=0.
и удовлетворяет условиям:
а) Б(жк) = Рк;
б) Б(жк) е С20Т];
в) Б'(0) = Б'(Т);
г) Б"(0) = Б"(Т).
Так как функция Б(¿) должна иметь непрерывные первую и вторую производные и проходить через узлы интерполяции, то
Бг (¿г) = А = Рг,
Бг (¿г+О = Бг+1 (^г+1), * = 01 п
Б^г+1)= Б^+1 (¿г+1), * 0 1,...,n,
Б^/(^г+1) = Б'+1(^+1), из формул (10) и (11) получаем
( Рг + Вг(^г+1 - ¿г) +Сг(^г+1 - ¿г)2 + Дг (^г+1 - ¿г)3 = Аг+Ъ (12) Л Вг + 2Сг(^г+1 - ¿г) + 3^г(^г+1 - ¿г)2 = Вг+Ъ
[ 2Сг + 6А(^+1 - ¿г) = 2Сг+1.
В дальнейшем, из последней системы будем выражать все неизвестные коэффициенты через Сг.
Выражая из третьего уравнения системы (12) Д и учитывая,
(11)
что Бп+1 (13)
Б0, получаем
Сг+1 - Сг
А
А
3(^+1 - ¿г) 1 О)- Сп
0,1,..., п - 1,
3(^п+1 ¿п)
Из первого уравнения системы (12) получаем
+ ' - Сг(^г+1 - ¿г) - Дг(^г+1 -
(14)
В =
Вп =
¿г+1 ¿г
Р0 — Рп
* = 0,1,..., п - 1,
- Сп(¿п+! - ¿п) - ^п(^п+1 - ¿п)2
¿п+1 ^
Подставляем А из (13) в формулу (14)
(15)
Вг =
Рг+1 - Рг
2
1
(16)
, , - оСг(^г+1 - ¿г) - 77Сг+1(^г+1 - ¿г^
¿г+1 ¿г 3 3
* = 0,1,..., п - 1,
Вп = т--------7----3Сп(^п+1 - ¿п) - 3С0(¿п+1 - ¿п)
¿п+1 ¿п 3 3
Из формул (12), (13) и (15) получаем
^^+1 - ¿г) + 2Сг+1 ^г+2 - ¿г) + ^+2^+2 - ¿г+1) =
= 3(Р(¿г+1;¿г+2) - Р(¿г;¿г+О), * = 0,... ,п - 2,
Сп—1(4 - ¿п— 1) + 2Cn(T0 - ¿п— 1) + С0(^¿0 - ¿п) =
= 3(Р(¿п; ¿0) - Р(¿п—1; ¿п)),
СПХ^Ю - ¿п) + 2Cn(Tl - ¿п) + С0(4 - ¿0) = ч = 3(Р(¿0; ¿1) - Р(¿п; ¿0)),
где
Р (¿г; ¿г+1) =
Рг+1 - Рг
¿г+1 ¿г
Стоит заметить, что система (16) не является трехдиагональной, в следствие чего ее приходится решать методом Гаусса, но поскольку матрица системы имеет специфический вид, то прямой ход метода Гаусса необходимо применять лишь для двух последних строк.
Управление большими системами
Специальный выпуск 30.1 «Сетевые модели в управлении» Заключение
Поставленная задача имеет широкое применение. Алгоритмы для решения этой задачи могут применяться не только для поиска кратчайшего пути на графе транспортных маршрутов, но и для задачи нахождения минимального по времени пути с учетом пробок, для задачи наискорейшей рассылки сообщений в сети, для планирования производства (оптимального времени завершения проекта).
Стоит заметить, что приведенные алгоритмы будут работать, если граф 0 — стохастическая модель движения общественного транспорта. То есть вес дуги будет зависеть не только от времени и управления, но и от некоторой случайной величины £, задающей отклонение от среднего времени прохождения дуги.
Если ведется статистика, то можно определить плотность распределения р (ж) случайной величины £.
Если статистических данных нет, то предполагаем, что
все £г е В(а, в) (в-распределение). Определяя математическое
а
ожидание М£ =---------, мы преобразуем граф 0, который являет-
а+в
ся стохастической моделью движения общественного транспорта, в граф 0' — граф с детерминированными весами. Далее, находя кратчайшее расстояние между любыми двумя вершинами графа 0' по описанному выше алгоритму, мы найдем наиболее вероятный наименьший по времени путь между теми же вершинами графа 0.
Литература
1. ВЕРЖБИЦКИЙ В. М. Основы численных методов. - М.: Высш. шк., 2002. - 840 с.
2. КРИСТОФИДЕС Н. Теория графов. Алгоритмический подход. - М.: Мир, 1978. - 432 с.
3. МАЙНИКА Э. Алгоритмы оптимизации на сетях и графах. - М.: Мир, 1978. - 324 с.
SOME ALGORITHMS OF OPTIMIZATION AND VISUALIZATION OF TRAFFIC FLOWS
Taras Gordiychuk, Izhevsk state Technical University, student ([email protected]).
Alexander Itskov, Izhevsk state Technical University, Izhevsk, Cand.Sc., assistant professor ([email protected]).
Abstract: The algorithm is given of optimal path search in a weighted graph with variable weights. The formula are derived for twodimensional cubic splines with defect 1.
Keywords: weighted graph, shortest path, cubic spline.
Статья представлена к публикации членом редакционной коллегии О. П. Кузнецовым