Algorithms for Codebook Design
The optimal codebook design problem appears to be a NP-hard problem.
There is a very effective method, called the generalized Lloyd algorithm (GLA) for finding a good local minimum.
GLA is also known in the statistics community as the k-means algorithm.