Следующий код предназначен для алгоритма Флойда-Уоршалла.
for (int k = 0; k < n; ++k) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}
}
}
Предлагаю переписать код следующим образом
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
for (int k = 0; k < n; ++k) {
d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}
}
}
В новом коде я поместил исходный внешний цикл в самый внутренний цикл. Я считаю, что новый код легко понять, решая все проблемы кратчайшего пути для пар. Мой вопрос: эквивалентен ли новый код исходному коду алгоритма Флойда-Уоршалла?