Introduction To Algorithms - Thomas H. Cormen , Charles E. Leiserson