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 .
Respuestas:
"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)
fuente
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. Lat1 t2 t2≥t1
query(x)
operación descrita anteriormente corresponde a unafind-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 consultafind-min
( ), podemos preguntar ( t 2 ) solo si t 2 ≥ t 1 .find-min
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)
Los montones cinéticos más rápidos de Kaplan, Tarjan y Tsioutsiouliklis y su uso en la programación de transmisiones en SODA 2001
find-min
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".
fuente