Изменения

Перейти к: навигация, поиск

Кратчайший путь в ациклическом графе

746 байт убрано, 23:52, 10 мая 2016
Пример
{{Задача
|definition =
Пусть дан [[Основные_определения_теории_графов |ациклический ориентированный взвешенный граф]]. Требуется найти вес [[Алгоритм_Дейкстры |кратчайшего пути ]] из <tex>u</tex> в <tex>v</tex>.
}}
{{Определение|definition= '''Кратчайший путь''' из вершины '''u''' в вершину '''v''' – это такой путь из вершины '''u '''в вершину '''v''', что суммарный вес входящих в него ребер минимален.}}
==Решение==
Воспользуемся принципом оптимальности на префиксе.<br />
Пусть <tex>d</tex> — функция, где <tex>d(i)</tex> — вес кратчайшего пути из <tex>u</tex> в <tex>i</tex>. Ясно, что <tex>d(u)</tex> равен <tex>0</tex>. Пусть <tex>w(i, j)</tex> {{---}} вес ребра из <tex>i</tex> в <tex>j</tex>. Будем обходить граф в порядке [[Использование_обхода_в_глубину_для_топологической_сортировки | топологической сортировки]]. Получаем следующие соотношения: <br />
: <tex> d(i) = \min\limits_{\mathop{j:j \rightsquigarrow i}} (d(j) + w(j, i)) </tex>
| || '''1''' || '''2''' || '''3''' || '''4''' || '''5''' || '''6''' || '''7''' || '''8'''
|-
| '''1''' || - || - || - || 5 - || - 2 || - || - || -
|-
| '''2''' || 1 || - || 1 || - || 4 || 3 || - || -
==См. также==
*[[Алгоритм_Флойда_—_Уоршалла |Алгоритм Флойда—Уоршалла]]
*[[Алгоритм_Дейкстры |Алгоритм Дейкстры]]
*[[Алгоритм_Форда-Беллмана |Алгоритм Форда-Беллмана]]
==Источники информации==
*[http://www.ics.uci.edu/~eppstein/161/960208.html Алгоритмы поиска кратчайшего пути в графе]
*[[Динамическое_программирование#.D0.9F.D1.80.D0.B8.D0.BD.D1.86.D0.B8.D0.BF_.D0.BE.D0.BF.D1.82.D0.B8.D0.BC.D0.B0.D0.BB.D1.8C.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D0.BD.D0.B0_.D0.BF.D1.80.D0.B5.D1.84.D0.B8.D0.BA.D1.81.D0.B5|Принцип оптимальности на префиксе]]* [http://en.wikipedia.org/wiki/Optimal_substructure Принцип оптимальности на подзадаче (в качестве примера разбирается задача поиска кратчайшего пути в ациклическом графе)(англ.)Wikipedia {{---}} Optimal substructure]
[[Категория:Дискретная математика и алгоритмы]]
[[Категория:Динамическое программирование]]
Анонимный участник

Навигация