The algorithm design manual - Skiena, Steven S. (Springer, 1998)