Graphs and Algorithms