Temps d'exécution de l' algorithme d'approximation gourmand optimal

16

On nous donne un ensemble de points bidimensionnels et un entier . Nous devons trouver une collection de cercles qui entourent tous les points de sorte que le rayon du plus grand cercle soit aussi petit que possible. En d'autres termes, nous devons trouver un ensemble de points centraux tels que la fonction de coût est minimisé. Ici, désigne la distance euclidienne entre un point d'entrée et un point central . Chaque point s'assigne au centre de cluster le plus proche regroupant les sommets enk k n C = { c 1 , c 2 , , c k } k coût ( C ) = max i min j D ( p i , c j ) D p i c j k|P|=nkknC={c1,c2,,ck}kcost(C)=maximinjD(pi,cj)Dpicjk différents clusters.

Le problème est connu sous le nom de problème de clustering k (discret) ket il est NP -hard. On peut montrer avec une réduction du problème d'ensemble dominant dominant NP que s'il existe un algorithme d'approximation ρ pour le problème avec ρ<2 alors P=NP .

L' algorithme d'approximation optimal à est très simple et intuitif. On choisit tout d'abord un point arbitrairement et le place dans l'ensemble des centres de cluster. Ensuite, on choisit le centre de cluster suivant de manière à être aussi éloigné que possible de tous les autres centres de cluster. Alors alors que , on trouve à plusieurs reprises un point j \ dans P pour laquelle la distance D (j, C) est maximisée et l' ajouter à C . Une fois | C | = k nous avons terminé.2pPC|C|<kjPD(j,C)C|C|=k

Il n'est pas difficile de voir que l'algorithme gourmand optimal s'exécute en temps O(nk) . Cela soulève une question: pouvons-nous atteindre le temps o(nk) ? Que pouvons-nous faire de mieux?

Juho
la source

Réponses:

7

Le problème peut en effet être vu géométriquement d'une manière que nous aimerions couvrir les points V par k boules, où le rayon de la plus grosse boule est minimisé.

Θ ( n log k )O(nk) est en effet assez simple à réaliser mais on peut faire mieux. Feder et Greene, Optimal algorithms for approximate clustering, 1988 atteignent un temps d'exécution de utilisant des structures de données plus intelligentes et montrent en outre que cela est optimal dans le modèle d'arbre de décision algébrique.Θ(nlogk)

Juho
la source
1

Ma question: existe-t-il un moyen de faire fonctionner la stratégie de cueillette gourmande en temps ?o(|V|2)

Il me semble que vous l'avez décrit. Au cas où je lirais trop loin dans votre description, voici ce que j'ai compris. Disposer d' une structure de données associative à associer chaque élément de avec la somme de la distance par rapport à des éléments de S . Cette structure de données peut être initialisée à un coût O ( | V | ) avec la distance à p et cette initialisation peut produire l'élément suivant comme effet secondaire sans augmenter la complexité. Il peut être mis à jour après la sélection d'un nouvel élément au coût de O ( | V | ) , produisant à nouveau l'élément suivant comme effet secondaire. Répétez pour obtenir SVSO(|V|)pO(|V|)S. La complexité résultante est .O(k|V|)

AProgrammer
la source
1
Mais notez la limite sur : dans le pire des cas, elle peut être aussi grande que | V | . Je soupçonne qu'il existe des structures de données qui atteignent des limites encore meilleures, mais je ne sais vraiment pas. k|V|
Juho
Oups, et pas O dans votre question. (Notez que dans votre question, vous êtes de retour en k 3 , cela devrait donc être une amélioration). Ce que je propose n'utilise pas le fait que vous travaillez dans un espace euclidien, je pense que vous devrez l'utiliser pour faire mieux, mais actuellement je ne vois pas comment. oOk3
AProgrammer