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,∞) .

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(log⁡n)


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 2 ≥ t 1 .t1find-mint2t2≥t1

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(log⁡n)O(log2⁡n)

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(log⁡nlog⁡log⁡n)O(log⁡nlog⁡log⁡log⁡n)

O(log⁡n)

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".

Θ(log⁡n/log⁡log⁡n)O(log⁡nlog⁡log⁡n)O(log2⁡n)


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.