Края невзвешенные, поэтому дайте каждому ребру вес 1+auth(v,u)
.[auth объясняется в следующей строке]
для каждого (v, u) набора auth(v,u) = max{authority} - authority(v)
(*) [это верно, потому что, если вы используете ребро, выходящее из v
, вы определенно посетили его].
(*) max{authority}
является высшим авторитетом в графе.
нормализует ваш "рейтинг авторизации", поэтому Sigma(auth(v,u),for each (v,u) in E) < 1
[путем деления, так что авторитет граней все равно будетбыть пропорциональным оригиналу]
сейчас, запустите dijkstra на графике с новыми измененными весами.
Найденный кратчайший путь должен быть кратчайшим , потому что фактор авторитета не может преодолеть фактор расстояния, потому что он «слабый» [нормализован до менее 1].
И это тот, у которого наивысший authority
[для вершин], поскольку он с самым низким auth
[для ребер], поскольку он минимален.