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