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 casco convexo cinético mantiene el casco convexo de un grupo de puntos en movimiento. El desarrollo de estructuras de datos cinéticos fue motivado por problemas de geometría computacional que involucran objetos físicos en movimiento continuo, como colisiones o detección de visibilidad en robótica, animación o gráficos por computadora.
Las estructuras de datos cinéticos se utilizan en sistemas donde hay un conjunto de valores que cambian en función del tiempo, de forma conocida. Entonces el sistema tiene algunos valores y para cada valor se sabe que . Las estructuras de datos cinéticos permiten consultas sobre un sistema en el momento virtual actual y dos operaciones adicionales:
Es posible que se admitan operaciones adicionales. Por ejemplo, las estructuras de datos cinéticos se suelen utilizar con un conjunto de puntos. En este caso, la estructura normalmente permite insertar y eliminar puntos.
Una estructura de datos cinética permite que los valores almacenados en ella cambien continuamente con el tiempo. En principio, esto se puede aproximar muestreando la posición de los puntos a intervalos de tiempo fijos y eliminando y reinsertando cada punto en una estructura de datos "estática" (tradicional). Sin embargo, este enfoque es vulnerable a un sobremuestreo o un submuestreo, según el intervalo de tiempo utilizado, y también puede suponer un desperdicio de recursos computacionales.
Se puede utilizar el siguiente enfoque general para construir estructuras de datos cinéticos: [5]
Los errores de certificado se denominan "eventos". Un evento se considera interno si la propiedad mantenida por la estructura de datos cinética no cambia cuando ocurre el evento. Un evento se considera externo si la propiedad mantenida por la estructura de datos cambia cuando ocurre el evento.
Cuando se utiliza el enfoque de certificados, existen cuatro medidas de desempeño. Decimos que una cantidad es pequeña si es una función polilogarítmica de , o es arbitrariamente pequeña , donde es el número de objetos:
La capacidad de respuesta es la cantidad de tiempo necesaria, en el peor de los casos, para arreglar la estructura de datos y aumentar los certificados cuando falla un certificado. Una estructura de datos cinética responde si la cantidad de tiempo requerida para una actualización en el peor de los casos es pequeña.
El número máximo de certificados en los que está involucrado cualquier valor. Para estructuras que involucran puntos móviles, este es el número máximo de certificados en los que está involucrado cualquier punto. Una estructura de datos cinética es local si el número máximo de certificados en los que está involucrado cualquier valor es pequeño.
El número máximo de certificados utilizados para aumentar la estructura de datos en cualquier momento. Una estructura de datos cinética es compacta si el número de certificados que utiliza es arbitrariamente pequeño . (un pequeño factor más que el espacio lineal)
La relación entre el número de eventos en el peor de los casos que pueden ocurrir cuando la estructura avanza 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éticos que mantiene el casco cinético de un conjunto de puntos en movimiento, el número de cambios necesarios sería el número de veces que el casco cinético cambia a medida que avanza el tiempo . 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 se puede analizar para determinados tipos de trayectorias. Normalmente se consideran los siguientes tipos de trayectorias: