BC/NW 2015 № 1 (26) 8:1
ВЫЧИСЛИТЕЛЬНЫЙ АЛГОРИТМ ОПРЕДЕЛЕНИЯ КРАТЧАЙШИХ МАРШРУТОВ
Абросимов Л.И
Для вычислительных сетей актуальной задачей является выбор кратчайших маршрутов. Успешное решение этой задачи позволяет:
- повысить производительность вычислительной сети,
- повысить эффективность использования ресурсов,
- сократить время реакции вычислительной сети при обслуживании пользователей.
Рассматриваемая задача может быть сформулирована следующим образом. Пусть
задана конфигурация S, содержащая
множество узлов A, i =
, пара которых
и
может быть соединена дугой
Узлы
,
соответствуют устройствам ВС, а дуги
– каналам, соединяющим устройства ВС. Узлы
размешены во взвешенном пространстве М и каждой дуге
соответствует взвешенное расстояние
. Соединение каждой пары узлов
и
обеспечивается маршрутом
, который состоит из последовательно соединенных дуг
и однозначно определяется номерами узлов, т.е.
= {i,…k, j}.
Между узлом (источником) и узлом
(целью) могут находиться несколько узлов,
тогда маршрут
= {i,a,b,c,d,j} – последовательность дуг,
образующих связную цепь между узлами i и j.
Например, i-a, a-b, b-c, c-d ,d-j представляет собой маршрут ={i →a→b→c→d→j}.
Требуется
определить, при каком выборе последовательности {i,…k, j} узлов
в каждом маршруте обеспечивается
минимальная суммарная длина
взвешенных
расстояний
. дуг
соответствующих
конфигурации S и включенных в маршрут
.
Целевая функция сформулированной задачи.
(1)
где - начальный узел дуги
;
– конечный узел дуги
|
Рис. 1 Дуга |
- булевые неизвестные, удовлетворяющие
соотношениям:
(2)
- булевые неизвестные, удовлетворяющие соотношениям:
(3)
Ограничения:
(4)
В основу излагаемого вычислительного алгоритма положены идеи алгоритма на графах, который предложил Дейкстра.
В вычислительном алгоритме для поиска оптимального решения используется процедура 1.
Рассмотрим три узла ,
,
,
соединенных дугами
,
,
для
которых известны взвешенные расстояния
,
,
, как
показано на рис.6.2.
|
k
Рис.2. Процедура поиска оптимального решения |
Пусть необходимо найти кратчайший маршрут между
узлами
,
. В
рассматриваемом случае между узлами
,
может
быть два маршрута:
–
прямой, имеющий взвешенное расстояние
=
;
– с
промежуточным узлом, имеющий взвешенное расстояние;
=
.
(6)
Для выбора оптимального маршрута применяются следующие правила:
1)
если >
, то выбирается маршрут
={i,k,j}
c промежуточным узлом;
2)
если , то выбирается прямой маршрут
={i,j}.
Для вычислительного алгоритма используются следующие формы представления заданных, промежуточных и результирующих данных.
Конфигурация S
задается
матрицей ,
где
=
(0,1).
Взвешенные расстояния задаются матрицей =
, где
дуги, отсутствующе в конфигурации (
),
имеют
.
Результаты расчетов представлены в виде матриц:
=
–
матрица взвешенных
расстояний кратчайших маршрутов
.
=
– матрица
взвешенных расстояний кратчайших маршрутов
, в
которой на основании свойства вложенности размещается полный набор всех
кратчайших
маршрутов
(
).
Для определения по
сформированной матрице
используется
пошаговая процедура 2.
1)
Для шага g=1, (n-2>g1), индекс i заносится
в формируемую строку маршрута, т.е i
.
2)
Проверяется, если значение
j ,то переход
к пункту 3, если значение
= j ,то переход
к пункту 4.
3)
Значение заносится в формируемую строку маршрута, т.е.
, изменяется номер шага g= g+1 и переход к пункту 2.
4)
Значение j
заносится в формируемую строку маршрута, т.е. , завершается процедура и выводится список индексов
узлов, составляющих маршрут
.
Пример определения по матрице маршрута
:
|
1 |
|
b |
|
c |
|
a |
|
n |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b |
|
|
|
|
c |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c |
|
|
|
|
c |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a |
|
|
|
|
b |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
1)
На шаге g=1, = {a}.
2)
= b, b
c переход к пункту 3.
3)
, = {a,b}, g=2 переход к пункту 2.
2) = c, b=c переход к пункту 4.
4) Результат: = {a,b,c}.
Вычислительный алгоритм определения кратчайших маршрутов, приведенный на рис. 3, включает процедуры 1 и 2 и содержит следующие пункты.
1. Для заданной сети с конфигурацией S=,
формируются: матрица
конфигурации,
матрица
взвешенных
расстояний и матрица
прямых
маршрутов.
Матрица конфигурации
формируется по соотношению:
(7)
Матрица взвешенных
расстояний формируется по соотношению:
(8)
Матрица прямых
маршрутов формируется по соотношению:
(9)
2. Резервируются для текущих значений матрицы и
,
устанавливаются в ноль счетчики индексов начальных (i) и
конечных (j) узлов.
3, 4. Увеличиваются значения счетчиков индексов начальных (i) и конечных (j) узлов.
5, 6. Проверяются ограничения i
j
,
j=n.
7. Устанавливается в ноль счетчик индексов промежуточных (k) узлов.
8. Увеличивается значение счетчик индексов промежуточных (k) узлов.
9,10,11. Проверяются ограничения k
i, k
j
,
k=n.
12.
В соответствии с процедурой 1 вычисляется текущее значение взвешенных
расстояний маршрута
через промежуточный узел и сравнивается с значением прямого маршрута. Если
условие выполняется, то переходим к п. 13, если не выполняется – к п.15.
13, 14. Заносятся значения: в
текущую матрицу
взвешенных
расстояний и k – в
текущую матрицу
маршрутов.
15, 16,17. Проверяются ограничения k=n, j=n, i=n.
18,19. Текущие значения и
записываются
в результирующие матрицы
и
.
Используя процедуру 2, получаем кратчайшие
маршруты
.
|
Рис. 3 Алгоритм определения кратчайших маршрутов
Задана сеть, представленная на рис. 4. Требуется определить кратчайшие маршруты, используя вычислительный алгоритм определения кратчайших маршрутов.
Для формирования матрицы S конфигурации, (см. рис. 5), используется соотношение (6.7).
|
S=
|
Рис . 5 Матрица S конфигурации
|
В соответствии с п.1 алгоритма по соотношению (8)
формируется матрица взвешенных
расстояний (см. рис. 6), и по соотношению (9) формируется матрица
прямых
маршрутов, приведенная на рис. 7.
|
Рис.
6 Матрица
|
|
Рис.
7 Матрица
|
Выполнение п.п. 3 – 11 алгоритма позволяет выбрать номера узлов i, j, k , которые соответствуют ограничениям (4), (5).
i=1, j=2, k=3
По п.12 алгоритма вычисляются по соотношению (6)
=
= 11+
=
и
= 10
Так как >
, то
повторяются п.п. 3 – 11 алгоритма и на одном из шагов выбираются номера узлов i, j, k , которые
соответствуют ограничениям (4), (5): i=1, j=4, k=2.
=
= 10 +
12 = 22 и
=
Так как <
, то
переходим к п.13.
По
п.13 в матрице значению
присваивают
= 22.
По
п.14 в матрице значению
записывается
k = 2.
Последовательное выполнение алгоритма заканчивается, если i =5, j =5, k =5 .
Результат
расчета: матрица записывается
в матрицу
(см.
рис. 8), матрица
записывается
в матрицу
(см.
рис. 9) .
|
Рис. 8
Матрица
|
|
Рис.
9 Матрица
|
Для определения кратчайшего маршрута между любыми заданными узлами используется процедура 2.
Например,
если i =2, j =5,
, то =
(2,1,3,5).