Entrada: Un conjunto de puntos en R 3 y un número entero k ≤ n .
Salida: el cuadro delimitador alineado al eje del volumen más pequeño que contiene al menos de estos n puntos.
Me pregunto si se conocen algoritmos para este problema. Lo mejor que se me ocurrió fue el tiempo , más o menos de la siguiente manera: fuerza bruta sobre todos los límites superiores e inferiores posibles para dos de las tres dimensiones; para cada una de estas posibilidades O ( n 4 ) , podemos resolver la versión 1- dimensional correspondiente del problema en tiempo O ( n ) usando un algoritmo de ventana deslizante.
cg.comp-geom
GMB
fuente
fuente
Respuestas:
Para puntos hay O ( n 3 ) cuadros vacíos, vea la introducción de este documento http://www.cs.uwm.edu/faculty/ad/maximal.pdf . Uno puede calcular estos cuadros aproximadamente esta vez (ver introducción para referencias).n O(n3)
Para su problema, tome una muestra aleatoria de puntos, donde todos los puntos se seleccionan con capacidad almacenamiento de 1 / k . Tal muestra aleatoria tiene un tamaño (en expectativa) n / k [y en aras de la contradicción, suponga que es]. Hay O ( ( n / k ) 3 ) cajas vacías que tienen puntos de R en sus lados, por lo anterior. Para cada cuadro, utilice una estructura de datos de búsqueda de rango ortogonal para calcular cuántos puntos contiene exactamente. Repita este proceso O ( k 61/k n/k O((n/k)3) R O(k6logn) veces. Con alta probabilidad, uno de los cuadros que probó es el cuadro deseado.
En general, el tiempo de ejecución de esto es .O((n/k)3∗k6∗polylogn)=O(n3k3logO(1)n)
Para ver por qué esto funciona, considere la caja óptima. Tiene 6 puntos de P en su límite. La probabilidad de que la muestra aleatoria seleccione estos seis puntos y ninguno de los puntos dentro del cuadro sea al menos1k6(1−1/k)k−6≈1/k6=p O((1/p)logn)
fuente