Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по теории информации.doc
Скачиваний:
25
Добавлен:
15.04.2019
Размер:
7.2 Mб
Скачать

2.2.1. Проблема маршрутизации в информационных сетях.

Конкретный метод маршрутизации обычно реализуется в рамках протокола сетевого уровня, который управляет пакетами при их дви­жении по сети до места назначения.

2.2.2. Методы маршрутизации, основанные на выборе кратчайшего пути.

Большинство реальных алгоритмов маршрутизации, так или иначе, базируются на выборе кратчайшего пути в графе с той или иной мет­рикой. При этом определение кратчайшего пути может осуществлять­ся, как централизованно, по имеющейся информации о состоянии сети, так и децентрализовано (распределенно) на основе имеющейся в узле информации о состоянии ближайших соседей, когда структура всей сети неизвестна (метод "рельефа").

2.2.3 Централизованные алгоритмы нахождения кратчайшего пути

Наиболее распространенными стандартными алгоритмами решения задачи нахождения кратчайшего пути на графе являются: алгоритм Беллмана-Форда, алгоритм Дийкстра и алгоритм Флойда-Уоршела [1],[10].

Первые два алгоритма находят кратчайшие пути от узла источ­ника ко всем другим узлам, а третий алгоритм находит кратчайшие пути от всех узлов ко всем другим узлам.

Рассмотрим в качестве примера алгоритм Дийкстра. Этот алго­ритм требует, чтобы длины (веса) всех ребер были положительны. Объем вычислений для этого алгоритма значительно меньше, чем у алгоритма Беллмана-Форда.

Основная идея алгоритма - отыскание кратчайших путей в по­рядке возрастания длины пути.

Чтобы формально описать процедуру нахождения кратчайшего пути, будем считать, что каждый узел i имеет метку Di , означаю­щую текущую оценку длины кратчайшего пути от узла 1 . Когда оцен­ка становится неизменной, будем считать, что узел окончательно помечен, и множество окончательно помеченных узлов обозначим че­рез Р. Узел, который будет добавлен на очередном шаге к Р , яв­ляется ближайшим к узлу 1 среди всех узлов, еще не вошедших в Р.

Алгоритм работает следующим образом.

Полагаем Р = {1} , Di = 0 Di = d1j  j1 при наличии cвязи узла c1 .

Шаг I. Поиск следующего ближайшего узла.

Находим узел i P такой, что Di =

Полагаем Р: P{1}. Еcли Р содержит вcе узлы, то на этом работа алгоритма заканчивается.

Шаг 2. Обновление меток.

Для всех jP положить Di = min{Dj, Di + dij}

Перейти к шагу I.

Пример использования алгоритма Дийкстра приведен на рис. 21.

Число операций, выполняемых алгоритмом Дийкстра на каждом шаге, пропорционально N , а шаги итерируются N-1 раз. Таким обра­зом, объем вычислений в худшем случае пропорционален N2, а не N3 , как у алгоритма Беллмана-Форда.

2.2.4 Распределенный асинхронный алгоритм Беллмана-Форда.

Будем считать, что длина dij, каждого ребра графа сети поло­жительна. В принципе длина dij, может изменяться во времени, но примем, что все изменения в сети произошли до момента t0 и оста­ются фиксированными после него, по крайней мере, до построения кратчайшего маршрута.

Исходный граф сети

а)

P={1,2} P={1,2,5}

P={1,2,5,3,4} P={1,2,5,3,4,6}

Рис. 2

Пусть известно Di кратчайшее расстояние от каждого узла до узла-получателя информации, которым для конкретности будем считать узел 1.

Можно показать, что:

Di= ,  i1, D1=0. (19)

Здесь N(i) – множество соседей узла i, т.е. узлов, соединенных с узлом i линией связи.

Асинхронный вариант распределенного алгоритма Беллмана-Форда работает нерегламентированно время от времени (например, при изме­нении dij или Dj), выполняя операцию (19) в каждом узле i1 пе­редавая измененное значение Di соседям.

В результате каждый узел будет знать не только свое кратчай­шее расстояние Di, но и уходящую от него линию, лежащую на крат­чайшем пути к узлу 1.

Особенностью данного алгоритма является то, что для его рабо­ты в узлах сети необходимо хранить очень мало информации и не нуж­ны подробные сведения о топология всей сети - вполне достаточно знать длины уходящих от узла линий и обмениваться о соседями ин­формацией о кратчайших расстояниях Di на данный момент.

Именно на данном алгоритме маршрутизации был основан перво­начальный алгоритм сети ARPANET, он также близок к алгоритму, ис­пользуемому в сети DNA фирмы NEC.

Совокупность значений Di, образует "рельеф" сети, поэтому рас­сматриваемый метод является разновидностью метода рельефов.