Algorithms in Java : Introduction to Algorithms - Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (McGraw-Hill, 2004)