This document discusses various algorithms for finding shortest paths in graphs, including Dijkstra's algorithm, breadth-first search (BFS), depth-first search (DFS), and Bellman-Ford algorithm. It provides pseudocode examples and explanations of how each algorithm works. It also covers properties of spanning trees, minimum spanning tree algorithms like Kruskal's and Prim's, and applications of spanning trees like network planning and routing protocols.