This document discusses algorithms for solving the all-pairs shortest path problem in graphs. It defines the all-pairs shortest path problem as finding the shortest path between every pair of nodes in a graph. It then describes two main algorithms for solving this problem: Floyd-Warshall and Johnson's algorithm. Floyd-Warshall finds all-pairs shortest paths in O(n3) time using dynamic programming. Johnson's algorithm improves this to O(V2logV+VE) time by first transforming the graph to make edges positive, then running Dijkstra's algorithm from each node.