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

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

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

Студворк — интернет-сервис помощи студентам
По курсу методов оптимизации возникла задача в решении примера поиска оптимального пути на графе с применением метода Дейкстры. Чтобы продемонстрировать, насколько этот метод не получается понять, прилагаю сам граф и попытку решения. Граф ориентированный, со скалярными весами рёбер. Как рисовать граф в 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2014, 19:34
Ответы с готовыми решениями:

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

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

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

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



Ставим ноль той веришне, из которой будем искать пути до других вершин, штрихуем тк от самой до себя крачайшее расстояние 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
477 / 280 / 90
Регистрация: 15.11.2013
Сообщений: 530
21.10.2014, 14:33

Как видите, два кратчайших пути.
В квадратиках - минимальное расстояние от вершины 1 до данной вершины
0
1 / 1 / 1
Регистрация: 08.10.2014
Сообщений: 25
21.10.2014, 21:33
да, еще 1 забыл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2014, 21:33
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru