Сети передачи данных. В основу алгоритма Дейкстры положен метод "наискорейшего спуска", позволяющий на основе информация о перечне всех узлов сети
В основу алгоритма Дейкстры положен метод "наискорейшего спуска", позволяющий на основе информация о перечне всех узлов сети, их взаимосвязи и длине каждого из каналов связи найти кратчайшие пути от источника ко всем другим узлам. Рассмотрим работу данного алгоритма на примере сети, представленной на рис. 6.10. Построение кротчайших путей осуществляется поэтапно, начиная с некоторого узла ai ко всем остальным узлам. Процесс является итерационным и заканчивается после того, как будет охвачен последний узел сети. На первом этапе вычисляются длины (D^i) всех путей, ведущих из первой во все связанные с ней вершины, в нашем случае это множество вершин А ={ А2, аз, as }, для которых длины путей совпадают с длинами дуг: Li,2=2; Li,3=l; Li,5=4. На основании этих значений формируем таблицу маршрутов (табл. 6.1), первый столбец которой указывает на шаг итерации, второй столбец определяет множество вершин, для которых формируются пути, а остальные столбцы указывают путь и его длину. л \ (А<0 Рис. 6.10. Пример сети передачи данных. Таблица 6.1
Глава 2. Аббёойёооба ёинфоадшб пйдйё
Среди доступных путей выбираем минимальный, в нашем случае это путь (В^з) из первой в третью вершину. Далее, вычисляем пути, ведущие из вершины ai во все вершины, смежные с вершиной аз. Это осуществляется за счет добавления к величине пути (В^з) длины соответствующей дуги. Полученные таким образом значения путей заносятся в таблицу маршрутов, если в какую — то из вершин путь был уже ранее определен, то фиксируется минимальное значение пути. Так, например, после первого шага длина пути D^s = Li,5=4, а после второго шага формируется новое значение пути di^ равное (Li,3 + Ьз,5)=3, которое и заносится в таблицу маршрутов. В общем случае правило обновления маршрутов определяется на основании условия: By (minfDj,!, Bj^+Lk.m]), где By— длина маршрута из исходной в расчетную вершину, Bjjc— длина пути из исходной (j-ой) в текущую (k-ю) вершину, a L^m— длина дуги между текущей и расчетной (m-ой) вершинами. В результате третьего шага итерации формируется новый маршрут Bi,6. На последующих этапах итерации осуществляется дальнейшая корректировка маршрутов до тех пор, пока не будут рассмотрены все вершины графа связей. Аналогичным образом вычисляются маршруты и для других узлов сети передачи данных. Алгоритм Форда — Фалкерсона также состоит из двух частей: задания начальных условий и расчетов кратчайших расстояний. По сравнению с предыдущим алгоритмом в данном случае формирование маршрутов осуществляется в обратном порядке — от узла получателя ко всем остальным узлам. Алгоритм заканчивает свою работу, когда для всех узлов фиксируется их расстояние до узла получателя и отмечаются следующие узлы на кратчайшем пути по направлению к получателю. В результате чего для каждого 1-го узла вычисляется значение (k, By), где: k — номер следующего узла от текущей (i-ой) вершины п направле-ни]э к конечному узлу (Aj). На начальном (первом) этапе выбирается узел назначения Aj, для которого устанавливается значение Dy=0 и отмечаются (., -) все остальные узлы. На втором и последующих этапах в соответствии с условием: By (тт[В^ +Lk,J) осуществляется вычисление или корректировка маршрутов для каждой i-ой вершины. Выбор минимального пути осуществляется по всем направлениям (ребрам), ведущим из вершины, для которой в данный момент рассчитывается маршрут. Рассмотрим работу данного алгоритма на примере сети, представленной на рис. 6.10. В качестве узла назначения выбираем первый узел, D^ijN), все остальные узлы получают метки (.,-). Полученные значения заносятся в таблицу маршрутов (табл. 6.2). Таблица 6.2
На втором шаге вычисляется значение (1,2) для второго узла и значение (1,1) для третьего узла. На данном этапе для четвертого узла могут быть определены два из трех воз-
|