The most used hard-clustering algorithm is k-means (Moody and Darken, 1989; Lloyd, 1982). Here, in each iteration step, first, based on the Voronoi tessellation, for all *j*,
*P*(*j*|) is calculated for one (on-line version) or all patterns (batch version). Then, in the on-line version, the code-book assigned to is moved closer to (using (2.13) with
(*t*) = ). In the batch version, each is moved to the center of its assigned patterns (which minimizes (2.12) given the assignment
*P*(*j*|)). These steps are repeated until convergence is reached. The disadvantage of k-means is that it is prone to end at a local minimum, and therefore, its success depends on the initial choice of
{}.

2005-03-22