Я не знаю, решит ли это минимальное связующее дерево, но это, безусловно, можно решить, внеся некоторые изменения в алгоритм Дейкстры.
Определите «длину» пути как максимальное ребро в этом пути. Теперь найдите кратчайший путь от S до X, используя алгоритм Дейкстры. Это путь, который вы ищете.
Сложность равна O((N+M)log N)
, если вы используете двоичную кучу, и O(N * log N + M)
с кучей Фибоначчи.
Обратите внимание, что для этого нового определения длины пути, если длина пути равна l
, добавление ребра в конец пути не приведет к уменьшению его длины, так как максимальное ребро в этом пути может только увеличиться , Это свойство необходимо для правильной работы алгоритма Дейкстры.
Например, если вы искали путь с кратчайшим ребром, то алгоритм Дейкстры потерпит неудачу так же, как и при наличии отрицательных ребер в графе.