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 {}.