Content deleted Content added
Added kinetic tournament |
→Types of Trajectories: MOS:HEAD |
||
(10 intermediate revisions by 10 users not shown) | |||
Line 1:
{{Short description|Data structures used to track continuously moving geometric bodies}}
A '''kinetic data structure''' is a [[data structure]] used to track an attribute of a geometric system that is moving continuously.<ref>{{Citation▼
{{Use American English|date = April 2019}}
▲A '''kinetic data structure''' is a [[data structure]] used to track an attribute of a geometric system that is moving continuously.<ref name="JBasch">{{
</ref><ref name="LJGuibas">{{Citation |first=Leonidas J. |last=Guibas |author-link=Leonidas J. Guibas |contribution=Kinetic Data Structures |contribution-url=http://graphics.stanford.edu/projects/lgl/papers/g-KDS_DS-Handbook-04/g-KDS_DS-Handbook-04.pdf |title=Handbook of Data Structures and Applications |editor-first=Dinesh P. |editor-last=Mehta |editor2-first=Sartaj |editor2-last=Sahni |publisher=Chapman and Hall/CRC |isbn=978-1-58488-435-4 |pages=23-1–23-18 |year=2001}}
</ref><ref name="MAAbam">{{Cite thesis |last1=Abam |first1=Mohammad Ali |title=New Data Structures and Algorithms for Mobile Data |publisher=Eindhoven University of Technology |url=http://repository.tue.nl/630204 |year=2007}}
</ref><ref name="ZRahmati">{{Cite thesis |last1=Rahmati |first1=Zahed |title=Simple, Faster Kinetic Data Structures |publisher=University of Victoria |year=2014|hdl=1828/5627 }}</ref>
For example, a [[kinetic convex hull]] data structure maintains the convex hull of a group of <math>n</math> moving points. The development of kinetic data structures was motivated by [[computational geometry]] problems involving physical objects in continuous motion, such as collision or visibility detection in robotics, animation or computer graphics.
Line 21 ⟶ 11:
Kinetic data structures allow queries on a system at the current virtual time <math>t</math>, and two additional operations:
*'''<math>\textrm{advance}(t)</math>''': Advances the system to time <math>t</math>.
*'''<math>\textrm{change}(v,f(t))</math>''':
Additional operations may be supported. For example, kinetic data structures are often used with a set of points. In this case, the structure typically allows points to be inserted and deleted.
Line 42 ⟶ 32:
| editor3-last = Mason
| publisher = A K Peters/CRC Press
| isbn = 978-
| pages = 191–209
| year = 1998
Line 50 ⟶ 40:
# Compute the failure time of each certificate, the time when it will cease to be true.
# Store the certificates in a priority queue, keyed by their failure times
# To advance to time <math>t</math>, look at the certificate with the lowest failure time from the priority queue. If the certificate fails before time <math>t</math>, pop it from the queue and fix the data structure so it is accurate at the time of failure, and update the certificates. Repeat this until the certificate with the lowest failure time in the priority queue fails after time <math>t</math>. If the certificate with the lowest failure time in the priority queue fails after time <math>t</math>, then all certificates are true at time <math>t</math> so the data structure can correctly answer queries at time <math>t</math>.
===Types of events===
Line 56 ⟶ 46:
==Performance==
When using the certificates approach, there are four measures of performance. We say a quantity is small if it is a [[polylogarithmic function]] of <math>
===Responsiveness===
Responsiveness is the worst case amount of time required to fix the data structure and augmenting certificates when a certificate fails. A kinetic data structure is responsive if the worst case amount of time required for an update is small.
===Locality===
The maximum number of certificates any one value is involved in. For structures involving moving points, this is that maximum number of certificates any one point is involved in. A kinetic data structure is local if the maximum number of certificates any one value is involved with is small.
===Compactness===
The maximum number of certificates used to augment the data structure at any time. A kinetic data structure is compact if the number of certificates it uses is <math>O(n \
▲The maximum number of certificates used to augment the data structure at any time. A kinetic data structure is compact if the number of certificates it uses is <math>O(n \textrm{polylog} n)</math> or <math>O(n^{1+\epsilon})</math> for arbitrarily small <math>\epsilon</math>. (a small factor more than linear space)
===Efficiency===
The ratio of the worst case number of events that can occur when the structure is advanced to <math>t=\infty</math> to the worst case number of "necessary changes" to the data structure. The definition of "necessary changes" is problem dependent. For example, in the case of a kinetic data structure maintaining the kinetic hull of a set of moving points, the number of necessary changes would be the number of times the kinetic hull changes as time is advanced to <math>t=\infty</math>. A kinetic data structure is said to be efficient if this ratio is small.
==Types of
The performance of a certain kinetic data structure may be analyzed for certain types of trajectories. Typically, the following types of trajectories are considered:
*'''Affine''':(Linear functions) <math>f(t)=at+b</math>
Line 91 ⟶ 77:
== References ==
{{Reflist}}
<!--- Categories --->
[[Category:Kinetic data structures]]
|