Слайд 2Поиск путей (маршрутов) с минимальным числом дуг (ребер)
Путь (маршрут) в орграфе D
![Поиск путей (маршрутов) с минимальным числом дуг (ребер) Путь (маршрут) в орграфе](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1082421/slide-1.jpg)
(графе G) из v в w (v ≠ w) называется минимальным, если он имеет минимальную длину среди всех путей D (маршрутов G) из v в w.
Теорема 3.3
Любой минимальный путь (маршрут) является простой цепью
Слайд 3Алгоритм фронта волны
( нахождения минимального пути в орграфе D)
Рассмотрим орграф D =
![Алгоритм фронта волны ( нахождения минимального пути в орграфе D) Рассмотрим орграф](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1082421/slide-2.jpg)
(V, X), n ≠ 2. И пусть заданы вершины v и w, причем v ≠ w.
Обозначим:
D(v) = {w∈V | (v, w) ∈ X} – образ v.
D -1(v) = {w∈V | (w, v) ∈ X} – прообраз v.
Слайд 4Шаг 1. Помечаем v индексом 0. Помечаем вершину, принадлежащую образу v индексом
![Шаг 1. Помечаем v индексом 0. Помечаем вершину, принадлежащую образу v индексом](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1082421/slide-3.jpg)
1, множество вершин с индексом 1 обозначим FW1(v).
Полагаем k = 1.
Шаг 2. IF FWk(v) = ∅ или k = n-1, w∉ FWk(v), THEN w не достижима из v и конец алгоритма.
ELSE
Слайд 5Шаг 3. IF w ∉ FWk(v), THEN переход к шагу 4.
ELSE, существует
![Шаг 3. IF w ∉ FWk(v), THEN переход к шагу 4. ELSE,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1082421/slide-4.jpg)
путь из v в w длиной k, и этот путь является минимальным.
Последовательность v w1 w2 … wk-1 w – искомый минимальный путь.
Где wk-1 ∈ FWk-1(v) ∩ D-1(w)
wk-2 ∈ FWk-2(v) ∩ D-1(wk-1)
…………………………….
w1 ∈ FW1(v) ∩ D-1(w2)
конец алгоритма.
Слайд 6Шаг 4. 1) Помечаем индексом (k+1) все непомеченные вершины, которые принадлежат образу
![Шаг 4. 1) Помечаем индексом (k+1) все непомеченные вершины, которые принадлежат образу](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1082421/slide-5.jpg)
множества вершин с индексом k.
Множество вершин с индексом (k+1) обозначаем FWk+1(v).
2) k: = k+1
3) переход к шагу 2.
Слайд 7Замечания
Множество FWk(v) в алгоритме называется фронтом волны k-го уровня.
Вершины w1 w2 …
![Замечания Множество FWk(v) в алгоритме называется фронтом волны k-го уровня. Вершины w1](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1082421/slide-6.jpg)
wk-1 могут быть выделены неоднозначно. Эта неоднозначность соответствует случаям, когда существует несколько различных минимальных путей из v в w.
Слайд 8Пример
Найти минимальный путь из v1 в v6 в орграфе D, заданном матрицей
![Пример Найти минимальный путь из v1 в v6 в орграфе D, заданном матрицей смежности A.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1082421/slide-7.jpg)
смежности A.
Слайд 10Прямой ход алгоритма. Определение фронтов волны.
FW1(v1)={v4,v5}; v6 ∉ FW1(v1)
FW2(v1)=D(FW1(v1))\{v1,v4,v5}= ={v1,v2,v3,v4,v5} \{v1,v4,v5}= ={v2,v3};
![Прямой ход алгоритма. Определение фронтов волны. FW1(v1)={v4,v5}; v6 ∉ FW1(v1) FW2(v1)=D(FW1(v1))\{v1,v4,v5}= ={v1,v2,v3,v4,v5}](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1082421/slide-9.jpg)
v6 ∉ FW2(v1)
FW3(v1)=D(FW2(v1))\{v1,v4,v5,v2,v3}={v1,v2,v4,v5,v6} \{v1,v4,v5,v2,v3}={v6};
v6∈FW3(v1), значит существует путь из v1 в v6 длины 3 и этот путь является минимальным.
Слайд 11Обратный ход алгоритма. Нахождение вершин минимального пути.
Нахождение вершин ведется от последней к
![Обратный ход алгоритма. Нахождение вершин минимального пути. Нахождение вершин ведется от последней](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1082421/slide-10.jpg)
первой.
FW2 (v1) ∩ D-1(v6) = {v2,v3}∩{v2,v3} = {v2,v3}
Выберем любую вершину из найденного множества, например v3 –это предпоследняя вершина минимального пути.
Определим предыдущую вершину:
FW1(v1)∩D-1(v3)={v4,v5}∩{v4,v5,v6}={v4,v5}
Выберем любую вершину из найденного множества, например v5.
Тогда минимальный путь v1,v5,v3,v6