This document discusses algorithms for solving the all-pairs shortest path problem. It presents the Floyd-Warshall algorithm, which uses dynamic programming and matrix multiplication to solve this problem. The algorithm computes the shortest paths between all pairs of vertices in a graph. It also describes Johnson's algorithm, which is more efficient for sparse graphs and uses Dijkstra's and Bellman-Ford algorithms as subroutines. It works by reweighting the graph to eliminate negative edges before computing single-source shortest paths.