Proceedings of the 19th ACM Symposium on Principles of Database Systems, 175-186, 2000.
We propose three indexing schemes for storing a set S of N points in the plane, each moving along a linear trajectory, so that a query of the following form can be answered quickly: Given a rectangle R and a real-valued "time stamp" t, report all points of S that lie inside R at time t. We first present a data structure that, for any given constant c > 0, uses O(N/B) disk blocks and answers a query in O((N/B)1/2+c + K/B) I/Os, where B is the size of a disk block and K is the number of reported points. It can also report all the points of S that lie inside R during a given time interval. A point can be inserted or deleted, or the trajectory of a point can be changed, in O(logB2 N) I/Os. Next, we present a general approach that improves the query time if the queries arrive in chronological order, by allowing the index to evolve over time. We obtain a tradeoff between the query time and the number of times the data structure needs to be updated as the points move. We also describe an indexing scheme in which the number of I/Os required to answer a query depends monotonically on the difference between the query's time stamp and the current time. Finally, we develop an efficient indexing scheme to answer approximate nearest-neighbor queries among moving points.