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