logo
Элементы теории множеств, основные положения те

2.9.1. Задача о кратчайшем пути между двумя вершинами (ориентированного графа

Каждой дуге графа G(X, V) ставиться в соответствие неотрицательное число - l(V) - длина его дуги. Требуется для двух фиксированных вершин Х0, Хn найти кратчайший путь, их соединяющий. Если под длиной дуги l(Xi, Xj) понимать стоимость перевозки груза из пункта Xi в пункт Xj, то содержание задачи составит определение пути из Х0 в Хn, при котором затраты на перевозки минимальны

2.18

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

Алгоритм решения этой задачи позволяет определить кратчайший путь и его длину за конечное число шагов. Каждая вершина графа получает некоторую числовую метку на первом шаге. Затем метки вершин, вообще говоря, могут меняться, становясь на некотором шаге постоянным числом. Установившаяся метка данной вершины есть кратчайшее рас­стояние от этой вершины до вершины Х0. Если пути, соединяющего вершины Х0 и Хn не существуют, считают длину кратчайшего расстояния между ними +

Алгоритм состоит в выполнении следующих операций:

Шаг 1. Проставить следующие метки: для вершины Х0 - метку . Для любой другой вершины Xi, - метку

Шаг 2. Найти на графе такую дугу (Xi, Xj), для которой

2.19

Разность считать равной 0. Если такая дуга най­дется, то изменить метку вершины Хj на

2.20

Если такой дуги нет, то пути, соединяющего Х0 и Хn не существует.

Шаг 3. Повторять шаг 2 до тех пор, пока метки вершин не перестанут меняться.

Установившиеся метки обозначим Может быть два случая: 1) . Это значит, что пути, соеди­няющего Х0 и Хn не существует. 2) - конечное число. Оно равно кратчайшему расстоянию между Х0 и Хn.

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

На графе-сети между входом и выходом графа путь ми­нимальной длины всегда существует. Его можно определить за один шаг, если пользоваться формулой:

2.21

Пример. Найти кратчайший путь между вершинами Х0 и X5. Длины дуг заданы на графе (рис. 2.17).

Рис. 2.17.

Решение. Имеем ориентированный граф без циклов, имеющий одну вершину Х0 без входящих дуг - вход графа, и одну вершину Х5 без выходящих дуг - выход графа. Такой граф есть граф-сеть.

Следуя алгоритму, обозначим Далее меняем метки всех вершин, кроме Х0. Смысл метки -некоторое расстояние от вершины Хi, до Х0. Поэтому метка вершины Х0 не меняется.

Для вершины X1: Поэтому меняем метку вершины X1 на

Х0

Справа отметим вершину, из которой пришли в вершину X1. Аналогично для вершины Х2:

Х0

В вершину Х3 ведут два пути: из вершины Х0 и из 'вершины X1. Поэтому используем формулу 2.21:

Х0

Справа обозначим вершину, по которой достигается минимум.

Аналогично для вершины Х4 и Х5 получаем:

Х1

Х4

Полученное значение = 5 есть длина минимального пути из Х0 в Х5. Сам путь получим, проходя по отмеченным вершинам из Х5 в Х0: Х5, Х4, X1, Х0, т.е. = {Х0, X1, Х4, Х5} -искомый путь, а его длина 1( ) = 5.

Задача может иметь не единственное решение.