Approximation Algorithms and Semidefinite Programming