Задача о кратчайших путях для всех пар

Здравствуйте, если вы помните алгоритм Дейкстры, который находит кратчайший путь между исходным узлом и всеми остальными узлами, но что, если мы хотим найти кратчайший путь между любыми двумя случайными узлами, присутствующими в графе??

Итак, у нас есть алгоритм под названием Алго Флойда Уоршалла. Он был назван так потому, что алгоритм Уоршелла находит транзитивное замыкание орграфов, а алгоритм Флойда находит кратчайший путь для всех пар. На самом деле, в начале, когда этот алгоритм представили warshall и floyd, они нигде не упоминали DP, но позже обнаружили прикосновение DP в своем алгоритме и затем упомянули его.

Итак, мы представляем граф в виде матрицы смежности и соотв. для алгоритма мы рассматриваем косвенный вес ребра как бесконечность или MAX_INT и D[i][j] = 0, где i==j .

Итак, ниже вы можете увидеть пошаговую методологию этого алгоритма.

Здесь используется следующая формула:
if (R[i][k]+R[k][j] ‹ R[i][j])
{R[i][j] = R[ я][к]+Р[к][дж]}

Используемый алгоритм приведен ниже: -

Код написан мной на языке C++.
Ссылка: https://github.com/halfbloodprince16/All-Algorithms/blob/master/FloydWarshallDP.cpp

Ссылки: Анани Левитин DAA, geeksforgeeks.