Здесь есть два угла атаки.
Первое - это изменение определения w '. Текущее определение не только сохраняет кратчайшие пути; это сохраняет различия между длинами путей, соединяющих одни и те же конечные точки. У меня нет никаких конкретных идей для использования здесь разрыва. К сожалению, любое повторное взвешивание, которое удовлетворяет более сильному свойству, имеет связанную функцию h.
Второе - это изменение определения h. Этот угол бесперспективен, поскольку, когда мы переписываем неотрицательное условие, оно выглядит как
h(w) <= h(v) + d(v, w) for all vw in E,
, что является тем же ограничением, что и для кратчайших путей (линейная программа кратчайших путей имеет дополнительное ограничение, заключающееся в том, что корень находится на нулевом расстоянии, и он стремится максимизировать сумму меток расстояния). Я не буду говорить, что вы должны делать Беллмана - Форда, но все, что вы используете для вычисления h, должно в некотором смысле быть алгоритмом кратчайшего пути, который может справиться с отрицательными весами.