Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ДГМ.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
2.33 Mб
Скачать

Пример:

Необходимо соединить восемь объектов многополюсной цепью кратчайшей длины, причем один из объектов (№ 8) может только направлять информацию, а остальные — и направлять, и получать информацию без каких-либо ограничений (рис.2).

Рис.2

На рис.2 каждый объект представлен узлом, а каждая линия—дугой. Ориентированные дуги соответствуют распределительным звеньям, которые могут быть использованы для передачи информации только в указанном направлении. Числа, приписанные дугам, соответствуют расстоянию между объектами. Требуется найти для каждого объекта кратчайшие пути, связывающие его с другими объектами.

Решение.

Воспользуемся алгоритмом Флойда. Поскольку n=8, то число итераций в алгоритме будет 8.

Строим матрицу длин кратчайших цепей D0 и матрицу маршрутов R0. Отсутствие связи помечаем знаком ∞, нулем обозначаем связи внутри одного узла (из узла i в узел i):

Итерация 1. Выбираем базовый узел j=1. В матрице D0 вычеркиваем j-ю (базовую) строку и j-й (базовый) столбец. Чтобы определить, приведет ли использование узла 1 к более коротким цепям, необходимо исследовать элементы матрицы D0 с помощью трехместной операции: ; .

Если =∞, т. е. i-й элемент базового столбца равен ∞, то .

Если =∞, т. е. k-й элемент базовой строки равен ∞, то .

Если и одно из двух значений или превосходит , то замену также производить не следует. Столбцы 3, 5, 6, 7 и 8 содержат элементы, равные ∞ и принадлежащие базовой строке, а строки 3, 5-8 — элементы, равные ∞ и принадлежащие базовому столбцу, т. е. исследовать надо элементы (2,2); (2,4); (4,2); (4,4). Поскольку диагональные элементы можно не рассматривать, необходимо исследовать лишь оценки и :

;

.

Оценки и меньше оценок и и должны быть внесены в матрицу D1, а в матрице маршрутов надо положить и = l. Остальные элементы матриц D0 и R0 остаются без изменений. Получим матрицы

Итерация 2. Определим узел 2 как базовый, т. е. проверим, приведет его использование к более коротким цепям, и вычеркнем в матрице D1 вторую строку и второй столбец. Здесь столбцы 6—8 содержат элементы, равные ∞ и принадлежащие базовой строке, а строки 6—8 — элементы, равные ∞ и принадлежащие базовому столбцу (столбцы и строки 6—8 не рассматриваем). Исключаем и диагональные элементы. Остается исследовать лишь элементы (1,3), (1,4), (1,5), (3,1), (3,4), (3,5), (4,1), (4.3), (4,5), (5,1), (5.3), (5,4). Нетрудно проверить, что здесь улучшены могут быть только оценки , , , , , , равные ∞:

;

;

;

.

Таким образом, ; остальные элементы остаются без изменения. Новые матрицы имеют вид

Итерация 3. Определяем, приведет ли использование узла 3 к более коротким цепям. Берем узел 3 в качестве базового и вычеркиваем 3-ю строку и 3-й столбец в матрице D2. Исключаем диагональные элементы, элементы 3, 8-го столбцов и 3, 8-й строк. Аналогично получаем матрицы Dj; Rj, . Матрицы Dj; Rj , остаются без изменений. Следовательно, оптимальное решение соответствует матрицам D5 и R5, определяющим как оптимальное расстояние для передачи между объектами, так и последовательность передачи информации:

Например, определим кратчайшую цепь из узла 1 в узел 5. По матрице D5 определяем, что длина этой цепи равна = 9. Чтобы найти соответствующую последовательность узлов, обратимся к матрице R5. Значение равно 4,т.е. узел 4 является первым промежуточным узлом в кратчайшей цепи из узла 1 в узел 5. Теперь надо определить, какой узел следует за узлом 4 в кратчайшей цепи из узла 4 в узел 5. Рассмотрим =3. Значит, за узлом 4 следует узел 3. Аналогично, за узлом 3 следует узел 5. итак. Кратчайшая цепь из узла 1 в узел 5 определяется последовательностью узлов 1,4,3,5.