Графы

курсовая работа

4.2 Алгоритм Беллмана-Мура (алгоритм корректировки меток)

Алгоритм:

1. Присвоение начальных значений.

s - начальная вершина,

- обозначение текущей вершины,

, ,

- множество вершин в очереди.

2. Корректировка меток в очереди.

Удаляем из очереди Q вершину, находящуюся в самом начале очереди. Для каждой вершины , непосредственно достижимой из , корректируем ее метку по формуле (аналогично алгоритму Дейкстры). Если при этом , то корректируем очередь вершин, иначе продолжаем перебор вершин и корректировку меток.

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

,

- удаляем из очереди вершину, находящуюся в начале.

3. Проверка на завершение алгоритма.

Если то возвращаемся к пункту 2 и продолжаем выполнение алгоритма, иначе алгоритм завершается, следовательно, минимальное расстояние от начальной вершины до всех остальных вершин найдено.

? Нет. Выполняем 2-ю итерацию, переходим к пункту 2.

Задание 3. По заданной матрице весов графа G найти минимальный путь и сам путь по алгоритму Беллмана-Мура между начальной вершиной и конечной вершиной или .

1 итерация

, , ,

2 итерация

, .

? Да. - вершина ранее в очереди не стояла и в данный момент Q было пусто, поэтому вершина ставится на первое место (конец очереди совпадает с началом).

? Да. - вершина ранее в очереди не стояла, поэтому вершина ставится на последнее место.

3 итерация

, .

? Да.

4 итерация

, .

? Да.

.

? Да.

.

? Да.

5 итерация

,

? Да.

6 итерация

,

? Да.

? Нет.

? Да.

7 итерация

8 итерация

,

? Нет.

.

? Нет.

.

? Нет.

9 итерация

,

? Нет.

.

? Да.

10 итерация

Алгоритм закончен. Результаты всех итераций зафиксированы в таблице 2

Кратчайший путь из v1 в v7: , l(v7)=11

Делись добром ;)