Форум программистов, компьютерный форум, киберфорум
Дискретная математика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
9 / 9 / 3
Регистрация: 11.12.2012
Сообщений: 152
1

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

02.10.2014, 19:34. Показов 1949. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
По курсу методов оптимизации возникла задача в решении примера поиска оптимального пути на графе с применением метода Дейкстры. Чтобы продемонстрировать, насколько этот метод не получается понять, прилагаю сам граф и попытку решения. Граф ориентированный, со скалярными весами рёбер. Как рисовать граф в latex не знаю, поэтому таблицей. В нулевом столбце - вершины "откуда", в нулевой строке - вершины "куда", на пересечении - затраты.

xx 1 2 3 4 5 6 7 8 9 10
______________________
01|..1.......3.....1...
02|....2.....1.........
03|......4.............
04|........2.....1.....
05|....................
06|............2...1...
07|......2.............
08|........1...........
09|............2......6
10|............4.8.....

Стартовая вершина - 1(первая), финальная - 5(пятая)
шаг 0: вершина 1 получает метку [0], остальные [бесконечность]
шаг 1: рассматриваем вершины, достижимые из вершины 1, это вершины 2, 6 и 9, метки переписываются следующим образом:
1 [0]
2 [1]
3 [бесконечность]
4 [бесконечность]
5 [бесконечность]
6 [3]
7 [бесконечность]
8 [бесконечность]
9 [1]
10 [бесконечность]

шаг 2: далее, как следует из википедии и из методички нашей, следует рассматривать ближайшую вершину к вершине 1, в данном случае у меня их две: это вершины 2 и 9, что же, попробую рассмотреть их обе.
для вершины 2 достижимыми являются вершины 3 и 6. Значение метки для вершины 6 меняется с [3] на [2], ибо меньше, для вершины 3 всё как обычно, [бесконечность] на [3]. Итого:
1 [0]
2 [1]
3 [3] (new)
4 [бесконечность]
5 [бесконечность]
6 [2] (new)
7 [бесконечность]
8 [бесконечность]
9 [1]
10 [бесконечность]
А также рассматриваем вершину 9. Из неё достижимы вершины 7 и 10, здесь так:
1 [0]
2 [1]
3 [3] (new)
4 [бесконечность]
5 [бесконечность]
6 [2] (new)
7 [3] (new)
8 [бесконечность]
9 [1]
10 [7] (new)
что делать дальше, не знаю. По сути, новые метки появились у вершин 3, 6, 7, 10. И надо выбрать из них наименьшую, и то будет вершина 6, но уже тут отклонимся от оптимального пути, так как оптимальный путь 1-9-7-4-5
Помогите разобраться, что же делать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2014, 19:34
Ответы с готовыми решениями:

Поиск оптимального пути в графе
Здравствуйте. Помогите, пожалуйста, написать код задачи по С++. необходимо найти минимальный путь в...

Нахождение оптимального пути в графе
Здравствуйте. Есть у меня такая проблемка, у меня тема курсовой - "Нахождение оптимального пути в...

Нахождение кратчайшего пути в графе (алгоритм Дейкстры)
Здравствуйте, помогите пожалуйста, СРОЧНО,написать псевдокод реализации нахождения кратчайшего пути...

Прохождение игры-числового паззла в виде нахождения оптимального пути в графе
На всякий случай сразу упомяну. В эту тему я буду заглядывать минимум неделю с момента публикации...

4
9 / 9 / 3
Регистрация: 11.12.2012
Сообщений: 152
02.10.2014, 19:39  [ТС] 2
Наврал, вот граф))
Красным - номер вершины, синим - затраты на переход по ребру
Миниатюры
Метод Дейкстры по поиску оптимального пути на графе  
0
1 / 1 / 1
Регистрация: 08.10.2014
Сообщений: 25
20.10.2014, 13:37 3
Для удобства выписал себе матрицу, если заранее неизвестно за сколько дойдем, ставим бесконечность.(по графу тоже можно смотреть).

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


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

Во второй строке смотрим по графу (или матрице) переписываем известные нам веса инцидентных ребер тех вершин, до которых мы знаем как дойти(2, 6, 9) и в качестве метки берем минимальное расст. ( |<x(s), 2>| - единица), штрихуем.

В третьей строке : из второй вершины мы знаем как дойти до 3, 6, 9. смотрим по матрице из 2 в 3 вес ребра - 2, прибавляем к единичке и смотрим меньше ли тройка бесконечности? если меньше переписываем, если больше оставляем бесконечность. также для 6 и 9 вершины.

В 4 строке: в качестве метки выбрали 9 вершину кр. расст из x(s) - единица. делаем все тоже самое. если сумма единицы(метки) и веса ребра из матрицы больше, предыдущего то мы сносим предыдущую метку, иначе пишем новую.

Прокомментирую еще 7 строку.

в 7 строке: в качестве метки выбрали 7 вершину с кр. расст. из x(s) - 3. из 7 вершины в 4 по матрице вес ребра - 2, прибавляем к тройке двойку получаем - 5, 5<7? да. переписываем пятёрку, которую в последующем и выберем в качестве очередной метки.
и так далее до конца.

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


получили кратчайший путь из x(s) в x(t): x(s) - 9 - 7 - 4 - x(t)
кратчайшее расстояние из x(s) в x(t) : 7.

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


Если будут вопросы, спрашивайте)
0
476 / 279 / 90
Регистрация: 15.11.2013
Сообщений: 530
21.10.2014, 14:33 4
Метод Дейкстры по поиску оптимального пути на графе

Как видите, два кратчайших пути.
В квадратиках - минимальное расстояние от вершины 1 до данной вершины
0
1 / 1 / 1
Регистрация: 08.10.2014
Сообщений: 25
21.10.2014, 21:33 5
да, еще 1 забыл
0
21.10.2014, 21:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2014, 21:33
Помогаю со студенческими работами здесь

Реализовать алгоритм А* для поиска оптимального пути из начальной вершины в конечную на графе
Привет Нужно реализовать этот алгоритм для поиска оптимального пути из начальной вершины в...

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

Прогрмма по поиску кратчайших путей в графе
Всю голову поломал,но вот что-то толком не получается(((Нужна программа по поиску кратчайших путей...

Поиск оптимального пути
В БД хранится информация об узлах телекоммуникационной сети и кабелях. Нужно реализовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru