Introduction to Algorithms [3e]
Thomas H. Cormen & Charles E. Leiserson & Ronald L. Rivest & Clifford Stein