Kinetic minimum box

Kinetic minimum box is a kinetic data structure to maintain the minimum bounding box of a set of points whose positions change continuously with time. For points moving in a plane, the kinetic convex hull data structure can be used as a basis for a responsive, compact and efficient kinetic minimum box data structure.

2D case

The 2D kinetic minimum box builds on the 2D kinetic convex hull in a manner similar to the kinetic width data structure which maintains the pair of minimum-distance parallel lines that have the entire point set between them. In this case, since a box consists of two pairs of parallel lines (that are perpendicular to each other), analogy can be made with running two perpendicular kinetic width problems, and the data-structure needs to maintain sets of four points  two antipodal pairs which have perpendicular supporting lines.

In the dual view where a point (a, b) maps to a line y=ax+b, four envelopes (left, right, upper, lower) are computed. The range in x-values of a line segment in one of these envelopes corresponds to the range in the supporting slopes of the corresponding convex hull vertex in the primal view. Thus, an interval where the x-values of the four envelopes lists overlap (which can be obtained by merging the lists) corresponds, in the primal view, to a slope range where all lines parallel and perpendicular to the slopes support the same four convex hull vertices. The minimum box (in terms of area or perimeter) can be easily computed for each slope range and the four vertices thus supported, and then the global minimum box can be found by minimizing over these intervals. This algorithm can be kinetized by maintaining the convex hull in a kinetic convex hull data structure, the merge of the four envelope lists in a kinetic sorted list and the boxes in a kinetic priority queue.

Analysis

The responsiveness and compactness of this data structure follow from those of the kinetic convex hull, kinetic sorted list and kinetic priority queue data structures. This is also efficient since the number of combinatorially different minimum boxes for n points is [1] The existence of a local data structure for this problem is an open problem.

gollark: I'm apparently old enough to change my legal name here now.
gollark: Hmm, that's only 50MB then, seems fine.
gollark: Maybe this needs its own component in Rust for something something high performance.
gollark: I could use a bincode-type thing, chunk messages into groups of maybe a thousand each, and run them through zstandard compression, and then have a few uncompressed statistics, but I don't want ABR to store too much state in memory.
gollark: Maybe it should gather data per hour. Or I could try and actually design some extremely densely packed representation.

References

  1. Agarwal, Pankaj; Guibas, Leonidas J.; Hershberger, John; Eric Veach (1997). Maintaining the Extent of a Moving Point Set (PDF). SCG. ACM. Retrieved May 19, 2012.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.