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 i, k j , kn. (5)
Рис.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, bc переход к пункту 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).
Рис. 4 Конфигурация заданной сети |
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).