Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая По Системы и сети передачи данных.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
200.92 Кб
Скачать

Содержание

1. Алгоритмы поиска кратчайшего пути

1.1. Исходные данные 1.2. Алгоритм Дейкстры 1.3. Алгоритм Беллмана-Форда 1.4. Расчет пути с минимальным количеством переходов 1.5. Выводы

2.    Маршрутизация

2.1. Основы маршрутизации 2.2. Протокол RIP 2.3. Схема сети 2.4. Построение маршрутных таблиц 2.5. Адаптация к изменениям состояния сети 2.5.1. Проблемы адаптации RIP 2.5.2. Отключение тупиковой сети

2.6. Технологии ускорения сходимости

1 Алгоритмы поиска кратчайшего пути

1.1 Исходные данные

Вариант № 547  0 0 0 6 0 4  0 0 7 2 2 0  0 1 0 5 0 5  1 1 5 0 0 0  0 5 0 0 0 6  8 0 1 0 8 0

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

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 до вершины n, известного на данный момент алгоритму (по завершении работы алгоритма это минимальная стоимость пути от вершины s до вершины n).

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

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

Т = Дерево = {s},

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

L(n) = w(s, n) для n ≠ s,

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

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

L(x) = min L(j)

j∉T

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

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

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

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

Алгоритм завершает работу, когда все вершины добавлены к множеству Т.

Таким образом, для работы алгоритма требуется |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 до вершин, не входящих в множество Т. Среди этих путей существу один путь с минимальной стоимостью, проходящий исключительно по вершинам, принадлежащим множеству Т, заканчивающийся линией, непосредственно связывающей некую вершину множества Т с вершиной, не принадлежащей множеству Т. Эта вершина добавляется к множеству Т, а соответствующий путь считается путем с наименьшей стоимостью к данной вершине.

Ниже показан результат применения данного алгоритма к графу, представленному в исходных данных. В данном случае в качестве вершины s выбирается вершина V1. Ребра, выделенные жирными линиями, показывают связующее дерево для этого графа. Значения в каждой окружности представляют собой текущие оценки величины L(x) для каждой вершины х. Вершина затеняется при добавлении к множеству T.

Таблица 1 – Алгоритм Дейкстры

Итерация

Т

L2

Путь

L3

Путь

L4

Путь

L5

Путь

L6

Путь

1

{1}

-

-

6

1-4

-

4

1-6

2

{1, 6}

-

-

6

1-4

-

4

1-6

-

5

1-6-3

6

1-4

12

1-6-5

4

1-6

3

{1, 6, 3}

-

5

1-6-3

6

1-4

12

1-6-5

4

1-6

6

1-6-3-2

5

1-6-3

10

1-6-3-4

12

1-6-5

4

1-6

4

{1, 6, 3, 4}

6

1-6-3-2

5

1-6-3

6

1-4

12

1-6-5

4

1-6

7

1-4-2

5

1-6-3

6

1-4

12

1-6-5

4

1-6

5

{1, 6, 3, 4, 2}

6

1-6-3-2

5

1-6-3

6

1-4

12

1-6-5

4

1-6

6

1-6-3-2

5

1-6-3

6

1-4

8

1-6-3-2-5

4

1-6

6

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

6

1-6-3-2

5

1-6-3

6

1-4

8

1-6-3-2-5

4

1-6

Рисунок 2 - Связующие дерево на 1 итерации

Рисунок 3- Связующие дерево на 2 итерации

Рисунок 4- Связующие дерево на 3 итерации

Рисунок 5- Связующие дерево на 4 итерации

Рисунок 6 - Связующие дерево на 5 итерации

Рисунок 7 - Связующие дерево на 6 итерации