Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Исследование процессов маршрутизации. Вариант 6 - файл 1.doc


Исследование процессов маршрутизации. Вариант 6
скачать (340.5 kb.)

Доступные файлы (1):

1.doc341kb.09.12.2011 06:10скачать

содержание

1.doc

  1   2   3
1.Краткий обзор постановки задачи и путей ее решения
Компьютерные сети, как правило, представляются в виде графов, при этом коммутаторы и маршрутизаторы сетей являются узлами графа, а линии связи представляют собой р алгоритм Беллмана- Форда),

ебра графа. Ряд понятий из теории графов оказываются полезными при разработке сетей и алгоритмов маршрутизации. Для объединенной сети, такой как Интернет или интранет, представление ее в виде ориентированного графа также является приемлемым. В этом случае каждой вершине соответствует маршрутизатор. Если два маршрутизатора напрямую соединены к одной и той же локальной или глобальной сети, тогда это двусторонне соединение соответствует паре параллельных ребер, соединяющих соответствующие вершины. Если к сети напрямую присоединены более двух маршрутизаторов, тогда эта сеть представляется в виде множества пар параллельных ребер, каждая из которых соединяет два маршрутизатора. В объединенной сети для передачи IP-дейтаграммы от маршрутизатора - источника к маршрутизатору - приемнику по разным линиям через разные сети и маршрутизаторы пакетов требуется принять решение о выборе маршрута. Эта задача также эквивалентна поиску пути в графе.

Сеть с коммутацией пакетов (или сеть ретрансляции кадров, или сеть ATM) но рассматривать как ориентированный граф, в котором каждая вершина соответствует узлу коммутации пакетов, а линии связи между узлами соответствует пара параллельных ребер, по каждому из которых данные передаются в одном направлении. В такой сети для передачи пакета от узла-источника узлу - получателя по разным линиям через несколько коммутаторов пакетов требуется принять решение о выборе маршрута. Эта задача эквивалентна поиску пути в графе.

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

Пусть имеется сеть, состоящая из узлов, соединенных двунаправленными линиями связи, и каждой линии поставлена в соответствие стоимость пересылки данных в каждом направлении. Стоимость пути между двумя узлами определяете как сумма стоимостей всех линий, входящих в данный путь. Задача состоит в том, чтобы найти путь с наименьшей стоимостью для каждой пары узлов.

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

Большинство алгоритмов поиска маршрута с наименьшей стоимостью, применяющихся в сетях с коммутацией пакетов и объединенных сетях, представляют собой вариации одного из двух общих алгоритмов, известных как алгоритм Дейкстры (Dijkstra) и алгоритм Беллмана — Форда (Bellman — Ford). В этом разделе обсуждаются оба алгоритма.
1.1 Исходные данные



  • Номер варианта-6

  • Матрица смежности

V1 V2 V3 V4 V5 V6

V1 0 0 5 0 1 5

V2 0 0 0 3 2 4

V3 2 0 0 6 4 0

V4 0 6 2 0 0 0

V5 1 5 5 0 0 0

V6 6 6 0 0 0 0

Рисунок 1. Взвешенный ориентированный граф, построенный по матрице смежности


V2

V1 V3

^ 1.2 Алгоритм Дейкстры
Алгоритм Дейкстры может быть сформулирован следующим образом. Алгоритм находит кратчайшие пути от данной вершины-источника до всех остальных вершин, перебирая пути в порядке увеличения их длин. Работа алгоритма проходит поэтапно. К k-му шагу алгоритм находит k кратчайших (с наименьшей стоимостью) путей к k вершинам, ближайшим к вершине-источнику. Эти вершины образуют множество Т. На шаге (k + 1) к множеству Т добавляется вершина, ближайшая к вершине- источнику среди вершин, не входящих во множество Т. При добавлении каждой новой вершины к множеству Т определяется путь к ней от источника. Формально этот алгоритм может быть определен следующим образом. Введем обозначения:

  • N множество вершин сети;

  • s — вершина-источник;

  • Тмножество вершин, уже обработанных алгоритмом;

  • Дерево — связующее дерево для вершин, принадлежащих множеству Т, включая ребра, входящие в пути с наименьшей стоимостью от вершины s до каждой вершины множества Т;

  • w(i,j)стоимость линии от вершины i до вершины j, причем w(i, j) = 0 или w(i,j) = , если две вершины не соединены напрямую, и w(i, j) => 0, если две вершины соединены напрямую;

  • L(n)минимальная стоимость пути от вершины s до вершины п, известного на данный момент алгоритму (по завершении работы алгоритма это минимальная стоимость пути от вершины s до вершины п).

Алгоритм состоит из трех шагов. Шаги 2 и 3 повторяются до тех пор, пока множество T не совпадет с множеством N. Это значит, что шаги 2 и 3 повторяются, пока для всех вершин сети не будут найдены окончательные пути.

^ 1. Инициализация.
Т=Дерево = {s},


то есть множество исследованных вершин состоит пока что только из вершины-источника.

L(n) = w(s, п) для п  s,

то есть стоимости начальных путей к соседним вершинам представляют собой просто стоимости линий связи.

^ 2. Получить следующую вершину.

Найти следующую вершину, не принадлежащую множеству T и имеющую путь от вершины s с минимальной стоимостью, и включить эту вершину во множество T и в Дерево. Кроме того, к дереву добавляется ребро, инцидентное этой вершине и вершине множества T, входящей в путь с минимальной стоимостью. Это может быть сформулировано следующим образом. Найти вершину x Т такую, что

L(x) = min L(j)

jT

Добавить вершину х к множеству T и к дереву; добавить к дереву ребро, инцидентное вершине х, составляющее компонент пути L(x) с минимальной стоимостью, то есть последний ретрансляционный участок пути.

3. Обновить путь с минимальной стоимостью.

L(n) = min[L(n), L(x) + w(x, п)] для всех п Т.

Если последняя величина минимальна, то с этого момента путь от вершины до вершины п представляет собой конкатенацию пути от вершины s до вершины х и пути от вершины х до вершины п.

Алгоритм завершает работу, когда все вершины добавлены к множеству Т. Таким образом, для работы алгоритма требуется |V| итераций. К моменту окончания работы алгоритма значение L(x), поставленное в соответствие каждой вершине x представляет собой минимальную стоимость (длину) пути от вершины s до вершины х. Кроме того, Дерево представляет собой связующее дерево исходного ориентированного графа, определяющее пути с минимальной стоимостью от вершины s до всех остальных вершин.

На каждой итерации при выполнении шагов 2 и 3 к множеству T добавляется одна новая вершина, а также находится путь с минимальной стоимостью вершины s до этой вершины. Другими словами, на каждой итерации к множеству добавляется вершина х, а значение L(x) на этот момент времени представляет собой минимальную стоимость пути от вершины s до вершины х. Более того, путь с минимальной стоимостью определяется уникальным путем от вершины s , вершины х во множестве Т. Этот путь проходит только по вершинам, принадлежащим множеству Т. Чтобы понять это, рассмотрим следующую цепочку рассуждений. Вершина х, добавляемая на первой итерации, должна быть смежной с вершиной и не должно существовать другого пути к вершине х с меньшей стоимостью. Если вершина х не является смежной с вершиной s, тогда должна существовать другая вершина, смежная с вершиной s, представляющая собой первый транзитный участок пути с минимальной стоимостью к вершине х. В этом случае при выборе вершины, добавляемой к множеству Т, предпочтение будет отдано этой вершине, а не вершине х. Если вершина х является смежной с вершиной s, но путь s—х не является путем с наименьшей стоимостью от вершины s до вершины х, то это значит, что существует другая смежная с вершиной s вершина у, находящаяся на пути с минимальной стоимостью, и при выборе добавляемой к множеству Т вершины предпочтение будет отдано вершине у, а не вершине х. После выполнения k итераций во множество T войдут k вершин и будет найден путь с минимальной стоимостью от вершины s до каждой из этих вершин. Теперь рассмотрим все возможные пути от вершины s до вершин, не входящих в множество Т. Среди этих путей существу один путь с минимальной стоимостью, проходящий исключительно по вершинам, принадлежащим множеству Т, заканчивающийся линией, непосредственно связывающей некую вершину множества Т с вершиной, не принадлежащей множеству Т. Эта вершина добавляется к множеству Т, а соответствующий путь считается путем с наименьшей стоимостью к данной вершине.

В табл. 1 показан результат применения данного алгоритма к графу, представленному на рис.1.




Т

L(2)

Путь

L(3)

Путь


L(4)

Путь

L(5)

Путь

L(6)

Путь

1

{1}



-

5

1-3



-

1

1-5

5

1-6

2

{1;5}

6

1-5-2

5
6

1-3
1-5-3



-

1

1-5

5

1-6

3

{1;5;2}

6

1-5-2

5
6

1-3
1-5-3

9

1-5-2-4

1

1-5

5

10

1-6

1-5-2-6

4

{1;5;2;6;}

11

6

1-6-2

1-5-2

5

6

18

1-3

1-5-3

1-6-2-5-3


9

14

1-5-2-4

1-6-2-4

1

13

1-5

1-6-2-5

5

10

1-6

1-5-2-6

5

{1;5;2;6;3}

6

11

14

1-5-2

1-6-2

1-3-5-2

5

6

18

1-3

1-5-3

1-6-2-5-3

9

14

12

11

17

24

1-5-2-4

1-6-2-4

1-5-3-4

1-3-4

1-3-5-2-4

1-6-2-5-3-4

1

9

13

1-5

1-3-5

1-6-2-5

5

10

17

1-6

1-5-2-6

1-3-5-2-6

6

{1;5;2;6;3;4}

6

11

17

18

1-5-2

1-6-2

1-3-4-2

1-5-3-4-2

5

11

15

1-4-3

1-5-2-4-3

1-6-2-4-3

9


1-5-2-4


1

14


1-5

1-3-4-2-5


1

21

22

1-6

1-3-4-2-6

1-5-3-4-2-6

Рисунок. 2

V1 V3
Рисунок.3

V1 V3
Рисунок.4

V1 V3


Рисунок.5

V1 V3
Рисунок.6

V1 V3

Рисунок.7

V1 V3


^ 1.3.Алгоритм Беллмана-Форда
Алгоритм Беллмана — Форда может быть сформулирован следующим образом. Требуется найти кратчайшие пути от заданной вершины при условии, что эти пути состоят максимум из одного ребра, затем найти кратчайшие пути при условии, что эти пути состоят максимум из двух ребер, и т. д. Этот алгоритм также работает поэтапно, формально он может быть определен следующим образом. Введем обозначения:

  • sвершина-источник;

  • w(i,j)стоимость линии от вершины i до вершины j, причем w(i, j) = 0 или w(i,j) = , если две вершины не соединены напрямую, и w(i,j) => 0, если две вершины соединены напрямую;

  • hмаксимальное количество ребер в пути на текущем шаге алгоритма;

  • Lh(n)минимальная стоимость пути от вершины s до вершины п при условии, что этот путь состоит не более чем из h ребер.

Алгоритм состоит из двух шагов. Шаг 2 повторяется до тех пор, пока стоимости путей не перестанут изменяться.

1. Инициализация:

L0(n) =  для всех п  s,

Lh(s) = 0 для всех h.

2. Обновление. Для каждого последовательного h >= 0 и для каждого п  s вычислить

Lh+1(n) - min[Lh(j) + w(j, n)].

j

Соединить вершину п с предыдущей вершиной j, для которой находится минимальное значение, и удалить любое соединение вершины п с предыдущей вершиной, образованное на более ранней итерации. Путь от вершины s до вершины п заканчивается линией связи от вершины j до вершины п.

При h = К для каждой вершины-получателя п алгоритм сравнивает потенциальный путь от вершины s до вершины п длиной К + 1 с путем, существовавшим к концу предыдущей итерации. Если предыдущий более короткий путь обладает меньшей стоимостью, то он сохраняется. В противном случае сохраняется новый путь от вершины s до вершины п длиной К + 1. Этот путь состоит из пути длиной К от вершины К до некоей вершины j и прямого участка от вершины j до вершины п. В этом случае используемый путь от вершины s до вершины j представляет собой путь, состоящий из К ретрансляционных участков.

В табл. 2 показан результат применения этого алгоритма к графу, представленному на рис. 8, в котором в качестве вершины s выбираем: вершину V1. На каждом шаге алгоритм находит путь с минимальной стоимостью, максимальное число ретрансляционных участков в котором равно h. После последней итерации алгоритм находит путь с минимальной стоимостью к каждой вершине, а также вычисляется стоимость этого пути. Та же процедура может быть применена к вершине V2 и т. д. Результаты работы алгоритмов Дейкстры и Беллмана - Форда совпадают.

Рисунок.8

V2

V1 V3
Таблица№2



L(2)

Путь

L(3)

Путь

L(4)

Путь

L(5)

Путь

L(6)

Путь

1



-

5

1-3



-

1

1-5

5

1-6

2

6

12

1-5-2

1-6-2

5

6

1-3

1-5-3

11

1-3-4


1

9

1-5

1-3-5

5

1-6

3

6

12

17

14

1-5-2

1-6-2

1-3-4-2

1-3-5-2

5

6

1-4-3

1-5-3

11

12

14

9

1-4

1-6-2-4

1-6-2-4

1

9

13


1-5

1-3-5

1-6-2-5


5

9

1-6

1-5-2-6

4

6

18

1-5-2

1-5-3-4-2

5

6

18

15

10



1-3

1-5-3

1-6-2-5-3

1-6-2-4-3

1-5-2-4-3

9

17

1-5-2-4

1-3-5-2-4

10

20

1-6-2-5

1-3-4-2-5

1

23

1-6

1-3-5-2-6



^ 1.4.Расчет пути с минимальным количеством переходов
Преобразуем исходный граф в неориентированный невзвешенный граф.
Рисунок.9 Неориентированный, невзвешенный граф
V2

V1 V3


Произведем поиск кратчайшего пути по алгоритму Дейкстры.


Таблица№3



T

L(2)

Путь

L(3)

Путь

L(4)

Путь

L(5)

Путь

L(6)

Путь

1

{1}



-

1

1-3



-

1

1-5

1

1-6

2

{1;5}

2

1-5-2

1

2

1-3

1-5-3



-

1

1-5

1

1-6

3

{1;5;2}

2

1-5-2

1

1-3

3

1-5-2-4

1

1-5

1

3

1-6

1-5-2-6

4

{1;5;2;6}

2

2

1-5-2

1-6-2

1

4

1-3

1-6-2-5-3

3

3

1-5-2-4

1-6-2-4

1

3

1-5

1-6-2-5

1

1-6

5

{1;5;2;6;3}

2

3

1-5-2

1-3-5-2

1

4

1-3

1-6-2-5-3

2

3

3

3

4

5

1-3-4

1-5-2-4

1-6-2-4

1-5-3-4

1-3-5-2-4

1-6-2-5-3-4


1

2

3

1-5

1-3-5

1-6-2-5

1

4

1-6

1-3-5-2-6

6

{1;5;2;6;3;4}

2

3

3

4

1-5-2

1-3-5-2

1-3-4-2

1-5-3-4-2

1

4

1-3

1-6-2-5-3

2


1-3-4


2

4

1-5

1-3-4-2-5

1

4

4

5

1-6

1-3-5-2-6

1-3-4-2-6

1-5-3-4-2-6
  1   2   3



Скачать файл (340.5 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации