Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная 5.docx
Скачиваний:
3
Добавлен:
17.03.2023
Размер:
180.01 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра информационная безопасности

отчет

по лабораторной работе №5

по дисциплине «Алгоритмы и структуры данных»

Тема: Нахождение кратчайшего пути в графе

Студенты гр. 1363

Афанасьев Д.К.

Владимиров П.А.

Преподаватель

Беляев А.В.

Санкт-Петербург

2022

Цель работы: ознакомление с вариантами реализации алгоритмов на графах на примере задачи поиска кратчайшего пути в неориентированном графе.

Теоретические положения

Алгоритм Беллмана-Форда:

Алгоритм использует метод динамического программирования и формирует решение в виде квадратной матрицы, количество строк и столбцов которой равно количеству вершин графа. Ячейка на пересечении строки “m” и столбца “n” после окончания расчета содержит длину кратчайшего путь от заданной вершины до вершины «m», при условии, что он (путь) содержит не более «n» ребер (считая номера столбцов с «0»).

Матрица заполняется по столбцам слева направо. Начальное заполнение содержит нулевой столбец, где для строки заданной (исходной) вершины установлено значение «0», а для всех остальных строк – значение «∞» (на практике используется достаточно большая по величине константа).

Алгоритм Дейкстры:

Алгоритм последовательно анализирует («обрабатывает») все вершины графа, начиная от заданной (исходной) следующим образом.

Изначально всем вершинам, кроме исходной, присваивается оценка длины кратчайшего пути, равная «∞», (исходной вершине присваивается оценка «0»). Все вершины считаются «необработанными».

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

Теоретическая часть

Владимиров Петр (5 вариант)

AB

AD

AE

BC

BF

CD

CG

DH

EF

EH

FG

GH

18

17

2

12

28

14

10

6

23

11

19

5

  1. Алгоритм Беллмана-Форда

Запишем ребра в следующем порядке: AB, AD, AE, BC, BF, CD, CG, DH, EF, EH, FG, GH.

A

0

0

0

0

0

0

0

0

B

18

18

18

18

18

18

18

A-B

C

28

28

28

28

A-E-H-G-C

D

17

17

17

17

17

17

17

A-D

E

2

2

2

2

2

2

2

A-E

F

25

25

25

25

25

25

A-E-F

G

18

18

18

18

18

A-E-H-G

H

13

13

13

13

13

13

A-E-H

  1. Алгоритм Дейкстры

Итерация

S

V

D[B]

D[C]

D[D]

D[E]

D[F]

D[G]

D[H]

Начало

{A}

-

18

17,A

2,A

1

{A,E}

E

18,A

25,E

13,E

2

{A,E,H}

H

18,A

3

{A,E,H,G}

G

18,H

4

{A,E,H,G,C}

C

28,G

5

{A,E,H,G,C,B}

B

6

{A,E,H,G,C,B,D}

D

На 1 итерации обновляем значение пути для вершины B, D, E. На 2 итерации обновляем вершины F, H. На 3 итерации – вершину G. На 4 – C.

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

Соседние файлы в предмете Алгоритмы и структуры данных