Bisection d'un ensemble de points en deux sous-ensembles optimaux

9

Je veux diviser un ensemble de points en deux sous-ensembles de taille égale de sorte que la somme des carrés intra-cluster soit minimisée. Nous pouvons supposer que les points sont dans l'espace euclidien à deux dimensions. J'espère quelque chose de plus rapide qu'un algorithme de clustering k-means général étant donné que k = d = 2. Quelqu'un peut-il me diriger vers un bon algorithme pour cela?

Une solution exacte n'est pas nécessaire si nous avons une bonne approximation.

Merci!

Andrew Baker
la source

Réponses:

10

Si vous insistez sur une partition précise, vous devez calculer toutes les partitions équilibrées d'un ensemble de points dans le plan par une ligne (la partition optimale est une partition Voronoi, donc les deux ensembles de points sont séparés par une ligne). Ces partitions sont appelées -sets. L'algorithme le plus rapide actuellement connu pour ce travail en O ( n 4 / 3 log n ) pour le calcul de ces cloisons dans la double [ à savoir, le k -level d'un ensemble de n lignes, pour k = n / 2kO(n4/3logn)knk=n/2]. Une fois que vous avez toutes les partitions possibles, il vous suffit de vérifier chacune d'elles. En utilisant des astuces standard, cela peut être fait en temps constant pour chaque partition.

kk=n/2

kO(ϵ2logn)n

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

Sariel Har-Peled
la source