Кратчайший путь в ациклическом графе — различия между версиями
Строка 3: | Строка 3: | ||
*<tex>\rm{\delta}(u, v) = \left\{\begin{array}{llcl} | *<tex>\rm{\delta}(u, v) = \left\{\begin{array}{llcl} | ||
− | min \text{ } \omega(p) \text{ for all ways p from u to v} ; | + | min \text{ } \omega(p) \text{ for all ways p from u to v} &;if \text{ }\mathcal{9} p \\ |
− | \mathcal{1}; | + | \mathcal{1}&;if \text{ } \nexists p\\ |
\end{array}\right. | \end{array}\right. | ||
</tex> | </tex> |
Версия 22:30, 15 января 2011
Определение: |
Кратчайший путь из u в v – это любой путь p из u в v, для которого
| , где:
Принцип оптимальности на префиксе
Префикс оптимального решения сам является оптимальным решением (в другой подзадаче)
Если ac - оптимальное решение , то и ab (префикс ac) тоже является оптимальным решением.
Для нахождения кратчайшего пути в графе заведем функцию переменную opt[x], в которой хранится длина кратчайшего пути до вершины х.
В общем случае мы можем написать:
, где cost(vu) - вес ребра из u в v.
Будем обходить вершины в порядке, обратном к топологической сортировке.