J'ai un ensemble de points qui sont définis dans un espace métrique - donc je peux mesurer une «distance» entre les points mais rien d'autre. Je veux trouver le point le plus central de cet ensemble, que je définis comme le point avec la somme minimale des distances à tous les autres points. Le calcul métrique est lent et doit donc être évité autant que possible.
La manière évidente de trouver ce point utilise calculs de distance métrique, car il (a) calcule simplement pour chaque point la somme des distances à tous les autres points, puis (b) prend le point minimum.
Existe-t-il un moyen de le faire dans des comparaisons de distance inférieures à ? (Utiliser probablement l'inégalité du triangle d'une manière ou d'une autre, ce qui devrait être le cas avec ma métrique.)
Une bonne approximation peut suffire s'il n'existe pas de méthode exacte.
la source
Réponses:
Non. Vous ne pouvez pas faire mieux que dans le pire des cas.Θ(n2)
Considérons un arrangement de points où chaque paire de points est à une distance de . (Il s'agit d'une configuration possible.) Ensuite, vous ne pouvez pas faire mieux que d'examiner chaque bord. En particulier, s'il y a un bord que vous n'avez pas examiné, un adversaire pourrait choisir la longueur de ce bord soit , ou1 0.9 1.0 1.1 ; tous ces choix sont cohérents avec toutes les autres observations que vous avez faites et avec les exigences d'une métrique (par exemple, avec l'inégalité du triangle), donc les trois sont possibles; mais ils nécessitent des sorties différentes. Ainsi, si votre algorithme n'examine pas ce bord et produit ensuite quelque chose, un adversaire peut toujours choisir une longueur pour le bord non examiné qui rendra la sortie de votre algorithme erronée.
Cependant, si vous savez que tous les points vivent dans (même si on ne vous donne pas leurs coordonnées), alors le problème peut être résolu en mesurant les distances O ( ( d + 1 ) n ) , en supposant aucune dégénérescence (aucun sous-ensemble de d + 1 points sont coplanaires).Rd O((d+1)n) d+1
En particulier, choisissez au hasard points. Ce seront des points d'ancrage. Compte tenu de leurs distances par paires, vous pouvez calculer pour elles des coordonnées cohérentes avec leurs distances par paires. Maintenant, pour chaque autre point P , calculez la distance de P à chacun des points d'ancrage. En utilisant la triangulation et ces distances, vous pouvez calculer l'emplacement de P par rapport aux points d'ancrage et donc les coordonnées pour P . Faites ceci pour chaque point non d'ancrage Pd+1 P P P P P . Vous avez maintenant des coordonnées pour chaque point, et vous pouvez utiliser ces coordonnées pour trouver le point central sans demander à l'oracle de vous donner des distances plus par paires. Je ne sais pas si cette dernière étape peut se faire plus rapidement que le temps , mais il peut être fait sans mesurer des distances plus de paires.O(n2)
la source
Découvrez les travaux de Piotr Indyk sur les algorithmes rapides pour les espaces métriques. ( Algorithmes sublinéaires pour les problèmes d'espace métrique , dans les actes du STOC '99 , pp.428–434. ACM, 1999; PS ) La section 3 donne un algorithme approximatif à 1 médiane en temps linéaire.
la source