Una estructura de datos cinética es una estructura de datos que se utiliza para rastrear un atributo de un sistema geométrico que se mueve continuamente. [1] [2] [3] [4] Por ejemplo, una estructura de datos de envoltura convexa cinética mantiene la envoltura convexa de un grupo de puntos en movimiento. El desarrollo de estructuras de datos cinéticas estuvo motivado por problemas de geometría computacional que involucraban objetos físicos en movimiento continuo, como la detección de colisiones o visibilidad en robótica, animación o gráficos por computadora.
Las estructuras de datos cinéticas se utilizan en sistemas en los que hay un conjunto de valores que cambian en función del tiempo, de una manera conocida. Por lo tanto, el sistema tiene algunos valores y, para cada valor , se sabe que . Las estructuras de datos cinéticas permiten realizar consultas sobre un sistema en el tiempo virtual actual y dos operaciones adicionales:
Se pueden admitir operaciones adicionales. Por ejemplo, las estructuras de datos cinéticos se utilizan a menudo con un conjunto de puntos. En este caso, la estructura suele permitir la inserción y eliminación de puntos.
Una estructura de datos cinética permite que los valores almacenados en ella cambien continuamente con el tiempo. En principio, esto se puede lograr tomando muestras de la posición de los puntos a intervalos fijos de tiempo y eliminando y reinsertando cada punto en una estructura de datos "estática" (tradicional). Sin embargo, este enfoque es vulnerable al sobremuestreo o submuestreo, según el intervalo de tiempo que se utilice, y también puede desperdiciar recursos computacionales.
Se puede utilizar el siguiente enfoque general para construir estructuras de datos cinéticos: [5]
Los fallos de los certificados se denominan "eventos". Un evento se considera interno si la propiedad que mantiene la estructura de datos cinéticos no cambia cuando se produce el evento. Un evento se considera externo si la propiedad que mantiene la estructura de datos cambia cuando se produce el evento.
Cuando se utiliza el método de los certificados, hay cuatro medidas de rendimiento. Decimos que una cantidad es pequeña si es una función polilogarítmica de , o es para un número arbitrariamente pequeño de , donde es el número de objetos:
La capacidad de respuesta es el tiempo que se requiere en el peor de los casos para reparar la estructura de datos y ampliar los certificados cuando falla un certificado. Una estructura de datos cinética responde si el tiempo que se requiere en el peor de los casos para una actualización es pequeño.
La cantidad máxima de certificados en los que participa un valor determinado. Para las estructuras que involucran puntos en movimiento, esta es la cantidad máxima de certificados en los que participa un punto determinado. Una estructura de datos cinética es local si la cantidad máxima de certificados en los que participa un valor determinado es pequeña.
La cantidad máxima de certificados que se utilizan para aumentar la estructura de datos en cualquier momento. Una estructura de datos cinética es compacta si la cantidad de certificados que utiliza es o para un número arbitrariamente pequeño (un factor pequeño mayor que el espacio lineal).
La relación entre el número de eventos en el peor de los casos que pueden ocurrir cuando se avanza en la estructura y el número de "cambios necesarios" en el peor de los casos en la estructura de datos. La definición de "cambios necesarios" depende del problema. Por ejemplo, en el caso de una estructura de datos cinética que mantiene la envoltura cinética de un conjunto de puntos en movimiento, la cantidad de cambios necesarios sería la cantidad de veces que cambia la envoltura cinética a medida que avanza el tiempo hasta . Se dice que una estructura de datos cinética es eficiente si esta relación es pequeña.
El rendimiento de una determinada estructura de datos cinéticos puede analizarse para determinados tipos de trayectorias. Normalmente, se consideran los siguientes tipos de trayectorias: