Проблема наибольшего расстояния не имеет оптимальной подструктуры для любого графика , DAG или нет. Однако любая задача с самым длинным расстоянием на графе G эквивалентна задаче с наименьшим расстоянием в преобразованном графе G '= - G, то есть знак каждого веса ребра переворачивается.
Если ожидается, что преобразованный граф G 'будет иметь отрицательные ребра и циклы, то для определения кратчайшего расстояния используется алгоритм Беллмана-Форда. Однако, если G гарантированно будет иметь только неотрицательные веса (т.е. G '- неположительные веса), тогда алгоритм Дейкстры мог бы быть лучшим выбором по сравнению с Беллманом-Фордом. (см. ответ «Евгений Клюев» для графика - Дейкстра для длинного пути из одного источника ) Если G - DAG, то G 'также будет DAG. Для DAG у нас есть лучший алгоритм для нахождения кратчайшего расстояния, и его следует выбирать вместо Дейкстры или Беллмана-Форда.
Резюме:
Задача с самым длинным путем не имеет оптимальной подструктуры, поэтому изменение функции минимального веса в алгоритме Дейкстры на функцию максимального веса не будет работать для графа, будь то DAG или нет. Вместо того, чтобы модифицировать любой алгоритм кратчайшего пути (хорошо тривиальным образом), мы скорее преобразуем G, и посмотрим, какой алгоритм кратчайшего пути лучше всего работает на преобразованном G.
Примечание
A-------B
| | assume: edges A-B, B-C, C-A of same weight
| |
+-------C
Мы видим MAX_DIS (A, B) = A-> C-> B
Для "MAX_DIS", чтобы быть оптимальной структурой, в приведенном выше случае соотношение
MAX_DIS(A,B) = MAX_DIS(A,C) + MAX_DIS(C,B) should be satisfied.
Но это не так, как мы видим, MAX_DIS (A, C) = A-> B-> C и MAX_DIS (C, B) = C-> A-> B и, таким образом, это дает пример того, что проблема с самым длинным расстоянием может не иметь оптимальной подструктуры.