Introduction to Algorithms - Thomas H. Cormen (McGraw Hill, 2001)