Bisección de un conjunto de puntos en dos subconjuntos óptimos


9

Quiero dividir un conjunto de puntos en dos subconjuntos de igual tamaño de modo que se minimice la suma de cuadrados dentro del grupo. Podemos suponer que los puntos están en un espacio euclidiano bidimensional. Espero algo más rápido que un algoritmo general de agrupación k-means dado que k = d = 2. ¿Alguien puede señalarme en la dirección de un buen algoritmo para esto?

Una solución exacta no es necesaria si tenemos una buena aproximación.

¡Gracias!

Respuestas:


10

Si insiste en una partición precisa, debe calcular todas las particiones equilibradas de un conjunto de puntos en el plano por una línea (la partición óptima es una partición de Voronoi, por lo que los dos conjuntos de puntos están separados por una línea). Tales particiones se conocen como conjuntos . El algoritmo más rápido actualmente conocido para este trabajo en para calcular estas particiones en el dual [es decir, el nivel de un conjunto de líneas, para ] . Una vez que tenga todas las particiones posibles, solo necesita verificar cada una de ellas. Usando trucos estándar, esto se puede hacer en tiempo constante para cada partición.kO(n4/3logn)knk=n/2

(Actualización: Probar que la partición óptima se realiza mediante un conjunto , para , no es completamente trivial. Lo dejaría como un lindo ejercicio para el lector interesado. Sugerencia: considere la línea que pasa por los dos centros óptimos, y la dirección perpendicular a él.)kk=n/2

Si no le importa la solución exacta, entonces un enfoque más fácil sería usar un núcleo para la agrupación de medios . Esto daría lugar a puntos ponderados en este caso, con un peso total . Luego, solo necesita resolver el problema en el conjunto de puntos ponderados. La solución más fácil sería generar un conjunto de ubicaciones candidatas para los centros y probar todos los pares en los puntos ponderados. La construcción del núcleo y la generación de los centros candidatos se describen en este documento:kO(ϵ2logn)n

http://sarielhp.org/p/03/kcoreset/

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.