This document discusses algorithms for solving the all-pairs shortest paths (APSP) problem. It begins by defining the problem and describing the input as a weighted graph. It then discusses several approaches to solving APSP, including using single-source shortest path algorithms repeatedly, and specialized dynamic programming algorithms like Floyd-Warshall and Johnson's algorithm. Floyd-Warshall finds shortest paths by considering intermediate vertices between pairs of vertices. It works in O(n3) time and space for a graph with n vertices. Johnson's algorithm improves the running time for sparse graphs with negative weights.