Richard M. Karp: Computational Complexity in Theory and in Practice