Eu tenho um conjunto de pontos que são definidos em um espaço métrico - para que eu possa medir uma 'distância' entre pontos, mas nada mais. Quero encontrar o ponto mais central desse conjunto, que defino como o ponto com a soma mínima de distâncias para todos os outros pontos. O cálculo da métrica é lento e, portanto, deve ser evitado sempre que possível.
A maneira óbvia de encontrar esse ponto usa cálculos de distância métrica, pois simplesmente (a) calcula para cada ponto a soma das distâncias para todos os outros pontos e, em seguida, (b) assume o ponto mínimo.
Existe uma maneira de fazer isso em comparações de distância menor que ? (Provavelmente fazendo uso da desigualdade do triângulo de alguma forma, o que deve se aplicar à minha métrica.)
Uma boa aproximação pode ser suficiente se um método exato não existir.
fonte
Respostas:
Não. Você não pode fazer melhor que no pior caso.Θ ( n2)
Considere um arranjo de pontos em que cada par de pontos esteja à distância um do outro. (Essa é uma configuração possível.) Então você não pode fazer melhor do que examinar todas as arestas. Em particular, se houver alguma aresta que você não examinou, um adversário poderá escolher o comprimento dessa aresta para 0,9 , 1,0 ou 1,1 ; todas essas escolhas são consistentes com todas as outras observações que você fez e com os requisitos de uma métrica (por exemplo, com a desigualdade do triângulo), portanto, todas as três são possíveis; mas eles exigem saídas diferentes. Portanto, se o seu algoritmo não examinar essa aresta e emitir alguma coisa, um adversário sempre poderá escolher um comprimento para a aresta não examinada que fará com que a saída do seu algoritmo esteja errada.1 1 0,9 1.0 1.1
No entanto, se você souber que todos os pontos vivem em (mesmo que você não tenha suas coordenadas), o problema pode ser resolvido medindo-se as distâncias O ( ( d + 1 ) n ) , assumindo que não há degenerescências (nenhum subconjunto de d + 1 pontos são co-planares).Rd O ( ( d+1)n) d+1
Em particular, escolha pontos aleatoriamente. Estes serão pontos de ancoragem. Dadas as distâncias aos pares, é possível calcular coordenadas para elas que sejam consistentes com as distâncias aos pares. Agora, para todos os outros pontos P , calcule a distância de P a cada um dos pontos de ancoragem. Usando triangulação e estas distâncias, você pode calcular a localização de P em relação aos pontos de ancoragem e, portanto, as coordenadas para P . Faça isso para cada ponto não-âncora Pd+1 P P P P P . Agora você tem coordenadas para cada ponto e pode usá-las para encontrar o ponto central sem pedir ao oráculo que lhe forneça mais distâncias aos pares. Eu não sei se este último passo pode ser feito mais rápido do que tempo , mas isso pode ser feito sem medir nenhum mais distâncias de pares.O(n2)
fonte
Confira o trabalho de Piotr Indyk sobre algoritmos rápidos para espaços métricos. ( Algoritmos subliminares para problemas de espaço métrico , em Proceedings of STOC '99 , pp.428-434. ACM, 1999; PS ) A seção 3 fornece um algoritmo de 1 mediana aproximada em tempo linear.
fonte