Скачиваний:
0
Добавлен:
22.09.2026
Размер:
292 Кб
Скачать
☆
  1. Сравнительный анализ алгоритмов

Рассмотрим неориентированный граф с вершинами 1, 2, 3, 4 и рёбрами:

Рисунок 1. Неориентированный граф

Таблица 1 - Исходная матрица расстояний

1

2

3

4

1

0

2

5

∞

2

2

0

1

4

3

5

1

0

3

4

∞

4

3

0

3.1. Пример работы алгоритма Флойда-Уоршелла

Шаг 1. Разрешаем вершину 1 как промежуточную. Проверяем все пары (i,j):

2→3: 2→1→3 = 2+5 = 7 > текущего 1 → не меняем.

2→4: 2→1→4 = 2+∞ = ∞ → не меняем.

3→4: 3→1→4 = 5+∞ = ∞ → не меняем. Остальные пары не улучшаются. Результат: матрица без изменений.

Шаг 2. Разрешаем вершину 2.

1→3: было 5, через 2: 1→2→3 = 2+1 = 3 → обновляем (теперь 3).

1→4: было ∞, через 2: 1→2→4 = 2+4 = 6 → обновляем (теперь 6).

3→4: было 3, через 2: 3→2→4 = 1+4 = 5 → не меняем (3 < 5).

Матрица после шага 2:

Таблица 2. Матрица расстояний после 2 шага

1

2

3

4

1

0

2

3

6

2

2

0

1

4

3

3

1

0

3

4

6

4

3

0

Шаг 3. Разрешаем вершину 3.

1→4: было 6, через 3: 1→3→4 = 3+3 = 6 → не меняем.

2→4: было 4, через 3: 2→3→4 = 1+3 = 4 → не меняем.

Изменений нет.

Шаг 4. Разрешаем вершину 4.

1→2: 1→4→2 = 6+4 = 10 > 2 → нет.

1→3: 1→4→3 = 6+3 = 9 > 3 → нет.

2→3: 2→4→3 = 4+3 = 7 > 1 → нет.

Изменений нет.

Финальная матрица — кратчайшие расстояния между всеми парами:

Таблица 3. Финальная матрица расстояний

1

2

3

4

1

0

2

3

6

2

2

0

1

4

3

3

1

0

3

4

6

4

3

0

    1. Пример работы алгоритма Дейкстры

Используем тот же граф (рис. 1).

Инициализируем посещённые и непосещённые вершины dist[1]=0, dist[2]=∞, dist[3]=∞, dist[4]=∞. Непосещённые: {1,2,3,4}.

Шаг 1

Среди непосещённых минимальное dist у вершины 1 (0). Убираем 1. Смотрим соседей:

2: dist[2] = min(∞, 0+2) = 2.

3: dist[3] = min(∞, 0+5) = 5. 4 не смежна с 1.

Теперь: dist[1]=0 (посещена), dist[2]=2, dist[3]=5, dist[4]=∞.

Шаг 2

Непосещённые {2,3,4}, минимальный dist у 2 (2). Убираем 2. Соседи 2:

1 уже посещена, пропускаем.

3: dist[3] = min(5, 2+1) = 3.

4: dist[4] = min(∞, 2+4) = 6.

Теперь: dist[2]=2 (посещена), dist[3]=3, dist[4]=6.

Шаг 3

Непосещённые {3,4}, минимальный у 3 (3). Убираем 3. Соседи 3:

1,2 посещены.

4: dist[4] = min(6, 3+3) = 6 (не улучшается). Теперь: dist[3]=3 (посещена), dist[4]=6.

Шаг 4

Непосещённые {4}, минимальный 4 (6). Убираем 4. Все соседи (2,3) уже посещены. Алгоритм завершён.

Результат (расстояния от вершины 1):

до 2: 2

до 3: 3

до 4: 6

Это совпадает с первой строкой матрицы, полученной методом Флойда–Уоршелла (табл. 3).

Для получения полной матрицы кратчайших расстояний необходимо так же запустить алгоритм Дейкстры отдельно от каждой вершины (1, 2, 3, 4).

Соседние файлы в папке Отчёты Дагаев