Learning Graph Algorithms

I would suggest that when you study any algorithms then don't think of coding it. Algorithms are totally mathematical and you must have the same attitude towards them. When you study something like Graph Spanner algorithm then don't think how to code it how to represent them. First appreciate why the algorithm is important and non-trivial. Then try some very trivial solutions and compare their complexity. Next see how optimal solutions look like and try to derive their properties. Use a paper and pen and not IDE, try to derive and prove lemmas and so on. Then finally see how you can write a pseudocode to solve the problem. If you do these things then you will develop an intimate relation with the algorithms and then you will find it is much easier to solve them since then you don't think while coding that why I am doing this.

Unfortunately due to tremendous demands for programmer the programmer of now days are not mathematician and they face problems in solving new problems. Programmer of earlier days such as Don Knuth, Mcarthy were mathematicians and good researchers. Hence programmer is now a days relatively cheap word compared to computer scientists.


Both of these are very good:

  • The Algorithm Design Manual

  • Algorithms in C++ Part 5: Graph Algorithms (Don't worry about the C++ bit, has pseudocode as well)

Free Stuff:

  • Chapter 5. Graphs and graph algorithms

Steve Yegge says this is a terrific book on algorithms that uses graphs extensively.