Debido a que K-means minimiza las desviaciones, un buen criterio es minimizar la suma de los cuadrados de las distancias entre los pares de puntos.
Esta es una integral (0/1) de programación lineal. Específicamente, la vinculación puede ser especificado por una matriz de $\Lambda = (\lambda_{ij})$ donde $\lambda_{ij} = 1$ si $c_i$ está vinculado con $k_j$ $\lambda_{ij}=0$ lo contrario. Buscamos minimizar
$$\sum_{i,j}\lambda_{ij}|c_i - k_j|^2$$
sujeto a las restricciones (que cumplir el uno-a-uno de emparejamiento)
$$\sum_{j}\lambda_{ij}=1$$
$$\sum_{i}\lambda_{ij}=1$$
$$\lambda_{ij} \in\{0,1\}.$$
Siempre los centroides no más de un par de cientos, esto se resolvió rápidamente. (Las matrices que intervienen en la configuración del problema de la rapidez de escape de RAM con más de un par de cientos de centroides, debido a que la escala de $O(n^3)$, y entonces usted podría tener que ser un poco más fastidioso con la programación.) Por ejemplo, Mathematica 8 `LinearProgramming' función no tiene medibles tiempo con menos de $n=20$ centroides, aumentando a unos 5 segundos con 400 centroides.
Por medio de segmentos de línea para mostrar las vinculaciones, esta cifra representa una solución óptima con $n=20$ normal bivariante de los centroides de $c_i$ e independiente bivariante normal de K-means soluciones de $k_i$.