Entrada: um conjunto de pontos em e um número inteiro .R 3 k ≤ n
Saída: a menor caixa delimitadora alinhada ao eixo de volume que contém pelo menos desses pontos.n
Gostaria de saber se algum algoritmo é conhecido por esse problema. O melhor que pude pensar foi no tempo , da seguinte maneira: força bruta sobre todos os limites superiores e inferiores possíveis para duas das três dimensões; para cada uma dessas possibilidades , podemos resolver a versão dimensional correspondente do problema em tempo usando um algoritmo de janela deslizante.O ( n 4 ) 1 O ( n )
cg.comp-geom
GMB
fonte
fonte
Respostas:
Para pontos, existem caixas vazias, consulte a introdução deste documento http://www.cs.uwm.edu/faculty/ad/maximal.pdf . Pode-se calcular essas caixas aproximadamente dessa vez (consulte a introdução para refs).O ( n 3 )n O(n3)
Para o seu problema, pegue uma amostra aleatória de pontos, onde cada ponto é escolhido com capacidade de . Uma amostra tão aleatória tem tamanho (na expectativa) [e, por uma questão de contradição, assuma que seja]. Existem caixas vazias com pontos de ao lado, acima. Para cada caixa, use um intervalo ortogonal pesquisando a estrutura de dados para calcular quantos pontos exatamente ela contém. Repita este processo vezes. Com alta probabilidade, uma das caixas que você tentou é a caixa desejada.n / k O ( ( n / k ) 3 ) R O ( k 6 log n )1/k n/k O((n/k)3) R O(k6logn)
No geral, o tempo de execução disso é .O((n/k)3∗k6∗polylogn)=O(n3k3logO(1)n)
Para ver por que esse trabalho, considere a caixa ideal. Tem 6 pontos de P no seu limite. A probabilidade de a amostra aleatória escolher esses seis pontos e nenhum dos pontos dentro da caixa ser pelo menos . Assim, se você repetir o processo vezes, com alta probabilidade, uma das amostras aleatórias induzirá a caixa desejada como uma caixa vazia.O((1/p)logn)1k6(1−1/k)k−6≈1/k6=p O((1/p)logn)
Como é restrito para o número de caixas vazias (consulte o artigo acima para obter referências relevantes), parece improvável que seja possível um algoritmo significativamente mais rápido.Θ(n3)
[Na ref que eu dei, eles mencionam que [17] fornece um algoritmo que enumera todas as caixas vazias máximas entre os pontos em 3d no tempo , que é a caixa preta que você precisa para os itens acima. .]O(n3log2n)
fonte