Sobre dinámico superior de líneas en el plano

8

Existen algoritmos sencillos para calcular la envoltura superior de una disposición de líneas en el plano. Ver, por ejemplo, la sección 2.3 en las secuencias Davenport-Schinzel de la encuesta y sus aplicaciones geométricas .

¿Existen algoritmos / estructuras de datos conocidos para la versión dinámica del mismo problema? Es decir, queremos mantener la envoltura superior de un conjunto de líneas en el plano bajo las siguientes operaciones:

  • insert ): agrega línea al conjunto(
  • eliminar : elimina la línea del conjunto()
  • consulta : devuelve la línea con la coordenada en el sobre superior. En otras palabras, devuelva la línea del conjunto que primero recibe un rayo vertical hacia abajo desde el punto(x)x(x,) .
Joe
fuente
66
Para las líneas, la dualidad punto-línea debería traducir esto a un problema sobre los cascos convexos dinámicos, que está bien estudiado.
alguien
2
@ Alguien gracias por tu útil comentario! Seguir esa línea de razonamiento rápidamente me llevó a la siguiente referencia, que analiza los montones paramétricos, que parecen ser las estructuras de datos que estoy buscando. madalgo.au.dk/~gerth/papers/focs02.pdf
Joe
3
Ver también citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.18.9174 y las referencias allí.
Joe
1
@ Joe: No estoy seguro acerca de la etiqueta, pero creo que debería responder y aceptarla, para ayudar a los futuros lectores de esta pregunta.
Max

Respuestas:

5

"alguien" tiene razón. El artículo de Timothy Chan "Operaciones planas dinámicas del casco convexo en tiempo amortizado casi logarítmico" parece resolver el problema con las inserciones / supresiones que toman tiempo amortizado y las consultas que toman tiempo O ( log n ) . Él resuelve su problema que es dual al problema del casco convexo.O(log1+ϵn) O(logn)

James King
fuente
1
Vaya, no importa. Parece que has encontrado un resultado más reciente que creo que supera esto.
James King el
3

La estructura de datos que estaba buscando se llama montón paramétrico . Es decir, un montón en el que cada tecla es una función lineal (una línea) en lugar de una tecla fija. La query(x)operación descrita anteriormente corresponde a una find-min(x)operación en un montón paramétrico. Hay una estructura de datos relacionada, llamada montón cinético , que es un montón paramétrico donde el parámetro, tiempo, solo avanza hacia adelante. En otras palabras, una vez que tenemos una consulta find-min( ), podemos preguntar ( t 2 ) solo si t 2t 1 .t1find-mint2t2t1

Como observó "alguien", el problema del montón paramétrico puede reducirse a un casco convexo plano dinámico mediante la dualidad de línea de punto.

La mayoría de los documentos que resuelven este problema utilizan una estructura de datos semidinámica "solo eliminaciones", y luego usan una técnica de dinamización de Bentley y Saxe para transformar su estructura de datos para también admitir inserciones. ( JL Bentley y JB Saxe, Problemas de búsqueda descomponibles. I: transformación de estático a dinámico ). Consulte también las notas de la conferencia de J ffeϵ para obtener una descripción general de cómo funciona este tipo de transformación.

El resultado clásico en esta área se debe a Overmars y van Leeuwen, Mantenimiento de configuraciones en el plano , que logra tiempo de consulta y O ( log 2 n ) (peor caso) tiempo de actualización. Si quisiéramos implementar una solución a este problema, esta es la versión adecuada.O(logn)O(log2n)

Sin embargo, posteriormente ha habido varias mejoras teóricas al resultado clásico. En FOCS 99, el papel de Chan

dio una estructura de datos con tiempo amortizado para las actualizaciones.O(log1+ϵn)

O(lognloglogn)O(lognlogloglogn)

O(logn)

Recientemente, Chan dio otros resultados relacionados con consultas dinámicas planas de casco convexo, incluyendo "Una estructura de datos completamente dinámica para mantener un conjunto de n puntos en el plano para que podamos encontrar los bordes del casco convexo que intersecan una línea de consulta".

Θ(logn/loglogn)O(lognloglogn)O(log2n)

Joe
fuente
3
Oh. No. Todos estos resultados son muy complicados. El documento original de Overmars / Van Leuven (ver en.wikipedia.org/wiki/Dynamic_convex_hull ) sigue siendo una joya y se puede implementar fácilmente. Es log ^ 2 para algunas operaciones. Pero es el peor de los casos.
Sariel Har-Peled
1
¿Pensé que la tesis de Riko Jacob tenía una versión completa de la prueba? Pero estoy de acuerdo con Sariel en que debes apegarte a Overmars / Van Leuven
Suresh Venkat el
@SureshVenkat ¿Por qué debería apegarme a Overmars / Van Leuven?
Joe
Supongo que depende de para qué necesites el algoritmo.
Suresh Venkat
En un ram de palabras, podemos obtener un tiempo de consulta aún más rápido: people.csail.mit.edu/mip/papers/dynhull/paper.pdf
Joe