La caja más pequeña alineada al eje que contiene

11

Entrada: Un conjunto de puntos en R 3 y un número entero k n .nR3kn

Salida: el cuadro delimitador alineado al eje del volumen más pequeño que contiene al menos de estos n puntos.kn

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.O(n5)O(n4)1O(n)

GMB
fuente
¿No podemos calcular una tabla de tamaño para el número de puntos p con p . x < x , pág . y < y , p . z < z ? Calcular el número de puntos y el volumen se puede hacer con un número constante de operaciones, y podemos usar programación dinámica con una tabla de tamaño k n 3 y deberíamos poder obtener un algoritmo O ( k n 3 ) . n3pp.x<x,p.y<y,p.z<zkn3O(kn3)
Kaveh
Okay. En este caso, que , realmente no puede esperar hacerlo mejor que n 5 . Porque, hay n 6 cuadros distintos, y al promediar el argumento (en un valor aleatorio de k) hay n 5 cuadros que contienen exactamente k puntos. A menos que pueda usar de alguna manera el volumen para reducir el espacio de búsqueda, pero eso de alguna manera parece optimista ...k=Θ(n)n5n6n5
Sariel Har-Peled
Por cierto, en su caso, puede obtener un cuadro que contiene de los puntos, y que es más pequeño que el cuadro óptimo que contiene k puntos en O ( ( ( n / k ) / ϵ 2 log n ) O ( 1 ) ) tiempo. Para k = Θ ( n ) esto es esencialmente un tiempo de polylog., ..(1ϵ)kkO(((n/k)/ϵ2logn)O(1))k=Θ(n)
Sariel Har-Peled

Respuestas:

11

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).nO(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/kn/kO((n/k)3)RO(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)3k6polylogn)=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(11/k)k61/k6=pO((1/p)logn)

Θ(n3)

O(n3log2n)

Sariel Har-Peled
fuente
k=Θ(n)O(n3k3)O(n6)k