Kinetische Datenstrukturen

Werbung
Universität Paderborn, Fakultät für Elektrotechnik, Informatik und Mathematik
Kinetische Datenstrukturen
Eine Ausarbeitung
im Rahmen des Seminars zur Projektgruppe
Peer-to-peer-Netzwerke für dynamische 3D-Szenen
von Dietrich Travkin
27. November 2003
INHALTSVERZEICHNIS
Dietrich Travkin
Inhaltsverzeichnis
1 Einführung
1
2 Konzepte kinetischer Datenstrukturen
2.1 Ereignisbasiertes Bewegungsmodell . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Beweise und Zertifikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Flugpläne und Flugplan-Updates . . . . . . . . . . . . . . . . . . . . . . . . .
1
2
3
4
3 Beispiele für kinetische Datenstrukturen
3.1 Analysekriterien für kinetische Datenstrukturen . . . . . . . . . . . . . . . . .
3.2 Datenstrukturen für ein einfaches Maximum-Problem . . . . . . . . . . . . .
5
5
6
4 Anwendbarkeit
4.1 Anwendungsgebiete für kinetische Datenstrukturen . . . . . . . . . . . . . . .
4.2 Anwendbarkeit in der Projektgruppe . . . . . . . . . . . . . . . . . . . . . . .
10
10
11
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
i
2. Konzepte kinetischer Datenstrukturen
1
Dietrich Travkin
Einführung
In [1] und [2] wurde ein allgemeines Verfahren vorgestellt, welches beschreibt, wie Datenstrukturen und Algorithmen entwickelt werden können, die es ermöglichen, die Lösungsmenge zu
einem bestimmten Problem trotz der sich verändernden Daten aufrecht zu erhalten bzw. online zu aktualisieren. Dabei ist das Problem von der Art, dass die Lösungsmenge von n sich
kontinuierlich verändernden Objekten gleicher (oder ähnlicher) Art abhängt.
Anders als bei den klassischen dynamischen Datenstrukturen, die eine Lösungsmenge nach
dem Einfügen bzw. Entfernen von zu betrachtenden Objekten aktualisieren, konzentriert sich
dieses Verfahren hauptsächlich auf die kontinuierliche Veränderung der Objektdaten, es ist
aber auch eine Kombination der beiden Konzepte möglich. Um diese zu unterscheiden, werden
die in [1] und [2] vorgestellten Datenstrukturen und Algorithmen kinetische Datenstrukturen
(kurz KDS) genannt. In [1] wurden mehrere solcher Datenstrukturen – insbesondere geeignet
für Simulationen – kurz vorgestellt. Diese behandeln meist geometrische Probleme mit n sich
kontinuierlich bewegenden Objekten. Als Lösungsmenge kann dabei z.B. die konvexe Hülle
oder ein minimaler Spannbaum der Objekte auftreten. Während die Bewegung der Objekte
simuliert wird, ist es die Aufgabe der KDS, zu jedem Zeitpunkt die aktuelle Lösungsmenge
– also in diesem Fall eine konvexe Hülle bzw. einen minimalen Spannbaum – angeben zu
können.
Meist entstehen kinetische Datenstrukturen aus bereits bekannten und in der algorithmischen Geometrie gut erforschten statischen Algorithmen. Für statische (sich nicht bewegende)
Objekte gibt es bereits effiziente Algorithmen zur Berechnung geometrischer Strukturen wie
konvexer Hüllen und minimaler Spannbäume. Das oben erwähnte Verfahren gibt an, wie ein
solcher Algorithmus an die veränderte Situation, nämlich an die sich kontinuierlich bewegenden Objekte, angepasst werden kann.
In dieser Arbeit sollen die grundlegenden Konzepte der kinetischen Datenstrukturen vorgestellt und an einigen einfachen Beispielen illustriert werden. Es werden die Anwendungsgebiete für kinetische Datenstrukturen beleuchtet und grob auf die Verwendung in der Projektgruppe Peer-to-peer-Netzwerke für dynamische 3D-Szenen hin geprüft.
2
Konzepte kinetischer Datenstrukturen
Die von einer KDS zu verwaltenden Informationen (Lösungsmenge), in dem obigen Beispiel
also die konvexe Hülle oder ein minimaler Spannbaum, werden von den Autoren in [1] und [2]
als Konfigurationsfunktion bezeichnet. Diese hat eine kombinatorische Beschreibung, welche
gerade die geometrische Struktur ist, an der man interessiert ist. Als Konfigurationsfunktion können außer den minimalen Spannbäumen und konvexen Hüllen auch BSP-Bäume,
Closest Pairs, minimale Spannkreise usw. auftreten. Die geometrische Struktur ist in diesen
Fällen ein Graph bzw. ein Objektpaar. Zu beachten ist, dass sich diese nur zu bestimmten Zeitpunkten (diskret) ändert, während sich andere Daten wie die Kostenfunktionen (bei
minimalen Spannbäumen die Kantengewichtsfunktion, bei Closest Pairs die Entfernungen
zwischen je zwei Objekten) kontinuierlich in Abhängigkeit von Zeit ändern, wenn sich die
Objekte bewegen. Zum besseren Verständnis wird die Konfigurationsfunktion im Folgenden
als Lösungsmenge und ihre kombinatorische Beschreibung als geometrische Struktur bezeichnet, denn die hier erwähnten kinetischen Datenstrukturen behandeln fast ausschließlich geometrische Probleme.
Während einer Simulation werden die Zeitpunkte, an denen sich die geometrische Struktur
der Lösungsmenge ändert, als Ereignisse in einer chronologisch geordneten Prioritätswarteschlange verwaltet. Bei der konvexen Hülle sind diese Ereignisse genau die Zeitpunkte, an
denen ein drittes Objekt ein Segment der konvexen Hülle erreicht, denn kurz darauf kann
dieses Objekt zur konvexen Hülle hinzukommen, wodurch sich diese ändert (Abb. 1). Die
Zeitpunkte für die Ereignisse werden von der KDS mit Hilfe von Bewegungsinformationen
der Objekte errechnet. Die Bewegungsinformationen werden in Form von so genannten Flugplänen bekannt gegeben. Sie beschreiben die Bewegungsbahnen der Objekte in naher Zukunft.
Außerdem wird die Korrektheit der von der KDS errechneten Daten zur Laufzeit aufrechterhalten und zwar von der KDS selbst mit Hilfe von mehreren Bedingungen. Diese Bedingungen
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
1
2. Konzepte kinetischer Datenstrukturen
Dietrich Travkin
werden Zertifikate genannt und implizieren die Korrektheit der errechneten geometrischen
Struktur der Lösungsmenge. Bei der Berechnung der konvexen Hülle belegen die Zertifikate
gerade, dass alle nicht auf der konvexen Hülle liegenden Objekte innerhalb der konvexen
Hülle liegen. Die Menge dieser Zertifikate wird in [1] Korrektheitsbeweis genannt. Solange
alle Zertifikate gültig sind, ändert sich auch die geometrische Struktur der Lösungsmenge
nicht. Sobald ein Ereignis auftritt, muss die KDS die Zertifikate auf Gültigkeit überprüfen.
Die ungültigen Zertifikate müssen von der KDS durch neue ersetzt und die Lösungsmenge
evtl. angepasst werden.
Abbildung 1: Ein Objekt erreicht ein Segment der konvexen Hülle (zweites Teilbild). Das wird von
der KDS als Ereignis behandelt. Später wird dieses Objekt zu einem neuen Element der konvexen
Hülle (drittes Teilbild).
Im Folgenden werden kinetische Datenstrukturen genauer beschrieben und es werden die
grundlegenden Konzepte vorgestellt.
2.1
Ereignisbasiertes Bewegungsmodell
Die kontinuierliche Bewegung von Objekten kann zu Simulationszwecken approximiert werden, indem die Simulationszeit in kleine Intervalle fester Länge unterteilt und die Bewegung
nur an den Intervallübergängen simuliert wird. Bei jedem Übergang von einem Intervall zum
nächsten werden die Objekte von ihrer aktuellen Position entfernt und an ihrer neuen Position wieder eingefügt. Wenn die Zeitintervalle klein genug gewählt sind, entsteht auf diese
Weise der Eindruck einer kontinuierlichen gleichmäßigen Bewegung.
Dieses Verfahren hat allerdings einen großen Nachteil und zwar sind die gewählten Zeitintervalle immer entweder zu kurz oder zu lang: Wenn die Objekte sich nur sehr langsam
bewegen, ändern sich ihre ebenfalls diskretisierten Positionen nicht bei jedem Übergang zum
nächsten Zeitintervall. Dadurch werden unnötige Berechnungen gemacht und damit Ressourcen verschwendet. In diesem Fall sind die Zeitintervalle zu kurz. Bewegen sich die simulierten
Objekte sehr schnell, so werden ihre Positionen zu selten neu berechnet und es können wichtige Informationen wie Kollisionen und damit verbundene Bewegungsänderungen verloren
gehen. Das hat eine inkorrekte Simulation zur Folge. In diesem Fall sind die Zeitintervalle zu
lang.
Da die relevanten (kritischen) Ereignisse (diese verändern die geometrische Struktur der
Lösungsmenge) gewöhnlicherweise in sehr unregelmäßigen Zeitabständen auftreten, ist es
unmöglich eine passende, feste Länge der Zeitintervalle für die Simulation zu bestimmen.
Ein Ausweg ist die ereignisbasierte Simulation. In dieser werden die relevanten Ereignisse und die dazu gehörenden berechneten Zeitpunkte ihres Auftretens in einer Prioritätswarteschlange verwaltet. Dabei gibt der Zeitpunkt, an dem ein Ereignis auftreten wird, die
Priorität an, d.h. die Ereignisse sind in der Warteschlange chronologisch sortiert. Sie werden nacheinander aus der Warteschlange entfernt, bearbeitet und simuliert. Aufgrund der
dadurch eventuell neu entstandenen Informationen können neue Ereignisse entstehen, die in
die Schlange eingeordnet werden. Es kann auch vorkommen, dass alte Ereignisse überflüssig
werden und deshalb aus der Warteschlange entfernt werden. Auf diese Weise werden nur
dann Berechnungen gemacht, wenn diese auch benötigt werden und es werden alle relevanten
Ereignisse behandelt. Die Korrektheit der Simulation ist dann gewährleistet.
Die kritischen Ereignisse sind genau die Zeitpunkte, an denen sich die geometrische Struktur der Lösungsmenge (allgemeiner: kombinatorische Beschreibung der KonfigurationsfunkEine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
2
2. Konzepte kinetischer Datenstrukturen
Dietrich Travkin
tion) ändert. Angenommen, die betrachtete Lösungsmenge ist ein Closest Pair. Die Entfernung (das ist die Kostenfunktion) soll durch die euklidische Entfernung der Objekte zueinander beschrieben sein. Diese ändert sich kontinuierlich mit der Bewegung der Objekte.
Die geometrische Struktur der Lösungsmenge ist hier ein Paar von Objekten mit geringstem Abstand zueinander (meist gibt es nur ein solches Paar). Die geometrische Struktur
der Lösungsmenge ändert sich nicht, solange es keine zwei Objekte gibt, die näher zusammen sind, als das bisher betrachtete Paar. Nur die Entfernungen aller Objekte zueinander
ändern sich. Der kritische Zeitpunkt ist erreicht, sobald es ein weiteres Paar mit dem gleichem
Abstand gibt, wie beim Closest Pair. Das ist der Zeitpunkt, an dem sich die geometrische
Struktur der Lösungsmenge ändert, nämlich wird (kurz darauf) das aktuelle Closest Pair
durch ein neues Paar ersetzt.
In den meisten Fällen sind die kritischen Ereignisse nur schwer allein zu behandeln. Deswegen wird bei den kinetischen Datenstrukturen eine möglichst kleine Obermenge dieser Ereignisse gewählt, die leichter zu handhaben ist. Um die kritischen Ereignisse von den anderen
zu unterscheiden, werden die kritischen Ereignisse extern und alle anderen intern genannt.
Die externen Ereignisse ändern die Lösungsmenge, deswegen darf keines dieser Ereignisse
unbeachtet bleiben. Nur so kann die Korrektheit der Simulation gewährleistet werden. Die
internen Ereignisse ändern die Lösungsmenge nicht, werden aber von der kinetischen Datenstruktur benötigt.
Angenommen, man ist an dem höchsten von n sich entlang der y-Achse kontinuierlich
bewegenden Punkte interessiert und hat eine KDS, die eine bzgl. der y-Werte geordnete
Liste der Punkte verwaltet (dieses Beispiel wird als KDS 1 in Abschnitt 3.2 noch genauer
behandelt). Dann sind die externen Ereignisse nur diejenigen, bei denen die obersten zwei
Punkte in der Liste ihre Ordnung wechseln (dann gibt es einen neuen höchsten Punkt).
Damit die Liste aber ihre Ordnung behält, werden von der KDS alle Ereignisse behandelt,
bei denen zwei beliebige in der Liste untereinander liegende Punkte ihre Ordnung wechseln
(siehe Abb. 2). Die internen Ereignisse sind hier offensichtlich für die KDS hilfreich.
Abbildung 2: Die Punkte a, b, c und d bewegen sich mit konstanter Geschwindigkeit entlang der
y-Achse. Die KDS verwaltet eine bzgl. der y-Werte geordnete Liste der Punkte. Jede Änderung der
Ordnung in der Liste wird von der KDS als Ereignis behandelt. Da man sich nur für das Maximum
interessiert, sind nur die Ereignisse extern, die das Maximum ändern.
2.2
Beweise und Zertifikate
Eine kinetische Datenstruktur verwendet einen sich mit der Simulationszeit verändernden
Korrektheitsbeweis, der die Richtigkeit der aktuellen geometrischen Struktur der Lösungsmenge impliziert. So ein Beweis besteht aus mehreren elementaren Bedingungen zu den Bewegungsdaten, die von der KDS zur Laufzeit überprüft werden. Diese Bedingungen werden
Zertifikate genannt und sind meist schlicht algebraische Ungleichungen. Jedes Zertifikat hat
einen frühesten Zeitpunkt, an dem es ungültig werden kann (failure time). Dieser Zeitpunkt
wird als Ereignis in die Ereigniswarteschlange (event queue) eingetragen.
Solange kein Zertifikat ungültig wird, kann sich die geometrische Struktur der Lösungs-
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
3
2. Konzepte kinetischer Datenstrukturen
Dietrich Travkin
menge nicht ändern. Wird aber ein Zertifikat ungültig, dann ist es die Aufgabe der kinetischen
Datenstruktur, die aktuelle geometrische Struktur der Lösungsmenge zu überprüfen, gegebenenfalls den Korrektheitsbeweis durch ändern der Zertifikatmenge zu reparieren und zu
aktualisieren. Es ist möglich, dass die Zertifikatmenge, also der Beweis, aktualisiert werden
muss, obwohl sich die geometrische Struktur der Lösungsmenge nicht ändert, in diesem Fall
wurde das Zertifikat bei einem internen Ereignis ungültig. Bei einem externen Ereignis ändert
sich die geometrische Struktur der Lösungsmenge und es muss auch die Zertifikatmenge aktualisiert werden.
Ziel ist es, eine Zertifikatmenge zu finden, die es möglich macht, den Korrektheitsbeweis
nach dem Ungültigwerden eines Zertifikats mit möglichst geringen Kosten zu reparieren.
Idealerweise hilft die Zertifikatmenge bei einem externen Ereignis auch, die geometrische
Struktur der Lösungsmenge zu aktualisieren.
Die Korrektheitsbeweise und Zertifikate sind eher theoretische Größen und tauchen bei
den kinetischen Datenstrukturen meist nur implizit auf, was in den Beispielen noch deutlicher
wird. Insbesondere wird bei der KDS 3 in Abschnitt 3.2 erklärt, wie ein Korrektheitsbeweis
aufgebaut werden kann bzw. welche Bedingungen sich als Zertifikate eignen.
2.3
Flugpläne und Flugplan-Updates
Die kinetische Datenstruktur muss unter anderem aufgrund der ihr zur Verfügung stehenden Informationen die Zeitpunkte für neue Ereignisse berechnen und die gegebenenfalls zu
entfernenden Ereignisse in der Warteschlange finden. Die zur Verfügung stehenden Informationen sind Positionsdaten, Bewegungskonstanten und -attribute, die aktuelle geometrische
Struktur der Lösungsmenge, die aktuelle Zertifikatmenge (Korrektheitsbeweis), die Ereigniswarteschlange und im einfachsten Fall auch die veröffentlichten vollständigen Flugpläne zu
jedem Objekt.
Der Flugplan eines Objekts beschreibt seine Bewegung in naher Zukunft. Typischerweise
sind die Flugpläne polynomielle oder rationale Bewegungsbahnen. Die Flugpläne können sich
während der Simulation ändern, z.B. aufgrund einer Kollision oder Interaktion mit einem
anderen Objekt oder der Umgebung. Es ist sogar möglich, dass ein Objekt seinen Flugplan
ohne einen ersichtlichen Grund ändert, z.B. bei zufälligen Bewegungen oder wenn dieses
Objekt von einem Menschen gesteuert wird.
Abbildung 3: Die Punkte a, b und c bewe-
Abbildung 4: Beim Simulieren des Ereignisses
e1 gibt es eine Flugplanänderung der Punkte a
und b. Weil a keine Kollision mehr mit c haben
wird, ist das Ereignis e2 in Abb. 3 ungültig und
wird entfernt. Stattdessen kommt das neue Ereignis e3 in die Ereigniswarteschlange.
gen sich mit konstanter Geschwindigkeit entlang der y-Achse. Die KDS verwaltet alle Kollisionen der Punkte. Hier sieht man die zum
Zeitpunkt t0 bekannten (vorher berechneten)
Ereignisse e1 und e2 .
Die kinetische Datenstruktur muss über alle Flugplanänderungen informiert werden. Dazu
müssen alle Ereignisse, die eine Flugplanänderung bewirken, bevor sie simuliert werden in
die Ereigniswarteschlange eingetragen werden. Ändert sich der Flugplan eines Objektes, so
müssen für alle Zertifikate, in die das Objekt verwickelt ist, die Zeitpunkte neu berechnet
werden, an denen sie ungültig werden und die Position der entsprechenden Ereignisse in
der Warteschlange muss aktualisiert werden. Wenn in einem bestimmten Zeitintervall die
Flugpläne zu jedem Objekt bekannt sind und diese sich nicht ändern, so kann zu jedem
zurzeit gültigen Zertifikat der Zeitpunkt berechnet werden, an dem es ungültig wird.
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
4
3. Beispiele für kinetische Datenstrukturen
3
Dietrich Travkin
Beispiele für kinetische Datenstrukturen
In diesem Abschnitt werden drei kinetische Datenstrukturen vorgestellt. Auf diese Weise sollen die kinetischen Datenstrukturen illustriert und die im vorherigen Abschnitt vorgestellten
Konzepte in der Praxis vorgestellt werden. Um die Algorithmen besser miteinander vergleichen zu können, werden zuvor vier Analysekriterien vorgestellt.
Für die Beispiele in diesem Abschnitt werden starke Einschränkungen bzgl. der Problemstellung gemacht. Es wird davon ausgegangen, dass alle Flugpläne vollständig vorhanden sind
und jede Flugplanänderung als Ereignis in der Warteschlange behandelt wird. Außerdem wird
vorausgesetzt, dass alle Flugpläne eine feste Komplexität haben, unabhängig von der Anzahl der simulierten Objekte. Das schließt bestimmte Arten von Simulationen wie klassische
n-Körper-Simulationen aus (weil jeder Körper die Flugbahn jedes anderen Körpers durch
Anziehung oder Abstoßen beeinflusst und damit die Flugbahn jedes einzelnen Objektes von
O(n) Körpern abhängt).
3.1
Analysekriterien für kinetische Datenstrukturen
Um die Analyse zu vereinfachen, wird vorausgesetzt, dass es keine Flugplanänderungen außer
beim Aufbauen der kinetischen Datenstruktur gibt. Um die Komplexität der Schnitte zwischen Bewegungsbahnen einzuschränken, soll zusätzlich gelten, dass alle Bewegungsbahnen
pseudo-algebraische Splines – wie sie in [1] und [2] genannt werden – sind, d.h. jede Bewegungsbahn besteht aus einer Menge von zusammengesetzten Kurven (beschrieben durch
Polynome kleiner Ordnung, meist ≤ 3) und die Übergänge von einer Kurve zur nächsten
sind Flugplan-Updates (siehe Abb. 5). Die Kurven sind dabei pseudo-algebraisch bzgl. der
kinetischen Datenstruktur, d.h., dass alle Zertifikate in der kinetischen Datenstruktur für
einen beliebigen den Kurven folgenden Weg nur begrenzt oft den Zustand zwischen gültig
und ungültig wechseln können. Diese Bedingung wird dazu benutzt, die Anzahl möglicher
Schnitte zwischen Bewegungsbahnen einzuschränken.
Abbildung 5: Hier ist die Bewegungsbahn eines Objekts in Form von mehreren Splines in Rot
dargestellt. In Grün sind die Flugplan-Updates gekennzeichnet.
Zur Vereinfachung wird eine Menge klein genannt, wenn ihre Ordnung O(polylog(n)) oder
O(nε ) für ein beliebig kleines ε > 0 ist.
Ansprechbarkeit (responsiveness)
Die Ansprechbarkeit beschreibt die Laufzeit, die im Worst Case benötigt wird, um den Korrektheitsbeweis nach dem Scheitern eines Zertifikats zu aktualisieren. Dazu gehört das Prüfen,
ob die geometrische Struktur der Lösungsmenge sich geändert hat, falls ja, muss diese aktualisiert werden. Es müssen evtl. neue Zertifikate erzeugt und/oder alte entfernt werden. Die
Ereigniswarteschlange muss aktualisiert werden. Ist diese Laufzeit klein (im eben definierten
Sinne), so ist die entsprechende kinetische Datenstruktur ansprechbar.
Effizienz (efficiency)
Die Effizienz beschreibt die Eigenschaft, dass die Anzahl der während der gesamten Simulation behandelten Ereignisse im Verhältnis zu der Anzahl der externen Ereignisse klein ist. Es
wird zwischen schwacher Effizienz und starker Effizienz unterschieden, die Beispiele in dieser
Arbeit sind aber bestenfalls schwach effizient.
Schwache Effizienz (weak efficiency) beschreibt, dass der Quotient aus der Anzahl aller
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
5
3. Beispiele für kinetische Datenstrukturen
Dietrich Travkin
im Worst Case bearbeiteten Ereignisse (Zähler) und der Anzahl der im Worst Case vorhandenen externen Ereignisse (Nenner) klein ist.
Starke Effizienz (strong efficiency) beschreibt, dass der Quotient aus der Anzahl aller
bearbeiteten Ereignisse (Zähler) und der Anzahl der externen Ereignisse (Nenner) im Worst
Case klein ist.
Lokalität (locality)
Die Lokalität beschreibt die maximale Anzahl Zertifikate, in die ein Objekt verwickelt ist. Ist
diese Anzahl klein, so ist die kinetische Datenstruktur lokal. Da bei der Flugplanänderung
eines Objektes die Zertifikate überprüft werden müssen, in die das Objekt verwickelt ist,
führt eine kleine Anzahl solcher Zertifikate zu schnellen Flugplan-Updates.
Kompaktheit (compactness)
Die Kompaktheit beschreibt die maximale Anzahl Zertifikate in der kinetischen Datenstruktur zu einem Zeitpunkt der Simulation. Ist diese Anzahl der Ordnung O(n · polylog(n)) oder
O(nε+1 ) für ein beliebig kleines ε > 0 , so ist die kinetische Datenstruktur kompakt.
3.2
Datenstrukturen für ein einfaches Maximum-Problem
Um die bisher nur sehr allgemein vorgestellten kinetischen Datenstrukturen besser zu illustrieren, betrachten wir die folgende Situation im Eindimensionalen. Gegeben n Punkte, die
sich mit konstanten (aber evtl. verschiedenen) Geschwindigkeiten entlang der y-Achse bewegen, anfangend bei einer beliebigen Konfiguration. Wenn zwei Punkte die gleiche Höhe
erreichen, so bewegen sie sich kollisionsfrei aneinander vorbei. Eine kinetische Datenstruktur
soll zu jedem Zeitpunkt den obersten Punkt angeben können (der größte Punkt, wenn man
diesen als Zahl betrachtet).
Da die Geschwindigkeiten der Punkte konstant sind, könnte man ihre Positionen durch
Geraden in der y-t-Ebene (die t-Achse ist die Zeitachse) darstellen. Ein Schnitt zwischen
zwei Geraden ist dann gerade der Zeitpunkt, an dem zwei Punkte die gleiche Höhe erreicht
haben und sich ihre Rangordnung bzgl. der Höhe ändert. Setzt man die obersten Segmente
zwischen solchen Schnittpunkten zu einem Polygonzug zusammen, entsteht eine graphische
Beschreibung, die zu jedem Zeitpunkt den obersten Punkt angibt (siehe Abb. 6). Mit dieser
Erkenntnis lässt sich das Problem offline vor der Simulation der Bewegungen lösen, was aber
so nicht erwünscht ist. Bei diesem Ansatz setzt man voraus, dass alle Bewegungen im Voraus
bekannt sind. Deswegen ist es nicht möglich, das Ergebnis online an eventuelle FlugplanUpdates anzupassen.
Abbildung 6: Die Punkte a, b, c und d bewegen sich mit konstanter Geschwindigkeit entlang der
y-Achse. Der Polygonzug bestehend aus den dick gezeichneten Liniensegmenten gibt zu jedem Zeitpunkt das Maximum der Punkte bzgl. ihrer y-Werte an.
KDS 1 (geordnete Liste)
Ein anderer (kinetischer) Ansatz ist, eine zu jedem Zeitpunkt bzgl. der Höhe geordnete Liste
der Punkte zu verwalten. Zu Beginn der Simulation existiert bereits eine korrekt geordneEine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
6
3. Beispiele für kinetische Datenstrukturen
Dietrich Travkin
te Liste. Für je zwei in der Ordnung nebeneinander liegenden Punkte wird ein Ereignis in
die Warteschlange eingefügt, der angibt, wann diese zwei Punkte die gleiche Höhe erreichen
werden. Tritt ein solches Ereignis ein, so ändern die zwei betroffenen Punkte ihre Positionen in der Ordnung. Dabei gehen bis zu zwei Nachbarschaften zwischen Punkten verloren
und es kommen bis zu zwei neue hinzu. Deswegen müssen bis zu zwei Ereignisse aus der
Warteschlange entfernt und bis zu zwei neue eingefügt werden (siehe Abb. 7 und 8).
Abbildung 8: Beim Simulieren des Ereignisses eb,c ändert sich die Ordnung in der Liste. Dabei gehen die Nachbarschaftsbeziehungen {a, b} und {c, d} verloren und es kommen 2
neue hinzu, nämlich {a, c} und {b, d}. Die KDS
entfernt deswegen die eingeplanten Ereignisse
ea,b und ec,d und fügt die neuen Ereignisse ea,c
und eb,d ein.
Abbildung 7: Zum Zeitpunkt t0 existiert eine korrekt geordnete Liste der Punkte. Die
KDS hat für alle Nachbarn in dieser Liste die
zugehörigen Ereignisse eb,c , ea,b und ec,d berechnet und in die Ereigniswarteschlange eingefügt.
Die Zertifikate bei dieser kinetischen Datenstruktur sind gerade die Bedingungen dafür,
dass der y-Wert eines Punktes kleiner bzw. größer ist als der y-Wert seines Nachbars. Es
gibt immer nur O(n) Zertifikate, also ist diese Datenstruktur kompakt. Jeder Punkt ist in
bis zu 2 Zertifikate verwickelt, deswegen ist die Datenstruktur auch lokal. Das Aktualisieren
der Zertifikate (bis zu 2 Ereignisse entfernen, bis zu 2 neue Ereignisse hinzufügen und eine
Vertauschung in der geordneten Liste) benötigt die Laufzeit O(n), damit ist die Datenstruktur
zusätzlich ansprechbar. Der höchste Punkt kann im Worst Case O(n) Mal wechseln, wenn
die Flugpläne sich nicht ändern, es gibt also höchstens O(n) externe Ereignisse. Die Anzahl
der insgesamt behandelten Ereignisse ist aber im Worst Case O(n2 ) (z.B., wenn eine Hälfte
der Punkte sich nicht bewegt und die andere
n Hälfte der Punkte die erste Hälfte kreuzt, so
streift
jeder
Punkt
in
der
einen
Hälfte
die
2 Punkte in der anderen Hälfte, insgesamt sind
das n2 · n2 = O(n2 ) behandelte Ereignisse), d.h. diese kinetische Datenstruktur ist nicht
effizient .
KDS 2 (binärer Heap)
Eine weitere Möglichkeit für eine kinetische Datenstruktur ist, die Punkte bzgl. ihrer Position
auf der y-Achse in einem binären Heap zu verwalten (der Punkt mit maximalem y-Wert ist
die Wurzel). Zu Beginn der Simulation ist so ein Heap bereits aufgebaut. Unter der Annahme, dass sich zu jedem Zeitpunkt höchstens zwei Punkte auf gleicher Höhe befinden, kann
die Datenstruktur (und damit auch die Zertifikate) bei Eintreten eines externen Ereignisses
in konstanter Zeit aktualisiert werden. Im Worst Case, nämlich wenn ein Punkt und sein
Elternteil im Heap ihre Rangordnung wechseln, reicht es aus, die Elementpositionen im Heap
zu vertauschen. Dabei gehen bis zu 4 Eltern-Kind-Beziehungen im Heap verloren und es kommen bis zu 4 neue Beziehungen hinzu (siehe Abb. 9). Da die Höhen der im Heap vertauschten
Punkte zu diesem Zeitpunkt gleich sind, bleiben dabei alle Heap-Eigenschaften erhalten.
Auch diese kinetische Datenstruktur ist kompakt, denn die Anzahl der Zertifikate (das
sind gerade die ≤-Beziehungen, die durch die Heap-Kanten repräsentiert werden) ist O(n).
Jeder Punkt ist in bis zu 3 Zertifikate verwickelt (zwei Kinder und ein Elternteil), also ist
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
7
3. Beispiele für kinetische Datenstrukturen
Dietrich Travkin
Abbildung 9: Links ist der Heap vor dem Vertauschen der Knoten b und d zu sehen, die zugehörigen
Punkte haben gleiche y-Werte. Nach dem Vertauschen gehen die vier grün markierten Kanten verloren und es kommen die vier im rechten Bild blau markierten Kanten hinzu.
die kinetische Datenstruktur lokal. Das Aktualisieren der Zertifikatmenge, um die Korrektheit der Heap-Ordnung aufrecht zu erhalten, ist in linearer Laufzeit möglich, deswegen ist
die Datenstruktur ansprechbar. Die Anzahl der externen Ereignisse im Worst Case ist wie
oben O(n), die Anzahl der insgesamt behandelten Ereignisse ist allerdings nur schwer zu bestimmen. Laut [2] wurde O(n log2 n) als obere Schranke bewiesen. Damit ist diese kinetische
Datenstruktur auch (schwach) effizient.
KDS 3 (Kinetisches Turnier) und Kinetisierung statischer Algorithmen
Nun soll noch eine dritte Möglichkeit für eine kinetische Datenstruktur vorgestellt werden. In
diesem Fall soll allerdings illustriert werden, wie ein klassischer statischer Algorithmus (für
das statische Problem, d.h. in unserem Beispiel: die Punkte bewegen sich nicht) kinetisiert“,
”
also an das kinetische Problem angepasst wird.
Wenn sich die Punkte nicht bewegen, dann braucht der statische Algorithmus nur ein
Maximum der y-Werte von n (statischen) Punkten zu berechnen. Wählen wir einen Algorithmus, der das Maximum berechnet, indem dieser die Punktemenge in zwei beliebige etwa
gleichgroße Gruppen aufteilt, dann rekursiv das Maximum jeder Gruppe berechnet und anschließend durch Vergleichen der beiden Maxima das Maximum aller Punkte bestimmt. Der
Algorithmus geht also wie bei einem Turnier vor, um den Sieger (das Maximum) zu bekommen. Dabei führt der Algorithmus insgesamt O(n) Vergleiche durch, diese belegen die
Korrektheit des errechneten Maximums.
Betrachtet man nun den kinetischen Fall, d.h. die Punkte können sich bewegen, dann
ist das Ergebnis des statischen Algorithmus solange, wie die von ihm gemachten Vergleiche
korrekt bleiben, auf jeden Fall richtig. Deswegen können alle diese Vergleichsergebnisse, genauer: die Bedingungen a.y ≤ b.y für Punkte a und b, als Zertifikate für die Korrektheit des
Maximums betrachtet werden (Korrektheitsbeweis).
Im Allgemeinen kann ein statischer Algorithmus kinetisiert werden, indem zu den von ihm
benutzten Korrektheitsbedingungen (Zertifikate) – in unserem Beispiel also den Vergleichen
– je ein Ereignis in eine Warteschlange eingefügt wird, das beschreibt, wann diese Bedingung
in Zukunft (möglicherweise) verletzt wird. Für die Fälle, dass ein Zertifikat verletzt wird,
versucht man, eine möglichst einfache und effiziente Methode zu finden, die Ausgabe des
statischen Algorithmus zu korrigieren und die Zertifikatmenge zu aktualisieren. Wie bereits
erwähnt, werden dabei Flugpläne und Bewegungskonstanten verwendet, um die Ereigniszeitpunkte zu berechnen und die Ereignisse werden chronologisch bearbeitet bzw. simuliert.
Bei dem Maximum-Problem und dem oben beschriebenen statischen Algorithmus wird ein
Zertifikat ungültig, wenn sich bei einem bestimmten Vergleich das Ergebnis ändert. Das ist ein
Vergleich zwischen zwei Gewinnern“ (Maxima) zweier Untergruppen auf einem bestimmten
”
Level des Turnierbaums. Ändert sich also das Ergebnis dieses Vergleichs (es gibt einen neuen
Gewinner“), so müssen alle zugehörigen Vergleiche höherer Ebenen aktualisiert werden, bis
”
der neue Gewinner“ verliert“ oder der Gesamtsieger“ ist. Die Autoren von [2] nennen die
”
”
”
durch die oben genannten Anpassungen entstehende kinetische Datenstruktur kinetisches
Turnier.
Da der Turnierbaum balanciert ist, benötigt die Aktualisierung des Turnierbaums nach
dem Ungültigwerden eines Zertifikats O(log n) Rechenschritte und es müssen im Worst Case
O(log n) Zertifikate entlang eines Weges von dem ungültig gewordenen Zertifikat zur Wurzel
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
8
3. Beispiele für kinetische Datenstrukturen
Dietrich Travkin
des Turnierbaums aktualisiert werden. Dabei wird in jedem Schritt eine konstante Anzahl
Ereignisse aus der Warteschlange entfernt bzw. eingefügt. Das kinetische Turnier ist in diesem
Beispiel also eine ansprechbare kinetische Datenstruktur. Die maximale Anzahl der Zertifikate in dieser Struktur ist O(n), das ist gerade die Anzahl der Vergleiche, die der statische
Algorithmus macht. Deswegen ist die Datenstruktur kompakt. Jeder Punkt kann in höchstens
O(log n) Zertifikate verwickelt sein (das sind die Vergleiche entlang eines Pfades in dem Turnierbaum), darum ist die Datenstruktur auch lokal.
Nun stellt sich die Frage der Effizienz. Es gibt – wie bereits erwähnt – höchstens O(n)
externe Ereignisse, aber wie viele Ereignisse werden von dieser KDS insgesamt behandelt
(im Worst Case)? Nun, das kinetische Turnier macht eigentlich nichts anderes als, mit der
Divide-and-conquer-Methode einen obersten Liniensegmentzug von n sich evtl. schneidenden
Linien in der t-y-Ebene zu berechnen (siehe Abb. 6 auf Seite 6). Die Anzahl der Ereignisse
bei dem kinetischen Turnier ist proportional zu der Anzahl aller Wechsel eines Gewinners in
einem Knoten des Turnierbaums (Ein Gewinner wechselt, wenn z.B. bei den Punkten a und
b als Kontrahenten in einer Ebene des Turnierbaums anstatt a der Punkt b zum Gewinner
wird, d.h. die Beziehung a ≥ b ändert sich zu a ≤ b). Jeder dieser Gewinnerwechsel entspricht einem Schnitt zwischen zwei von dem Divide-and-conquer-Algorithmus berechneten
obersten Liniensegmentzügen zweier Untergruppen der Punkte (siehe Abb. 10). Wie viele
Abbildung 10: Die beiden Geraden stellen je einen obersten Liniensegmentzug der Untergruppen
{a} und {b} dar. Beim Ereignis e passiert ein Gewinnerwechsel, d.h. in dem Turnierbaum gibt es für
die Untergruppen {a} und {b} einen neuen Gewinner und zwar b.
solcher Schnitte werden also von dem Divide-and-conquer-Algorithmus im Worst Case berechnet? Der Algorithmus teilt das Problem rekursiv in zwei Unterprobleme halber Größe
auf, löst diese und fügt die Lösungen der beiden Unterprobleme zu einer Gesamtlösung zusammen. Dadurch entsteht für die Laufzeit die Rekursionsgleichung T (n) = 2T ( n2 ) + f (n),
wobei f (n) die Laufzeit für eine Merge-Operation ist. Die Lösung eines Unterproblems ist
ein oberster Liniensegmentzug, zwei solche Segmentzüge werden durch eine Merge-Operation
zu einem neuen Segmentzug zusammengeführt (siehe Abb. 11). Die Merge-Operation kann
Abbildung 11: Links sind die Liniensegmentzüge der Untergruppen {a, d} und {b, c} dick eingezeichnet. Diese werden mit der Merge-Operation zu einem neuen Liniensegmentzug aller Punkte,
also der Gruppe {a, b, c, d} zusammengeführt.
mit einem Sweepline-Verfahren implementiert werden, sodass die Laufzeit für eine MergeOperation im Worst Case Θ(n) ist (siehe Abb. 12). Damit löst sich die Rekursionsgleichung
T (n) = 2T ( n2 ) + Θ(n) mit Hilfe des Master-Theorems zu T (n) = O(n log n) auf. Das heißt,
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
9
4. Anwendbarkeit
Dietrich Travkin
Abbildung 12: Hier werden die Liniensegmentzüge zweier Untergruppen mit dem SweeplineVerfahren zu einem gemeinsamen Liniensegmentzug zusammengeführt. Dabei wird abwechselnd ein
rotes bzw. ein grünes Segment festgehalten und auf Schnitte mit chronologisch sortierten Segmenten der jeweils anderen Farbe geprüft, bis ein Segment erreicht wurde, dessen Endpunkt rechts von
dem Endpunkt des festgehaltenen Segments liegt. Ist so ein Segment erreicht worden, so wird dieses
(nach dem Prüfen auf Schnitte mit dem aktuellen festgehaltenen Segment) zum neuen festgehaltenen
Segment mit einer anderen Farbe. Ob zwei Liniensegmente sich schneiden kann in konstanter Zeit
geprüft werden. Die Anzahl der Prüfungen, ob sich zwei Segmente schneiden, ist O(n). Damit kann
die Merge-Operation in O(n) Rechenschritten durchgeführt werden.
O(n log n) ist eine obere Schranke für die Anzahl der vom kinetischen Turnier behandelten Ereignisse. Die Anzahl der externen Ereignisse ist im Worst Case O(n), damit ist diese
kinetische Datenstruktur auch (schwach) effizient.
4
Anwendbarkeit
4.1
Anwendungsgebiete für kinetische Datenstrukturen
Die in dieser Arbeit vorgestellten Beispiele für kinetische Datenstrukturen sind aus Gründen
der Didaktik von besonders einfacher Natur. In [1] wurden kinetische Datenstrukturen auch
für komplexere geometrische Problemstellungen präsentiert, z.B. die Berechnung konvexer
Hüllen, minimaler Spannkreise und Spannbäume, Closest Pairs, Voronoi-Diagramme und
Delaunay-Triangulierungen und BSPs (Binary Space Partitions). Laut [1] sind die kinetischen Datenstrukturen auch für nicht-geometrische Probleme anwendbar, z.B. für das hier
vorgestellte Maximum-Problem (die Punkte werden dann nur noch als Zahlen angesehen,
d.h. als y-Werte der Punkte) oder für die Berechnung von kürzesten Pfaden in einem Graph
mit sich ständig ändernden Kantenkosten.
Damit die kinetischen Datenstrukturen anwendbar sind, müssen einige Voraussetzungen erfüllt sein: Es wird eine große Anzahl sich kontinuierlich bewegender (verändernder)
Objekte (starr oder sogar verformbar) behandelt, wobei die Bewegungen (Veränderungen)
bestimmten bekannten Gesetzen folgen (z.B. Maximalgeschwindigkeit und -beschleunigung).
Die Objekte dürfen nicht von einem Ort zu einem anderen springen (bzw. ihren Wert sprungweise ändern). Bei geometrischen Problemen müssen die Bewegungsbahnen der Objekte so
genannte pseudo-algebraische Splines sein, um die Komplexität der Schnitte zwischen Bewegungsbahnen einzugrenzen. Für die oben genannten kinetischen Datenstrukturen aus [1] wird
zusätzlich vorausgesetzt, dass sämtliche Flugpläne mit vollständiger Bewegungsinformation
vorhanden sind und alle Flugplan-Updates als Ereignisse in die Warteschlange der kinetischen
Datenstruktur eingetragen sind. Außerdem soll jeder Flugplan eine konstante Komplexität
haben, dieser darf also nicht von der Anzahl n der sich bewegenden Objekte abhängen.
Erwähnenswert ist auch, dass eine kinetische Datenstruktur zentral agiert, d.h. bei Bewegungssimulationen befinden sich sämtliche Daten sowie die kinetische Datenstruktur auf nur
einem Rechner. Die Berechnungen müssen auch nicht Echtzeit-fähig sein, denn die Laufzeit
misst sich an der Anzahl der externen Ereignisse. Das heißt aber, dass eine kinetische Datenstruktur für z.B. 3000 externe Ereignisse innerhalb von 1 ms genauso viel Rechenzeit zur
Verfügung hat, wie für 3000 externe Ereignisse innerhalb von einer Stunde.
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
10
4. Anwendbarkeit
Dietrich Travkin
Für die Beispiele aus [1] wird vorausgesetzt, dass die Flugpläne für alle Objekte a priori
bekannt sind, das ist meist nicht der Fall. Es ist möglich, dass Flugpläne nur Teilinformationen zu den Bewegungsdaten enthalten oder gar keine Flugpläne vorliegen. In diesem Fall kann
man aber die kinetische Datenstruktur so entwickeln, dass sie versucht, die Bewegungen der
Objekte in naher Zukunft vorherzusagen, indem ihre vergangenen Bewegungen extrapoliert
werden. So können aber keine exakten Zeitpunkte für die Ereignisse berechnet werden. Eine
andere Möglichkeit ist, mit Hilfe der Positionsdaten und der gegebenen Bewegungskonstanten
wie Maximalgeschwindigkeit sowie der evtl. zum Teil vorhandenen Flugpläne Abschätzungen
zu machen, d.h. vorherzusagen, wann ein Zertifikat frühestens scheitern kann. Dieser Zeitpunkt wird als Ereignis in die Warteschlange eingefügt, bei dessen späterer Bearbeitung die
Zertifikate unter Zuhilfenahme evtl. neuer oder aktualisierter Positions- und Bewegungsdaten überprüft werden. So bekommt man eine obere Schranke für die Zeitspanne, in der die
geometrische Struktur der Lösungsmenge immernoch korrekt ist.
Zusammenfassend kann man sagen, dass die Anwendungsgebiete für kinetische Datenstrukturen durch die oben genannten Voraussetzungen stark eingeschränkt sind. Für kompliziertere Problemstellungen sind Anpassungen nötig. Der Hauptvorteil der kinetischen Datenstrukturen ist, dass sie nach dem Online-Prinzip, ereignisbasierend vorgehen und nicht an
feste Zeitintervalle gebunden sind. So wird die Kontinuität der Bewegungen besser ausgenutzt
als bei vielen anderen Datenstrukturen und Algorithmen. Die kinetischen Datenstrukturen
wurden in erster Linie für die Behandlung von sich kontinuierlich verändernden Daten optimiert und nicht, um mit Daten umgehen zu können, bei denen sich durch Einfügen und
Entfernen die Anzahl der betrachteten Objekte ändern kann – wie bei den klassischen dynamischen Datenstrukturen. Es ist aber auch möglich (und oft erwünscht), die Konzepte
der dynamischen und kinetischen Datenstrukturen zu verbinden, um auf diese Weise beide
Problemarten behandeln zu können.
Kinetische Datenstrukturen sind für Simulationen von kontinuierlichen Bewegungen ohne
Echtzeitrestriktionen gut geeignet. Sie sichern die Korrektheit der Simulation und können
mit großen Objektmengen umgehen. Die behandelten Probleme müssen so sein, dass die Bewegungen bzw. Veränderungen der Objekte bestimmten bekannten Gesetzen folgen (Schranken, Parameter, Konstanten,. . . ). Besonders gut lassen sich die kinetischen Datenstrukturen
anwenden, wenn jede Flugplanänderung Flugplan-Updates (idealerweise mit vollständigen
Bewegungsinformationen) bewirkt und sämtliche Flugplan-Updates bekannt gemacht werden.
4.2
Anwendbarkeit in der Projektgruppe
Im Rahmen der Projektgruppe Peer-to-peer-Netzwerke für dynamische 3D-Szenen sollen unter
anderem Sichtbarkeitsprobleme zwischen sehr vielen (ca. 100.000 oder mehr) hochdynamischen Objekten gelöst werden. Auch hier gehen wir von kontinuierlichen Bewegungen aus,
deswegen stellt sich die Frage der Anwendbarkeit von kinetischen Datenstrukturen für die
Verwaltung der benötigten Daten.
Wie bereits erwähnt, sind die in [1] vorgestellten kinetischen Datenstrukturen nur unter
einer Reihe Voraussetzungen an das zu behandelnde Problem anwendbar. Besondere Schwierigkeiten bereitet dabei die Echtzeit-Anforderung unserer Projektgruppe. Die kinetischen
Datenstrukturen, so wie sie in [1] vorgestellt wurden, können zwar eine beliebige endliche
Anzahl Ereignisse in einem beliebig kleinen (simulierten) Zeitintervall behandeln, die zugehörige Berechnung kann dann aber sehr lange dauern. Die Datenstrukturen müssten so
angepasst werden, dass die zu behandelnden Ereignisse in Echtzeit simuliert und die Rechenzeitbeschränkungen berücksichtigt werden. Das beinhaltet ein Abbrechen von Berechnungen,
die nicht bis zu ihrer Deadline beendet werden können oder ein Anpassen der Genauigkeit der
Berechnungen, um die Deadlines leichter einhalten zu können. Beides wirft aber das Problem
der Korrektheit der Simulation auf. Eine weitere Anpassung wäre nötig, um die kinetischen
Datenstrukturen verteilt, anstatt zentral (wie in [1]), zu benutzen, denn im Rahmen der Projektgruppe sollen die Bewegungsdaten auf mehrere Rechner im Peer-to-peer-Netzwerk verteilt
behandelt werden. Außerdem wird für die in [1] vorgestellten kinetischen Datenstrukturen
vorausgesetzt, dass für jede Flugplanänderung auch Flugplan-Updates vorhanden sind und
die Bewegungsinformationen vollständig sind. Bei zufällig bewegten oder von Menschen geEine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
11
LITERATUR
Dietrich Travkin
steuerten Objekten ist es nicht möglich, sämtliche Bewegungen in Form von Flugplänen der
kinetischen Datenstruktur bekannt zu machen. Die Datenstruktur muss also Bewegungen
mit Hilfe von Bewegungskonstanten wie Höchstgeschwindigkeit abschätzen, was die Anzahl
der zu behandelnden Ereignisse erhöht und die Datenstrukturen möglicherweise ineffizient
macht.
Klar ist, dass die vorgestellten kinetischen Datenstrukturen in der Projektgruppe nicht
ohne umfangreiche Anpassungen verwendet werden können. Die Idee, die Korrektheit durch
Zertifikate aufrecht zu erhalten und ereignisbasiert vorzugehen, könnte für die Projektgruppe nützlich sein. Die Echtzeitanforderungen stellen aber ein großes Problem dar und es ist
noch nicht abzusehen, ob die kinetischen Datenstrukturen in der Projektgruppe tatsächlich
Anwendung finden können.
Literatur
[1] Leonidas J. Guibas: Kinetic Data Structures - A State of the Art Report, Stanford
University, 1997
[2] Julien Basch, Leonidas J. Guibas, John Hershberger: Data Structures for Mobile Data,
ACM-SIAM Symposium on Discrete Algorithms, pages 747-756, 1997
Eine Ausarbeitung im Rahmen des Seminars zur Projektgruppe Peer-to-peer-Netzwerke für
dynamische 3D-Szenen, 2003/2004
12
Herunterladen