Algorithms for the Quadratic Assignment Problem