лгоритм поиска пути наименьшей длины

Пусть G=(V,Г) – произвольный ориентированный граф; v,w - вершины. Требуется найти (v-w) - путь, имеющий наименьшее число дуг.

 

Пункты 1-2.

 

Пункты 3-4.

Пункт 5.

Пункт 6.

1.2. Пример решения задачи в EXCEL с использованием «Поиск решения»

Дано:имеются n=5 узлов транспортной сети, соединенных между собой дорогами, протяженность которых представлена матрицей || dij|| 5´5 (где символом «_» отражено отсутствие дороги) и соответствующей ей матрицей булевых констант, отражающих возможность наличия потока между узлами:

0 2 6 8 _ 0 1 1 1 0

_ 0 3 _ 7 0 0 1 0 1

_ 5 0 1 5 и 0 1 0 1 1

_ _ 4 0 2 0 0 1 0 1

_ _ _ _ 0 0 0 0 0 0

 

 

Найти:оптимальный маршрут из узла №1 сети в узел №5, с целью минимизации суммарной его протяженности.

Решение: Для указания входящего в узел маршрута и величину выходящего из узла маршрута введем следующие обозначения:

 

-1 – для начального узла маршрута;

= 0 – для промежуточных узлов;

1 – для конечного узла маршрута.

Чтобы из начального узла маршрута выходил поток в один из других узлов сети:

- для 1-го узла:

.

Чтобы величина входящего потока в промежуточный узел сети была равна величине выходящего:

- для 2-го узла:

- для 3-го узла:

- для 4-го узла:

Чтобы в конечный узел маршрута входил поток из какого-нибудь другого узла:

- для 5-го узла:

Целевая функция:

где w - множество допустимых альтернатив, обусловленных ограничениями задачи.

1. Для автоматизированного расчета результатов решения задачи в ячейку А2ввести слово Расстояния, в ячейки С2:G2, B3:B7, B9:B13иB15:B19 ввести числа: 1, 2, 3, 4, 5. В ячейки С2:G7ввести числа, соответствующие протяженности соответствующих дорог, при этом отсутствие дорог будем отражаться большим числом): 0, 2, 6, 8, 1000; 1000, 0, 3, 1000, 7; 1000, 5, 0, 1, 5; 1000, 1000, 4, 0, 2; 1000, 1000, 1000, 1000, 0 и выделить их цветом и границами обрамления.

2. В ячейку А9 ввести слово Константы, в ячейки С2:G13 ввести числа, соответствующие значениям булевых констант: 0, 1, 1, 1, 0; 0, 0, 1, 0, 1; 0, 1, 0, 1, 1; 0, 0, 1, 0, 1; 0, 0, 0, 0, 0 и выделить их цветом и границами обрамления.

3. В ячейку А15 ввести словоПеременные, ячейки С2:G19, содержимое которых будет соответствовать решению задачи, выделить цветом и границами обрамления.

4. В ячейку А21 ввести слово Ограничения, в ячейку I15 ввести формулу соответствующую отрицательной составляющей левой части ограничений задачи для узлов: =СУММПРОИЗВ(С9:G9;С15:G15). Скопировать эту формулу в ячейки I15:I19. В ячейку С21ввести формулу соответствующую положительной составляющей левой части ограничений задачи для узлов: =СУММПРОИЗВ(С9:С13;С15:С19). Скопировать эту формулу в ячейки С21:G21. Выделить их цветом и границами обрамления.

5. Ввести дополнения в формулы ячеекС21:G21, чтобысформировать в них левую часть ограничений задачи, соответственно:

- В ячейку С21:=СУММПРОИЗВ(С9:С13;С15:С19)-I15;

- В ячейку D21:=СУММПРОИЗВ(D9:D13;D15:D19)-I16;

- В ячейку E21:=СУММПРОИЗВ(E9:E13;E15:E19)-I17;

- В ячейку F21:=СУММПРОИЗВ(F9:F13;F15:F19)-I18;

- В ячейку G21:=СУММПРОИЗВ(G9:G13;G15:G19)-I19.

6. В ячейку А23 ввести Целевая функция, в ячейку С23 ввести формулу, соответствующую выражению целевой функции задачи: СУММПРОИЗВ(С3:G7;С15:G19), выделить ячейки цветом и границами обрамления.

7. В главном меню выбрать Сервис à Поиск решения.

8. Установить целевую ячейку С23, Минимальное значение, Изменяя ячейки С15:G19.

9. Щелкнуть по кнопке Добавить и в открывшемся диалоговом окне в областиСсылка на ячейку:ввести диапазон ячеек, соответствующих переменных задачах: С15:G19, затем в выпадающем списке выбрать знак , щелкнуть курсором в области Ограничение: и ввести число 0, нажать кнопку Добавить.

10. В открывшемся диалоговом окне в области Ссылка на ячейку: указать поочередно (то есть для каждой отдельно сформировать ограничение) ячейки, соответствующие диагональным элементами матрицы: С15, D16, E17, F18 и G19, в выпадающем списке выбрать знак: =, щелкнуть курсором в области Ограничение: и ввести число 0, соответствующее правой части ограничения задачи, нажать кнопку Добавить.

11. В открывшемся диалоговом окне в области Ссылка на ячейку: указать ячейку, соответствующую левой части ограничения задачи для 1-го узла: С21, в выпадающем списке выбрать знак: =, щелкнуть курсором в области Ограничение: и ввести число -1, соответствующее правой части ограничения задачи, нажать кнопку Добавить.

12. В открывшемся диалоговом окне в области Ссылка на ячейку: указать диапазон ячеек, соответствующих левой части ограничения задачи для 2-го, 3-го и 4-го узлов: =D21:F21, в выпадающем списке выбрать знак: =, щелкнуть курсором в области Ограничение: и ввести число 0, соответствующее правой части ограничения задачи, нажать кнопку Добавить.

13. В открывшемся диалоговом окне в области Ссылка на ячейку: указать ячейку, соответствующую левой части ограничения задачи для 5-го узла: G21, в выпадающем списке выбрать знак: =, щелкнуть курсором в области Ограничение: и ввести число 1, соответствующее правой части ограничения задачи, нажать кнопку ОК.

14. В диалоговом окне Поиск решения нажать кнопку Параметры, в отрывшемся диалоговом окне установить флажок Линейная модель и нажать ОК.

15. В диалоговом окне Поиск решения нажать кнопку Выполнить (в случае корректной постановки задачи автоматически будет найдено оптимальное решение задачи, о чем появится сообщение Решение найдено. Все ограничения и условие оптимальности выполнены, нажать кнопку ОК).

16. Сохранить файл с шаблоном решения.

 

арианты заданий

 

Вариант 1

 

Кратчайший путь от 1 к 7

Вариант 2

 

Кратчайший путь от 1 к 9

Вариант 3

Кратчайший путь от 1 к 8

 
 


Вариант 4

Кратчайший путь от 1 к 8

Вариант 5

 
 


Кратчайший путь от 1 к 7

Вариант 6

 
 


Кратчайший путь от 1 к 9

 

 

Вариант 7.

 
 

 


Кратчайший путь от 1 к 8.

Вариант 8.

 
 

 

 


Кратчайший путь от 1 к 8.

 

Вариант 9

 
 

 


Кратчайший путь от 1 к 8.

Вариант 10.

 

 
 

 

 


Кратчайший путь от 1 к 8.

 

Вариант 11.

 
 

 


Кратчайший путь от 1 к 9.

 

 

Вариант 12.

 
 

 

 


Кратчайший путь от 1 к 8.

 

Вариант 13.

 

 
 

 


Кратчайший путь от 1 к 9.

Вариант 14.

 
 

 

 


Кратчайший путь от 1 к 9.

1.4. Контрольные вопросы

1. Изобразите с помощью графа договорные отношения между предприятиями А, Б, В, Г, Д, Е, если к рассматриваемому моменту:

- предприятие А установило договорные отношения со всеми другими предприятиями;

- Б установило с Г и Д;

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

2. Сколько ребер нужно провести чтобы достроить граф, изображенный на рис. 1 до полного?

Рис. 1. Неполный граф

3. Сколько существует путей из вершины А в вершину Д на графе рис. 20.

4. Найдите простые пути на графе рис. 1.

5. Укажите степени вершин графа на рис. 1.

6. Дайте определение изоморфного графа и укажите, какой из графов, изображенных на рис. 2, не является изоморфным с другими.

Рис. 2. Примеры графов

7. Среди графов, изображенных на рис. 2 найдите плоский граф и дайте ему определение.

8. Приведите пример нулевого графа и дайте ему определение.

9. Приведите собственный пример несвязного графа и моста на нем.

10. Между четырьмя государствами были подписаны двухсторонние договорные обязательства. Каждый договор был подписан президентами обоих договаривающихся государств. Сколько всего подписей фигурировало в договорах, если каждый договор подписывался в двух экземплярах? Укажите закономерность, которая позволяет найти число подписей.

11. Определите степени входа и выхода всех вершин ориентированного графа на рис. 3.

 

Рис. 3. Ориентированный граф

12. Дайте определение длины пути и найдите ее значение от вершины Д до всех остальных вершин графа, изображенного на рис. 3.

13. Дайте определения пути и цикла на графе и найдите их, если они есть на графе рис. 3.