ArticleslgStudy

computer science

Kinetic data structure

Kinetic data structure is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Kinetic data structure rather than just read about it. In short: A kinetic data structure is a data structure used to track an attribute of a geometric system that is moving continuously. For example, a kinetic convex hull data structure maintains the convex hull of a group of n {\displaystyle n} moving points.

Key takeaways

  • Kinetic data structure belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Kinetic data structure to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Kinetic data structure from memory before moving on to harder problems.

Reference excerpt

A kinetic data structure is a data structure used to track an attribute of a geometric system that is moving continuously. For example, a kinetic convex hull data structure maintains the convex hull of a group of n {\displaystyle n} 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.

Overview Kinetic data structures are used on systems where there is a set of values that are changing as a function of time, in a known fashion. So the system has some values, and for each value v {\displaystyle v} , it is known that v = f ( t ) {\displaystyle v=f(t)} . Kinetic data structures allow queries on a system at the current virtual time t {\displaystyle t} , and two additional operations:

advance ( t ) {\displaystyle {\textrm {advance}}(t)} : Advances the system to time t {\displaystyle t} .

change ( v , f ( t ) ) {\displaystyle {\textrm {change}}(v,f(t))} : Alters the trajectory of value v {\displaystyle v} to f ( t ) {\displaystyle f(t)} , as of the current time. 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.

Contrast with traditional data structures A kinetic data structure allows the values stored in it to change continuously with time. In principle, this can be approximated by sampling the position of the points at fixed intervals of time, and deleting and re-inserting each point into a "static" (traditional) data structure. However, such an approach is vulnerable to oversampling or undersampling, depending on what interval of time is used, and can also be wasteful of computational resources.

Certificates approach The following general approach can be used to construct kinetic data structures:

Store a data structure on the system at the current time t {\displaystyle t} . This data structure allows queries on the system at the current virtual time. Augment the data structure with certificates. Certificates are conditions under which the data structure is accurate. The certificates are all true now, and the data structure will only cease to be accurate when one of the certificates is no longer true. 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 t {\displaystyle t} , look at the certificate with the lowest failure time from the priority queue. If the certificate fails before time t {\displaystyle t} , 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 t {\displaystyle t} . If the certificate with the lowest failure time in the priority queue fails after time t {\displaystyle t} , then all certificates are true at time t {\displaystyle t} so the data structure can correctly answer queries at time t {\displaystyle t} . The approach can be summarized in pseudocode as follows. The data structure D is valid at the current time now and is augmented with a priority queue Q of certificates keyed by failure time:

function advance(t): while Q is not empty and minFailureTime(Q) ≤ t: c := extractMin(Q) (the failing certificate) now := failureTime(c) repair D so it is accurate at time now remove invalidated certificates from Q compute failure times of the new certificates insert the new certificates into Q now := t (all certificates now hold at t)

function change(v, f): (trajectory change, as of time now) for each certificate c in Q involving v: recompute failureTime(c) and update its key in Q

The number of certificates involving any one value, which bounds the work performed by change, is the locality of the structure.

Types of events Certificate failures are referred to as "events". An event is considered internal if the property maintained by the kinetic data structure does not change when the event occurs. An event is considered external if the property maintained by the data structure changes when the event occurs.

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 n {\displaystyle n} , or is O ( n ϵ ) {\displaystyle O(n^{\epsilon })} for arbitrarily small ϵ {\displaystyle \epsilon } , where n {\displaystyle n} is the number of objects:

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.

… excerpt ends here. Continue reading the full article.

Worked examples

Example 1 — a first encounter with Kinetic data structure

Start with the simplest possible case. Write down what Kinetic data structure claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Kinetic data structure before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Kinetic data structure ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Kinetic data structure

In research
Kinetic data structure appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Kinetic data structure in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Kinetic data structure is common in secondary-school and first-year university syllabi. It links to neighbouring topics Kinetic data structures, so understanding it makes those chapters shorter.
In everyday life
Look for Kinetic data structure outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Kinetic data structure in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Kinetic data structure means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Kinetic data structure out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Kinetic data structure in simple terms?

A kinetic data structure is a data structure used to track an attribute of a geometric system that is moving continuously. For example, a kinetic convex hull data structure maintains the convex hull of a group of n {\displaystyle n} moving points.

Why does Kinetic data structure matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Kinetic data structure?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Kinetic data structure.

Tags

  • Kinetic data structures

Keep exploring