FernUniversität in Hagen

Größe: px
Ab Seite anzeigen:

Download "FernUniversität in Hagen"

Transkript

1 FernUniversität in Hagen Seminarband zum Kurs 1912 im WS 2010/2011 Nächste-Nachbarn-Suche Präsenzphase: Betreuer: Dr. Thomas Behr Fakultät für Mathematik und Informatik Datenbanksysteme für neue Anwendungen FernUniversität in Hagen Hagen

2

3 Zeitplan und Inhaltsverzeichnis Freitag, Uhr Begrüßung Uhr Robert Trögl Distance Scan Uhr Matthias Pump Abschätzen und ungenaue Ergebnisse der NN-Suche Uhr Matthias Markl NN-Suche in mehrdimensionalen Umgebungen Uhr Mittagspause Uhr Thomas Achmann NN-Suche in Netzwerken Uhr Alexander Kiefl NN-Suche bei bewegtem Anfagepunkt Uhr Marek Niwinski NN-Suche bei bewegtem Anfagepunkt und beweglicher Anfragemenge Uhr Schluss Samstag, Uhr Barbara Drüke NN-Suche bei beweglichem Anfragepunkt und beweglicher Anfragemenge Uhr Jasmin Möller NN-Suche bei beweglichem Anfragepunkt und beweglicher Anfragemenge Uhr Franziska Ota NN-Suche in historischen Daten Uhr Verabschiedung

4

5 Robert Trögl, Thema 1: Distance Scan FernUniversität in Hagen - Seminar 1912 im Wintersemester 2010/11 Nächste-Nachbarn-Suche Thema 1 Distance Scan Referent: Robert Trögl

6 Robert Trögl, Thema 1: Distance Scan Inhaltsverzeichnis Abbildungsverzeichnis... I Tabellenverzeichnis... I 1. Überblick Grundlagen zu geometrischen Datenbanksystemen Suchbäume K-dimensionale Bäume Homogener k-d-baum Heterogener k-d-baum LSD-Bäume Struktur Split-Strategien Besonderheit: Transformationstechnik R-Bäume Algorithm for closest and distance-scan queries von A. Henrich Incremental nearest neighbor algorithm (INN) Beschreibung des Algorithmus angepasst an R-Bäume Vergleich des INN-Algorithmus mit dem Algorithmus von A. Henrich K-nearest neighbor search in einem R-Baum (k-nn) Beschreibung des Algorithmus Transformation in einen inkrementellen Algorithmus Vergleich des INN-Algorithmus mit dem k-nn-algorithmus Fazit Literaturverzeichnis... II

7 Robert Trögl, Thema 1: Distance Scan Abbildungsverzeichnis Abbildung 1: Heterogener k-d-baum... 3 Abbildung 2: Buckets in einem LSD-Baum... 4 Abbildung 3: Der LSD-Baum für die Datenraumunterteilung in Abbildung Abbildung 4: Linienobjekte... 6 Abbildung 5: Eckentransformation... 7 Abbildung 6: Mittentransformation... 7 Abbildung 7: Transformation einer Suchregion (bei Eckentransformation)... 7 Abbildung 8: Suchintervalle... 8 Abbildung 9: MBBs von Knoten und Objekten und zugehöriger R-Baum... 9 Abbildung 10: Datenraum bei der Suche mit dem Algorithmus von A. Henrich Abbildung 11: R-Baum für Linienobjekte aus Abbildung Abbildung 12: Abstände der Objekte und Knoten des R-Baums zum Anfrageobjekt q Abbildung 13: Kumulative Ausführungszeit bei Distance Browsing Tabellenverzeichnis Tabelle 1: Abstände der Buckets zum Punkt P Tabelle 2: Abstände der Objekte und Knoten zum Anfrageobjekt x I

8 Robert Trögl, Thema 1: Distance Scan 1. Überblick Eine mögliche Problemstellung, wenn man als Geschäftsreisender oder Urlauber mit dem Zug in eine andere Stadt reist, liegt darin, ein Hotel in der Nähe des Hauptbahnhofs zu finden. Hierbei spielen häufig einschränkende Bedingungen eine Rolle, beispielsweise wenn man nur in Hotels mit mindestens drei Sternen übernachten möchte. Closest-queries suchen das Objekt, das den geringsten Abstand zu einem gegebenen Punkt hat. Falls mehrere Objekte den gleichen Abstand zu einem gegebenen Punkt haben, gibt es mehrere gleichwertige Ergebnisse. Die Suche erfolgt mit Hilfe eines Schlüsselattributs in der Datenbank. 1 Hierauf geht der nächste Abschnitt dieser Arbeit genauer ein. In unserem Beispiel sucht man folglich das Hotel, das die geringste Entfernung zum Hauptbahnhof aufweist. Als Nebenbedingung kann festgelegt werden, dass das Hotel mindestens drei Sterne haben soll. Häufig muss jedoch nicht nur das nächste Hotel gefunden werden. In vielen Fällen benötigt man als Reisender eine Liste von Hotels, geordnet nach ihrer Entfernung zum Hauptbahnhof. In dieser Liste sollten auch die Nebenbedingungen enthalten sein. In unserem Beispiel sind dies der Preis und die Anzahl der Sterne des Hotels. Wenn das Hotel mit der kleinsten Entfernung von 600 Meter zum Hauptbahnhof 80 Euro pro Nacht kostet und das Hotel mit der zweitkleinsten Entfernung von 1050 Meter zum Hauptbahnhof lediglich 56 Euro pro Nacht, ist das zweite Hotel für die meisten Reisenden die bessere Wahl, sofern es den gleichen Komfort bietet. Aufgrund der persönlichen Präferenzen kann weiterhin ein Geschäftsreisender bereit sein, für ein 4-Sterne- Hotel wesentlich mehr zu bezahlen als für ein 3-Sterne-Hotel. Die persönliche Auswahl eines Reisenden kann anhand einer Liste mit Nebenbedingungen am besten getroffen werden. Bei der beschriebenen Problemstellung zu einem gegeben Punkt (Hauptbahnhof) die nächsten Nachbarn (Hotels) zu finden, sind so genannte distance-scan queries oder kurz distance scans durchzuführen. 2 Die Anzahl der Hotels kann auf unterschiedliche Art vorgegeben werden. Es kann zum einen eine Obergrenze für die Entfernung, oder zum anderen eine Obergrenze für die Anzahl der Ergebnisobjekte festgelegt werden. Alternativ kann man die Suche auch beenden, sobald genug Ergebnisse ausgegeben wurden. 3 In dieser Seminararbeit wird nach einigen Erläuterungen zu geometrischen Datenbanksystemen und Suchbäumen der Algorithmus für distance scans von Andreas Henrich beschrieben, bei dem der Suchbereich, in unserem Beispiel die Region rund um den Hauptbahnhof, nach und nach erweitert wird und jeweils die neuen Objekte im Suchbereich geordnet in eine Ergebnisliste eingefügt werden. Der Algorithmus weist damit Parallelen zum incremental nearest neighbor algorithm auf, bei dem nach der erfolgreichen Suche nach dem nächsten Nachbar einfach der zweitnächste Nachbar, der drittnächste Nachbar usw. gefunden und ausgegeben werden kann. Als dritter Algorithmus wird der k-nearest neighbor search vorgestellt, bei dem die Anzahl k der Ergebnisse vorab festgelegt werden muss. Dieser Algorithmus wird anschließend in einen inkrementellen Algorithmus transformiert. Danach wird der ursprüngliche k-nearest neighbor Algorithmus noch mit dem incremental nearest neighbor Algorithmus verglichen. 2. Grundlagen zu geometrischen Datenbanksystemen Ein geometrisches Datenbanksystem (DBS) ist ein DBS, das geometrische Datentypen im Datenmodell und den Abfragesprachen verwendet und räumliche Indexe sowie effiziente Algorithmen für den räumlichen Verbund (spatial join) bereitstellt. Die Unterstützung der geometrischen Datentypen (spatial data types) erstreckt sich auch auf die Implementierung. 4 1 Vgl. [Henrich 94] S. 1, Kapitel 1 2 Vgl. [Henrich 94] S. 1, Kapitel 2 3 Vgl. [Henrich 94] S. 2, Kapitel 2 4 Vgl. [Güting] S. 4 1

9 Robert Trögl, Thema 1: Distance Scan In einem geometrischen DBS sind alle Punkte im Raum wie in einem Raster ansprechbar. Zudem können Objekte im Raum dargestellt werden. Objekte sind beispielsweise eine Stadt oder der Verlauf eines Flusses. Um Objekte zu modellieren, benutzt man hauptsächlich Punkte und Linien. Eine Stadt wird typischerweise durch den geometrischen Datentyp Punkt und ein Fluss durch den geometrischen Datentyp Linie dargestellt. 5 Im relationalen Modell ist damit in jeder Relation ein geometrischer Datentyp enthalten. Im folgenden Beispiel ist dies LINE in Flüsse und POINT in Städte. Relation Flüsse (Flussname: STRING, Flussverlauf: LINE) Relation Städte (Stadtname: STRING, Stadtzentrum: POINT, Einwohner: INTEGER) Die Relation Städte kann um einen weiteren geometrischen Datentyp REGION zur Darstellung des Stadtgebietes erweitert werden. 6 Mit einem räumlichen Verbund können zum Beispiel alle Städte gefunden werden, deren Zentrum weniger als 30 Kilometer von einem Fluss entfernt liegt. Die entsprechende Abfrage lautet: Flüsse Städte join [dist (Stadtzentrum, Flussverlauf) < 30] Suchbäume 3.1. K-dimensionale Bäume Da k-dimensionale Bäume (k-d-bäume) mehrdimensionale Suchanfragen unterstützen, liegt ihr entscheidender Vorteil, im Vergleich zu eindimensionalen Ansätzen, in der effizienteren und damit schnelleren Bearbeitung, wenn über mehrere Attribute gesucht werden muss. 8 Ein Beispiel für eine solche Suche ist: Finde alle Angestellten aus Abteilung X mit Alter Y. Die folgenden Ausführungen gehen von einer hash-basierten Indexstruktur aus, da diese besonders gut für Anfragen mit Gleichheitsbedingung geeignet ist. Wenn beispielsweise als Sekundärorganisation eine Indexstruktur für Abteilung und eine weitere für Alter vorliegt, muss man trotzdem zunächst alle Angestellten aus Abteilung X finden und anschließend alle Angestellten, die Y Jahre alt sind. Erst die Schnittmenge ist das Ergebnis der Suchanfrage. Dieses Vorgehen ist bei sehr großen Abteilungen in jedem Fall aufwändiger als mit einem k-d-baum Homogener k-d-baum Der homogene k-d-baum ist ähnlich wie ein binärer Suchbaum aufgebaut. Auf jeder Ebene findet nur eine binäre Entscheidung statt, das heißt jeder Knoten, außer einem Blatt, hat genau zwei Nachfolger. Der Unterschied zum binären Suchbaum liegt in der Auswahl des Attributs, nach dem der Aufbau des Baumes und die Suche gesteuert werden. Beim binären Suchbaum ist das Attribut immer gleich, bei einem k-d-baum gibt es k Attribute, die wechselnd relevant sind für die Anordnung des einzufügenden Knotens bzw. für den weiteren Suchverlauf. 9 Beim k-d-baum werden die Attribute nacheinander durchlaufen und können nicht frei gewählt werden. Dies stellt einen wichtigen Unterschied zum LSD-Baum dar, der in Abschnitt 3.2 näher erläutert wird. Auf die Suche, die beim k-d-baum und beim LSD-Baum ähnlich verläuft, wird in Abschnitt 4 eingegangen. 5 Vgl. [Güting] S. 7 6 Vgl. [Güting] S Vgl. [Güting] S Vgl. [Schneider 04] S Vgl. [Här, Rahm 01] S. 257 und [Schneider 04] S

10 Robert Trögl, Thema 1: Distance Scan Der Aufbau eines k-d-baumes wird in den folgenden Ausführungen anhand eines Beispiels verdeutlicht. Das erste Objekt A, das in den Datenraum eingefügt wird, bildet automatisch die Wurzel des homogenen k-d-baumes. Danach wird das zweite Objekt B in den Datenraum eingefügt. Dabei wird davon ausgegangen, dass auf der obersten Ebene des Verzeichnisbaums das erste Attribut für die Anordnung des einzufügenden Knotens maßgeblich ist, auf der Ebene darunter das zweite Attribut usw. Anhand des ersten Attributs wird somit entschieden, ob B als linker oder rechter Nachfolger von A im k-d-baum gespeichert wird. Für die weiteren Ausführungen wird angenommen, dass B als linker Nachfolger von A im Baum gespeichert wird. Wenn man anschließend das Objekt C einfügt, wird im ersten Schritt anhand des ersten Attributs entschieden, ob C links oder rechts von A im Baum platziert werden muss. Ist C im linken Ast zu speichern, ist mit B bereits ein Nachfolgerknoten vorhanden. Es wird folglich anhand des zweiten Attributs entschieden, ob C links oder rechts von B im Baum gespeichert wird. Die Struktur des Baumes ist somit abhängig von der Reihenfolge, in der die Objekte in den Baum eingefügt werden. Im ungünstigsten Fall kann der Baum zu einer Liste entarten Heterogener k-d-baum Im Gegensatz zum homogenen k-d-baum werden beim heterogenen k-d-baum die Datensätze nur in den Blattknoten gespeichert. Die inneren Knoten dienen als Separatoren und haben damit nur Wegweiserfunktion. Der Datenraum wird bereits in Buckets aufgeteilt. 11 Der gesamte Datenraum wird anfangs von einem Bucket ausgefüllt. Es wird festgelegt, wie viele Elemente ein Bucket maximal aufnehmen kann. Wenn das Bucket voll ist, erfolgt ein Split. 12 Abbildung 1: Heterogener k-d-baum Quelle: [Güting] S. 62 Der k-d-baum entsteht dadurch, dass nacheinander die Buckets überlaufen und damit eine Teilung erfolgen muss. Der Diskriminator, der auch als Attribut bezeichnet werden kann, wechselt wie beim homogenen k-d-baum von Ebene zu Ebene. Ein Split erfolgt im oben links abgebildeten Datenraum immer senkrecht zu der Achse, die vom Diskriminator vorgegeben wird. Die Position des Splits wird durch den jeweiligen Wert im Baum festgehalten. Im Baum, der in der Abbildung 1 rechts abgebildet ist, sieht man dass der Diskriminator auf der obersten Ebene x ist und damit eine Teilung senkrecht zur x-achse bei der Koordinate 3 erfolgt. Die Elemente, deren x-wert kleiner als 3 ist, befinden sich damit im linken Teil des Datenraums und die Elemente, deren x-wert größer als 3 ist, befinden sich im rechten Teil des Datenraums. Vorab muss eine Annahme bezüglich der Elemente mit x-wert gleich 3 getroffen werden. Die erste Teilung wird im Verzeichnisbaum durch die Wurzel dargestellt. 10 Vgl. [Här, Rahm 01] S. 257f. 11 Vgl. [Här, Rahm 01] S. 258f. und [Schneider 04] S Abschnitt erläutert die Split-Strategien 3

11 Robert Trögl, Thema 1: Distance Scan Weiterhin erfolgt im linken Teil-Datenraum ein Split bei der y-koordinate 5 und rechts bei der y-koordinate 4. Durch den zuletzt genannten Split entsteht der Teil-Datenraum Bucket G und der Teil-Datenraum unten rechts, der noch weiter geteilt wird und am Ende die Buckets C, D, E und F ergibt. Bei einem Split senkrecht zur y-achse bildet der untere Datenraum das linke Blatt im Verzeichnisbaum und der obere Datenraum entsprechend das rechte Blatt. Das konkrete Aussehen des Baumes ist davon abhängig, in welcher Reihenfolge die Buckets überlaufen. Es kann auch zunächst der rechte Ast im Verzeichnisbaum entstehen, bevor links der Split senkrecht zur y-achse bei y = 5 durchgeführt wird. Der Baum kann somit auch entarten. Beim obigen Baum ist dies bereits zum Teil der Fall, da die Blätter nicht alle auf der gleichen Ebene liegen. Wird ein Bucket geteilt, so entsteht im Verzeichnisbaum aus dem Blattknoten ein Zwischenknoten, der auf zwei nachfolgende Blattknoten, die Buckets symbolisieren, zeigt. Die im Bucket gespeicherten Elemente, verteilen sich bei einer günstigen Split-Strategie gleichmäßig auf die zwei Buckets, die durch den Split entstehen. 13 Die Anwendung des k-d-baumes lässt sich an einem Beispiel verdeutlichen. In der Datenbank eines Fitnessstudios können Alter, Größe und Gewicht als Attribute eines Mitglieds mit Hilfe eines 3-d-Baumes verwaltet werden. Die Personengruppe, die zwischen 25 und 30 Jahre alt, zwischen 1,80 und 1,90 Meter groß und zwischen 60 und 70 Kilogramm schwer ist, bildet in diesem Fall einen Quader im dreidimensionalen Datenraum. In der Praxis sind weder der homogene noch der heterogene k-d-baum für DBS geeignet. Die Darstellung in dieser Arbeit erfolgt als Grundlage für den LSD-Baum (Abkürzung für local split decision ), der eine Weiterentwicklung des heterogenen k-d-baumes darstellt und im folgenden Abschnitt beschrieben wird LSD-Bäume Struktur Beim LSD-Baum werden die Elemente ebenfalls in Buckets fester Größe verwaltet. Dies bedeutet, dass ein Bucket eine bestimmte Anzahl von Elementen aufnehmen kann. Die Buckets stellen einen Teil-Datenraum des mehrdimensionalen Datenraumes dar. Bei den Buckets handelt es sich um disjunkte Datenräume. 14 In der folgenden Abbildung 2 ist der gesamte zweidimensionale Datenraum in insgesamt sechs disjunkte zweidimensionale Buckets unterteilt. Abbildung 2: Buckets in einem LSD-Baum Quelle: [Henrich 94] S Vgl. [Här, Rahm 01] S Vgl. [Hen, Six, Wid 89] S. 2, Kapitel 2.1 4

12 Robert Trögl, Thema 1: Distance Scan Die zugrunde liegende Aufteilung wird im Directory-Baum verwaltet. Im Gegensatz zum k-d- Baum kann nicht nur die Split-Position, sondern auch die Split-Dimension frei gewählt werden. 15 Jeder Split kann somit optimal für die zu verwaltenden Daten durchgeführt werden. Der Directory-Baum in der folgenden Abbildung 3 entsteht genauso, wie zuvor für den heterogenen k-d-baum beschrieben. Durch den Überlauf der Buckets muss eine Teilung erfolgen. Diese Splits werden im Directory-Baum gespeichert. Abbildung 3: Der LSD-Baum für die Datenraumunterteilung in Abbildung 2 Quelle: [Henrich 94] S Split-Strategien Ein Split muss erfolgen, wenn ein Bucket überläuft. Bei datenabhängigen Split-Strategien werden die aktuell im Bucket befindlichen Elemente betrachtet und auf dieser Basis die Split- Position und Dimension bestimmt. Nachteil davon ist, dass die Reihenfolge, in der die Objekte eingefügt werden die Splits beeinflusst. Dies ist problematisch, wenn die noch folgenden Elemente gänzlich andere Eigenschaften haben als die Elemente im Bucket zum Zeitpunkt des Splits. 16 Bei verteilungsabhängigen Split-Strategien erfolgt die Split-Entscheidung unabhängig von den Objekten, die sich gerade im zu teilenden Bucket befinden. Es wird bereits vor dem ersten Einfügen von Elementen eine Annahme über die voraussichtliche Verteilung der Elemente getroffen. Nachteilig daran ist, dass die Split-Entscheidung nicht auf die im konkreten Einzelfall im Bucket befindlichen Elemente reagiert. Wenn die Elemente im Bucket gänzlich andere Eigenschaften als die noch folgenden Elemente haben, ist die beschriebene Strategie jedoch vorteilhaft, da die Split-Strategie in diesem Fall nicht auf völlig uncharakteristische Elemente abstellt. Die verteilungsabhängige Split-Strategie bietet sich insbesondere für große Datenmengen an, da diese eher die aufgestellten Annahmen über die Verteilung der Objekte erfüllen Vgl. [Hen, Six, Wid 89] S. 2, Kapitel Vgl. [Hen, Six, Wid 89] S. 3, Kapitel Vgl. [Hen, Six, Wid 89] S. 3, Kapitel 2.2 5

13 Robert Trögl, Thema 1: Distance Scan Besonderheit: Transformationstechnik Die Transformationstechnik (transformation technique) stellt eine Besonderheit des LSD-Baums dar. Sie ermöglicht es k-dimensionale Intervalle als 2k-dimensionale Punkte zu speichern. 18 Folglich kann ein 2-dimensionales Rechteck als 4-dimensionaler Punkt im LSD-Baum gespeichert werden. Handelt es sich dabei um das kleinste achsenparallele Rechteck, in welchem beispielsweise ein Linienobjekt ganz enthalten ist, trägt dieses Rechteck die Bezeichnung minimal bounding box (MBB) und ist in vielen Anwendungen von Bedeutung. 19 Anzumerken ist, dass die Linienobjekte in Abbildung 4 auch durch den R-Baum in Abbildung 11 verwaltet werden können. Abbildung 4: Linienobjekte Erläuterung: Die MBB für d ist in rot eingezeichnet. Weitere MBBs für Objekte sind nicht eingezeichnet. Quelle: [Hja, Sam 99] S. 271 Untersucht man Objekte auf Gleichheit, kommt man zum gleichen Ergebnis, unabhängig davon ob man die Intervalle im 1-dimensionalen Raum oder die Punkte im 2-dimensionalen Raum vergleicht. 20 Das liegt daran, dass die Transformation bijektiv ist, das heißt ein Intervall wird stets in den exakt gleichen Punkt transformiert, und ein transformierter Punkt ist aus genau einem bestimmten Intervall entstanden. Bei Bereichsanfragen (range queries) gibt es eine Besonderheit. Wenn man im 1-dimensionalen Raum untersuchen will, welche Intervalle eine Suchregion q, im 1-dimensionalen Raum ein Intervall, schneiden und die 1-dimensionalen Intervalle in 2-dimensionale Punkte transformiert sind, muss man auch die Suchregion transformieren. 21 Diese sogenannte Query-regiontransformation wird für den Übergang vom 1-dimensionalen Raum zum 2-dimensionalen Raum im Folgenden noch genauer beschrieben. Zuvor werden zwei unterschiedlich Transformationstechniken erläutert. Bei der Eckentransformation (corner-representation), werden alle oberen und unteren Grenzen im k-dimensionalen Raum als Koordinaten im 2k-dimensionalen Raum herangezogen. 22 Bei der Abbildung vom 1-dimensionalen auf den 2-dimensionalen Raum, wird somit die untere Grenze des Intervalls im 1-dimensionalen Raum als x-koordinate im 2-dimensionalen Raum und die obere Grenze des Intervalls im 1-dimensionalen Raum als y-koordinate im 2-dimensionalen Raum herangezogen. Dieser Transformationsvorgang ist in der folgenden Abbildung 5 dargestellt. 18 Vgl. [Henrich 94] S. 5, Kapitel 5 19 Vgl. [Hen, Six, Wid 89] S. 4, Kapitel 3 20 Vgl. [Hen, Six, Wid 89] S. 5, Kapitel Vgl. [Hen, Six, Wid 89] S. 5, Kapitel Vgl. [Henrich 95] S. 1, Kapitel 1 6

14 Robert Trögl, Thema 1: Distance Scan Abbildung 5: Eckentransformation Quelle: [Hen 95] S. 1 Bei der Mittentransformation (center-representation) wird der Mittelpunkt des 1-dimensionalen Intervalls zum Koordinatenwert der x-achse im 2-dimensionalen Raum und die halbe Länge des Intervalls zum Koordinatenwert der y-achse transformiert. In der folgenden Abbildung 6 ist deshalb die x-achse mit centers und die y-achse mit half extensions beschriftet. 23 Abbildung 6: Mittentransformation Quelle: [Hen 95] S. 2 Wenn man sowohl die Intervalle als auch die Suchregion (original query interval) mit Hilfe der Eckentransformation vom 1-dimensionalen in den 2-dimensionalen Raum transformiert, erhält man Punkte und eine transformierte Suchregion (transformed query region). Abbildung 7: Transformation einer Suchregion (bei Eckentransformation) Quelle: [Hen 95] S. 2 Siehe nächste Seite unter Abbildung 8 23 Vgl. [Henrich 95] S. 2, Kapitel 1 7

15 Robert Trögl, Thema 1: Distance Scan Alle Punkte, die sich in der grau hinterlegten transformierten Suchregion befinden, sind jetzt wie gefordert transformierte Intervalle, die die Suchregion q schneiden. Um dies zu überprüfen, ermittelt man aus welchem Intervall ein Punkt entstanden ist. Die weiteren Ausführungen erfolgen anhand eines Beispiels. Die Suchregion q sei das Intervall von A nach B in der Abbildung 8. Das grüne Intervall endet bei A, das schwarze Intervall beginnt vor B und geht über B hinaus. Die transformierten Punkte sind in der obigen Abbildung in der gleichen Farbe eingezeichnet. Die Koordinaten des Punktes, der aus der Transformation des grünen Intervalls entsteht, ergeben sich wie folgt: Zur Bestimmung der x-koordinate ist die untere Grenze des grünen Intervalls zu betrachten. Diese ist kleiner als die untere Grenze des Suchintervalls. Damit liegt der Punkt links vom eingezeichneten original query interval. Danach wird die y-koordinate bestimmt. Hierzu ist die obere Grenze des grünen Intervalls maßgeblich. Diese entspricht der unteren Grenze des Suchintervalls. Damit liegt der Punkt auf der untersten Senkrechten zur y-achse. Die anderen Punkte ergeben sich analog. Abbildung 8: Suchintervalle Suchintervall A B Sucht man nur Intervalle, die im Suchintervall ganz enthalten sind, wie zum Beispiel das rote Intervall, ergibt sich als transformierte Suchregion lediglich das Quadrat, auf das der Pfeil in Abbildung 7 zeigt. In der Abbildung 7 sieht man auch, dass die Punkte sich alle im oberen Dreieck befinden, da der Wert für die obere Grenze immer größer als der Wert für die untere Grenze ist. Da die Intervalle zumeist recht klein sind und damit die Koordinaten obere Grenze und untere Grenze keine besonders große Differenz aufweisen, liegen die Punkte im transformierten Raum nur knapp über der Diagonalen. 24 Wird ein Punkt transformiert, erhält man einen Punkt auf der Diagonalen. Die Mittentransformation verläuft grundsätzlich in der gleichen Art und Weise. Da das Ergebnis der Transformation allerdings kein Rechteck ist, ist die Eckentransformation vorzuziehen R-Bäume Der R-Baum wurde ebenfalls für mehrdimensionale Daten entwickelt und ist wie der B-Baum ein balancierter Baum. Er weist folgende Eigenschaften auf: 26 Jeder Knoten, außer der Wurzel, hat zwischen m und M Einträge, wobei m M/2. Der genaue Wert von m kann folglich variiert werden. Jeder innere Knoten, außer der Wurzel, hat zwischen m und M Nachfolger. Die Wurzel hat mindestens 2 Nachfolger, außer es gibt nur die Wurzel. Alle Blätter befinden sich auf derselben Ebene. Ein Nicht-Blattknoten enthält Einträge der Form: Bezeichner + MBB des Nachfolgerknotens. Die MBB eines Nicht-Blattknotens ist das kleinste alle MBBs der Einträge (= Nachfolgerknoten) umschließende Rechteck. Ein Blattknoten enthält Einträge der Form: Bezeichner + MBB des Objekts. Die MBB eines Blattknotens ist das kleinste alle MBBs der Objekte umschließende Rechteck. 24 Vgl. [Henrich 95] S. 2, Kapitel 1 25 Vgl. [Henrich 95] S. 3, Kapitel 3 26 Vgl. [Guttmann 84] S. 48, Kapitel 2 8

16 Robert Trögl, Thema 1: Distance Scan In Abbildung 9 enthält beispielsweise der Nicht-Blattknoten 2 die MBBs der Nachfolgerknoten 5 (links) und 6 (rechts). Die MBB des Knotens 2 ist das kleinste die MBBs der Knoten 5 und 6 umschließende Rechteck. Weiterhin ist zu erkennen, dass die MBBs im Gegensatz zu den Buckets des LSD-Baumes nicht disjunkt sind. Es überschneiden sich zum Beispiel die MBBs der Objekte 8 und 9 und damit zwangsweise auch die darin enthaltenen Objekte. Abbildung 9: MBBs von Knoten und Objekten und zugehöriger R-Baum Erläuterung: Die MBB der Wurzel ist nicht eingezeichnet. Hinweis: Die MBB der Wurzel ist in Abbildung 4 eingezeichnet. Nicht-Blattknoten 2 Quelle: zuletzt eingesehen am Algorithm for closest and distance-scan queries von A. Henrich Die folgenden Ausführungen beschreiben den Algorithmus for closest and distance-scan queries von Andreas Henrich. 27 Die Objekte im LSD-Baum aus den Abbildungen 2 und 3 sollen nach ihrem Abstand zum Punkt P (60, 35) sortiert werden. Hierzu geht der Algorithmus wie folgt vor: 1) Mit Hilfe des Directory-Baums wird zunächst das Bucket gesucht, dessen Bucketregion den Punkt P enthält. Da 60 (dim.: 1) größer als 50 ist, muss man im ersten Schritt im Baum nach rechts gehen, anschließend ist 35 (dim.: 2) kleiner als 60, so dass man nach links gehen muss. Durchläuft man den Baum bis hin zu den Blättern ergibt sich, dass P im Bucket 6 liegt. Dies bestätigt auch ein Blick auf den Datenraum. Dabei ist es Zufall, dass sich die Dimensionen im LSD-Baum wie beim k-d-baum von Ebene zu Ebene abwechseln. 2) Die Objekte in Bucket 6 werden in eine Prioritätenliste für Objekte (OPQ) eingefügt und dort nach ihrem Abstand zu P sortiert. Der geringste Abstand zum Anfrageobjekt bedeutet höchste Priorität und damit Anordnung in der Liste an erster Stelle. Danach wird der minimale Abstand von P zu einer Kante des Buckets 6 bestimmt. Hierzu müssen sämtliche Abstände berechnet werden. Kann eine Kante eines anderen Buckets nicht durch eine Gerade durch P parallel zu einer der Achsen erreicht werden, wie dies bei den Buckets 1 bis 3 und 5 möglich ist, ist die Entfernung zur nächst gelegenen Ecke des Buckets maßgeblich. Im Beispiel berechnet sich die Entfernung zu Bucket 4 wie folgt: ,18 27 Vgl. [Henrich 94] S. 2-5, Kapitel 4 9

17 Robert Trögl, Thema 1: Distance Scan Der Punkt mit der geringsten Entfernung zu P ist die rechte untere Ecke des Buckets 4. Der Berechnung liegt der Satz des Pythagoras a 2 + b 2 = c 2 für rechtwinklige Dreiecke zugrunde. Nach Berechnung aller Abstände ergibt sich folgendes: Tabelle 1: Abstände der Buckets zum Punkt P Bucket Abstand Ordnung , Folglich weist Bucket 2 den geringsten Abstand zu P auf, nämlich 5 Einheiten. Dieser Abstand wird als erster Suchabstand min festgesetzt. Die Objekte mit einem Abstand kleiner oder gleich 5, werden aus OPQ entfernt und in die Ergebnisliste eingefügt. Die Elemente in der Ergebnisliste sind damit bereits sortiert nach ihrem Abstand zu P. 3) Die Objekte in Bucket 2 werden in OPQ eingefügt. OPQ enthält demzufolge alle Objekte aus den Buckets 2 und 6, außer den Objekten mit einem Abstand min = 5. Diese liegen in Abbildung 10 im inneren weißen Kreis um P und wurden bereits im vorherigen Schritt in sortierter Reihenfolge aus OPQ entfernt und in die Ergebnisliste eingefügt. Wie man aus der Spalte Ordnung der obigen Tabelle entnehmen kann, weist Bucket 1 die zweitkleinste Entfernung zu P auf. Der Abstand 10 wird als neues min festgesetzt. Danach werden die Objekte mit einem Abstand kleiner oder gleich 10 und größer als 5 aus OPQ entfernt und in die Ergebnisliste eingefügt. Diese Elemente sind in der Abbildung 10 dunkel schraffiert. Abbildung 10: Datenraum bei der Suche mit dem Algorithmus von A. Henrich Quelle: [Henrich 94] S. 3 4) Die Objekte in Bucket 1 werden in OPQ eingefügt. Bucket 4 weist die drittkleinste Entfernung zu P auf. Damit gilt: min = 11,18. Die Objekte mit einem Abstand kleiner oder gleich 11,18 und größer als 10 werden aus OPQ entfernt und in die Ergebnisliste eingefügt. Dieses Vorgehen setzt sich fort. 10

18 Robert Trögl, Thema 1: Distance Scan Zur Realisierung des Algorithmus' werden, abgesehen von der Ergebnisliste, die zwei Prioritätenlisten OPQ für Objekte und NPQ für Verzeichnisknoten und Buckets, die später untersucht werden sollen, benötigt. OPQ wurde in den bisherigen Ausführungen bereits erläutert. NPQ ergibt sich bei der oben unter Punkt 1) dieses Kapitels beschriebenen Suche nach dem Bucket, in dem P liegt. Geht man bei dieser Suche im Directory-Baum nach links, wird das rechte Element in NPQ eingefügt und umgekehrt. Folglich werden nacheinander folgende Elemente in NPQ eingefügt: Verzeichnisknoten dim.: 2, pos.: 40, Bucket 3, Bucket 5 und Bucket 2. Die Datenregion des erstgenannten Verzeichnisknotens umfasst alle Datenräume der vollständig an die Trennlinie angrenzenden Buckets, im Beispiel somit die Datenräume der Buckets 1 und 4. Die Elemente in NPQ sind sortiert nach Ihrem Abstand zu P. Die Berechnung wurde bereits oben bei Punkt 2) erläutert. Diese Berechnung ist somit maßgeblich für die Sortierung der Objekte in NPQ. Tatsächlich wird aber zunächst nicht wie in der obigen Tabelle 1 der Abstand zu den Buckets 1 und 4 berechnet, sondern der Abstand zum Verzeichnisknoten dim.: 2, pos.: 40. Dieser beträgt 10 Einheiten. Damit sind die Elemente in folgender Reihenfolge in NPQ abgelegt: Bucket 2, dim.: 2, pos.: 40, Bucket 5, Bucket 3. In dieser Reihenfolge werden sie untersucht. Wird ein Verzeichnisknoten aus NPQ entfernt, wird eine neue Suche gestartet und immer der Sohn ausgewählt, der bei einer Verlängerung der Splitlinie auf der Seite von P liegt Der andere Sohn wird in NPQ eingefügt. In unserem Beispiel ist der Verzeichnisknoten dim.: 2, pos.: 40 in NPQ enthalten, so dass man die genannte Splitlinie verlängert und feststellt, dass Bucket 1 auf der Seite von P liegt. Bucket 4 wird folglich in NPQ eingefügt und die Objekte von Bucket 1 werden in OPQ eingefügt. Der Abstand von Bucket 4 muss an dieser Stelle neu berechnet werden. Die Berechnung wurde bereits erläutert. Im Ergebnis wird Bucket 4 vor Bucket 5 und damit an erster Stelle, in NPQ eingefügt. Damit wird Bucket 4 unmittelbar nach Bucket 1 abgearbeitet. Anschließend werden nacheinander die Objekte der Buckets 5 und 3 in OPQ eingefügt. 5. Incremental nearest neighbor algorithm (INN) 5.1. Beschreibung des Algorithmus angepasst an R-Bäume Bei Algorithmen, die eine Tiefensuche oder eine Breitensuche nutzen, ist es häufig aufwändig, nachdem man den nächsten Nachbarn gefunden hat, auch den zweitnächsten Nachbarn zu finden. Im Gegensatz zu einem Algorithmus, der eine Tiefensuche durchführt, besucht der incremental nearest neighbor algorithm (INN) von Hjaltason und Samet die Knoten nicht von Ebene zu Ebene sondern wählt aus einer Prioritätswarteschlange (Priority Queue), welches Element als nächstes untersucht werden soll. Elemente sind neben Knoten auch Objekte. Letztere werden eingefügt, wenn ein Blattknoten durchlaufen wird. Die Elemente befinden sich, sortiert nach der Entfernung zum Anfrageobjekt in der Prioritätswarteschlange. Die Entfernung zum Anfrageobjekt ist ein geometrischer Datentyp und fungiert als Schlüssel. Ein Knoten wird erst untersucht, wenn er am Anfang der Prioritätswarteschlange angekommen ist. Alle Knoten und Objekte, die näher zum Anfrageobjekt liegen, sind zu diesem Zeitpunkt bereits betrachtet worden. Der Algorithmus wird im Folgenden, angepasst an R-Bäume, beschrieben. 28 In einer Initialisierungsphase wird eine neue Prioritätswarteschlange namens PQ (von Priority Queue) erstellt. Zu Beginn des Algorithmus wird die Wurzel des R-Baums in PQ eingefügt ist. Solange PQ nicht leer ist und nicht genügend Ergebnisse vorliegen, wird das erste Element aus PQ entnommen. Dies ist das Element, mit der geringsten Entfernung zum Anfrageobjekt. 28 Vgl. [Hja, Sam 99] S. 277f., Kapitel

19 Robert Trögl, Thema 1: Distance Scan An dieser Stelle gibt es drei Alternativen: 1) Das Element ist ein Objekt oder die MBB eines Objekts. a) Die MBB eines Objekts wird mit ihrem Abstand aus PQ genommen. Wenn sich noch weitere Elemente in PQ befinden, bestimmt man die tatsächliche Entfernung des Objekts zum Anfrageobjekt. Diese ist nie kleiner als die Entfernung der MBB des Objekts zum Anfrageobjekt. Man kann auch sagen: Die tatsächliche Entfernung des Objekts ist gleich der Entfernung der MBB des Objekts oder größer. Ist die tatsächliche Entfernung des gerade gefundenen Objekts größer als die Entfernung, die das nächste Element in PQ zum Anfrageobjekt aufweist, wird das Objekt mit seiner tatsächlichen Entfernung wieder in PQ eingefügt. Es könnte sich weiterhin um den nächsten Nachbarn handeln. Ansonsten hat man den nächsten Nachbarn gefunden. Das gilt auch, wenn das nächste Element die MBB eines Objektes ist, da die tatsächliche Entfernung dieses Objekts zum Anfrageobjekt nie kleiner ist als die Entfernung seiner MBB. b) Ein Objekt wird mit seinem tatsächlichen Abstand aus PQ genommen. In diesem Fall hat man den nächsten Nachbarn gefunden, da die anderen Objekte in PQ keine geringere Entfernung zum Anfrageobjekt aufweisen können. c) Es handelt sich um das letzte Element in PQ. Das Objekt mit dem größten Abstand zum Anfrageobjekt wurde gefunden. 2) Das Element ist ein Blattknoten In den Blattknoten sind die MBBs von Objekten gespeichert. Die MBBs werden zusammen mit der Entfernung zum Anfrageobjekt in PQ eingefügt. 3) Das Element ist ein innerer Knoten In den inneren Knoten sind die MBBs von den nachfolgenden Kindknoten gespeichert. Die MBBs der Kindknoten werden zusammen mit der Entfernung zum Anfrageobjekt in PQ eingefügt. Danach wird das nächste Element aus PQ entnommen. Der Algorithmus lässt sich am besten an einem Beispiel verdeutlichen. Hierzu wird der R-Baum aus Abbildung 11 zu Grunde gelegt. Bei a bis f handelt es sich um Objekte. Es sollen die nächsten Nachbarn zum Anfrageobjekt q gefunden werden. Der Datenraum mit den Linienobjekten a bis f und dem Anfrageobjekt q findet sich in Abbildung 4 aus Abschnitt Abbildung 11: R-Baum für Linienobjekte aus Abbildung 4 Quelle: [Hja, Sam 99] S

20 Robert Trögl, Thema 1: Distance Scan Abbildung 12: Abstände der Objekte und Knoten des R-Baums zum Anfrageobjekt q Quelle: [Hja, Sam 99] S. 279 Der Algorithmus beginnt, indem R0 in PQ eingefügt wird 1) Im ersten Schritt wird R0 aus PQ genommen. Da es sich bei R0 um einen inneren Knoten handelt, kommt Alternative 3 zur Anwendung. Die MBBs der Kindknoten R1 und R2 werden zusammen mit Ihrer Entfernung in PQ eingefügt. Damit sieht PQ wie folgt aus: {(R1, 0), (R2, 0)} 2) Als Nächstes wird das Element R1 aus PQ genommen. Bei R1 handelt es sich erneut um einen inneren Knoten, so dass die MBBs der Kindknoten R3 und R4 in PQ eingefügt werden. PQ enthält jetzt folgende Elemente: {(R2, 0), (R4, 11), (R3, 13)}. Die Elemente in PQ sind nach ihrem Abstand zum Anfrageobjekt sortiert. 3) Danach wird R2 aus PQ genommen. R2 ist wiederum ein innerer Knoten, so dass die MBBs der Kindknoten R5 und R6 in PQ eingefügt werden. PQ: {(R5, 0), (R4, 11), (R3, 13), (R6, 44)}. Die Elemente in PQ sind weiterhin sortiert. 4) Im vierten Schritt wird R5 aus PQ genommen. Bei R5 handelt es sich um einen Blattknoten. In diesem sind die MBBs von Objekten, konkret [c] und [i], gespeichert. Die genannten MBBs werden in PQ eingefügt. PQ: {([i], 0), (R4, 11), (R3, 13), (R6, 44), ([c], 53)}. 5) Anschließend wird [i] aus PQ genommen. Jetzt wird der tatsächliche Abstand von i zum Anfrageobjekt ermittelt. Bisher war der Abstand der MBB von i ([i]) zum Anfrageobjekt in PQ gespeichert. Der tatsächliche Abstand von i zum Anfrageobjekt beträgt 21 und ist damit größer als der des nächsten Elements (R4 mit Abstand 11) in PQ. Folglich wird i mit seinem tatsächlichen Abstand wieder in PQ eingefügt. PQ: {(R4, 11), (R3, 13), (i, 21), (R6, 44), ([c], 53)} 6) R4 wird aus PQ genommen. Es handelt sich um einen Blattknoten mit den MBBs von Objekten. Die MBBs [d], [g] und [h] werden in PQ eingefügt. PQ: {(R3, 13), ([h], 17), (i, 21), ([d], 30), (R6, 44), ([c], 53), ([g], 74)} 7) Als Nächstes wird R3 aus PQ genommen. Es handelt sich wieder um einen Blattknoten mit den MBBs von Objekten. Die MBBs [a] und [b] werden in PQ eingefügt. PQ: {([a], 13), ([h], 17), (i, 21), ([b], 27), ([d], 30), (R6, 44), ([c], 53), ([g], 74)} 8) Danach wird [a] aus PQ genommen. Der tatsächliche Abstand des Objekts a zum Anfrageobjekt wird bestimmt. Dieser beträgt 17 und ist damit nicht größer als der von [h]. Damit wird a als der nächste Nachbar ausgegeben. PQ: {([h], 17), (i, 21), ([b], 27), ([d], 30), (R6, 44), ([c], 53), ([g], 74)} 9) Im folgenden Schritt wird [h] aus PQ genommen. Der tatsächliche Abstand von h zum Anfrageobjekt beträgt auch ist kleiner und damit nicht größer als 21, dem Abstand 13

21 Robert Trögl, Thema 1: Distance Scan des nächsten Elements in PQ. Damit ist h der zweite nächste Nachbar. In diesem Fall ist h genauso weit entfernt vom Anfrageobjekt wie das zuvor gefundene Objekt a. 10) Als letztes wird i aus PQ genommen und als drittnächster Nachbar ausgegeben. Das Objekt i befindet sich bereits mit seinem tatsächlichen Abstand in PQ, so dass es sich in jedem Fall um den dritten nächsten Nachbarn handelt. Das nächste Objekt in PQ weist im Übrigen einen größeren Abstand auf als i und ist damit auch nicht gleichwertig. Folglich lauten die nächsten Nachbarn zum Anfrageobjekt q: {(a, 17), (h, 17), (i, 21)}. 29 Eine Operation wird umso aufwändiger, je mehr Elemente sich in PQ befinden. Der ungünstigste Fall tritt ein, wenn der Abstand der Blattknoten zum Anfrageobjekt d beträgt und die Objekte einen Abstand größer als d aufweisen, da in einem solchen Fall alle Knoten und alle Objekte in PQ eingefügt werden müssen Vergleich des INN-Algorithmus mit dem Algorithmus von A. Henrich Wie oben bereits dargelegt, werden beim Algorithmus von A. Henrich die zwei Prioritätswarteschlangen OPQ und NPQ benötigt. Der zuvor im Abschnitt 5.1 beschriebene inkrementelle Algorithmus kommt dagegen mit nur einer Prioritätswarteschlange aus. Die Verwendung von zwei Prioritätswarteschlangen bewirkt dabei keine Effizienzsteigerung. 31 Ferner wird beim Algorithmus von A. Henrich bei Verzeichnisknoten in NPQ zunächst der Abstand des Anfrageobjekts zum Verzeichnisknoten berechnet, bevor in einem Nebenschritt der Abstand zu den Buckets des Verzeichnisknotens berechnet wird. Die genannten Punkte machen den Algorithmus von A. Henrich komplizierter als den incremental nearest neighbor algorithm. Die Komplexität des Algorithmus von A. Henrich wird von drei Operationen bestimmt: 1) Die Anzahl der Verzeichnisknoten und Buckets, die während eines kompletten distance scans in NPQ abgelegt werden, ist gleich der Anzahl der Buckets minus 1. Dies ist auch in unserem oben genannten Beispiel erkennbar. Zunächst befinden sich vier Elemente in NPQ. Danach wird der Verzeichnisknoten dim.: 2, pos.: 40 aus NPQ entfernt und ein Nachfolger-Element in NPQ eingefügt. 2) Alle Einträge im Verzeichnisbaum werden genau einmal durchlaufen. 3) Jedes Objekt wird genau einmal in OPQ eingefügt und wieder entfernt. 32 Geht man im obigen Beispiel zum incremental nearest neighbor algorithm davon aus, dass die Objekte im rechten Teilast aufgrund ihrer großen Entfernung zum Anfrageobjekt bei der Suche nach den drei nächsten Nachbarn nicht in Frage kommen, weil die Entfernung von R2 zum Anfrageobjekt größer ist als die Entfernung von a, b, d, g und h, muss der rechte Teilast überhaupt nicht durchsucht werden. Der Algorithmus benötigt damit weniger Operationen als der Algorithmus von A. Henrich, bei dem grundsätzlich alle Objekte einmal in OPQ eingefügt werden und der komplette Baum einmal durchlaufen werden muss. Selbst wenn man dem System interaktiv mitteilt, dass genug nächste Nachbarn gefunden wurden und den Algorithmus von A. Henrich nicht bis zum Ende durchführt, werden immer alle Objekte eines Buckets in OPQ eingefügt und damit auch solche, die sehr weit vom Anfrageobjekt entfernt liegen. In Abbildung 10 aus Abschnitt 4 sind dies zum Beispiel Objekte in Bucket 1, die nahe beim Ursprung liegen und damit definitiv nicht als nächste Nachbarn in Frage kommen. Beim incremental nearest neighbor algorithm werden genauso alle MBBs von Objekten eines Blatts des R-Baums in PQ 29 Vgl. [Hja, Sam 99] S , Kapitel 4.4 (gesamtes Beispiel) 30 Vgl. [Hja, Sam 99] S. 285, Kapitel Vgl. [Hja, Sam 99] S. 269, Kapitel 2 32 Vgl. [Henrich 94] S. 6, Kapitel 6 14

22 Robert Trögl, Thema 1: Distance Scan eingefügt. Diese Objekte weisen aber wesentliche geringere Entfernungen zueinander auf, so dass häufig kurz nacheinander mehrere Objekte als nächste Nachbarn des Anfrageobjektes ausgegeben werden können. Das Beispiel im Abschnitt 6.2 verdeutlicht dies. 6. K-nearest neighbor search in einem R-Baum (k-nn) 6.1. Beschreibung des Algorithmus Bei diesem Algorithmus, der auf Roussopoulos et al. zurückgeht und von Hjaltason und Samet modifiziert wurde, wird vor Beginn der Suche festgelegt, wie viele nächste Nachbarn, nämlich k, gefunden werden sollen. 33 Der zugrunde liegende R-Baum wird in einer Tiefensuche durchwandert. Damit kann der Algorithmus nur lokal entscheiden, welcher Knoten als nächstes zu besuchen ist. Dies stellt einen Unterschied zum im vorherigen Abschnitt beschriebenen inkrementellen Algorithmus dar, der seine Entscheidung, wie der Algorithmus fortzusetzen ist, auf Basis aller Elemente, die sich gerade in PQ befinden, trifft. 34 Zu Beginn kann eine Liste mit k Objekten, die als nächste Nachbarn in Frage kommen, erstellt werden, die NearestList genannt wird. Hierzu sucht man solange im R-Baum von der Wurzel abwärts bis man den Knoten erreicht, in dem sich das Anfrageobjekt befindet. Anschließend geht man rückwärts Richtung Wurzel, und fügt die nächsten Objekte mit ihren tatsächlichen Entfernungen zum Anfrageobjekt in die Liste ein. Mit dieser Liste kann man die Suche beginnen. Der eigentliche Suchalgorithmus benötigt als Eingabedaten: 1. Die soeben beschriebene Liste NearestList. Diese Liste hat ein Attribut für den maximalen Abstand NearestList.MaxDist. Dort wird der Abstand des Objekts aus der Liste gespeichert, das am weitesten vom Anfrageobjekt entfernt ist. Man kann den Algorithmus auch mit einer leeren Liste und damit NearestList.MaxDist beginnen. Dies hat jedoch zur Folge, dass zunächst einmal alle Objekte, die gefunden werden, zur Liste hinzugefügt werden, bis diese voll ist. Sucht man zum Beispiel die drei nächsten Nachbarn, werden die ersten drei Objekte in jedem Fall zur Liste hinzugefügt. Danach kommt es zu Ersetzungen, wenn nähere Objekte gefunden werden, da die Liste nur drei Objekte aufnehmen kann. 2. Das Anfrageobjekt, zu dem die nächsten Nachbarn gefunden werden sollen. 3. Den Knoten, mit dem die Suche beginnen soll. Als Startknoten für die Suche wird für die folgenden Ausführungen der Wurzelknoten gewählt. Je nachdem, ob man in der Tiefensuche auf einen Blattknoten oder einen inneren Knoten stößt, ist folgendes zu tun: 1) Der Knoten ist ein Blattknoten. Man untersucht für alle Objekte im Blattknoten, ob die Entfernung zum Anfrageobjekt kleiner ist als NearestList.MaxDist. Wenn dies der Fall ist, wird das Objekt zusammen mit seinem Abstand zum Anfrageobjekt zur Liste hinzugefügt. Ist die, nach dem Abstand zum Anfrageobjekt sortierte Liste, voll, kommt es zu einer Ersetzung des Objekts mit dem maximalen Abstand zum Anfrageobjekt. Das letzte Objekt in der Liste wird folglich entfernt, das neue Objekt wird an der entsprechenden Stelle in die Liste aufgenommen und das Attribut NearestList.MaxDist wird korrigiert. oder 33 Vgl. [Hja, Sam 99], S , Kapitel 5 und 5.1 (gesamter Algorithmus) 34 Vgl. [Hja, Sam 99] S. 289, Kapitel 5 15

23 Robert Trögl, Thema 1: Distance Scan 2) Der Knoten ist kein Blattknoten, sondern ein innerer Knoten. a Die Elemente im Knoten werden in eine Liste ActiveBranchList eingefügt. Die Elemente in der Liste werden nach dem Abstand zum Anfrageobjekt sortiert. und b Anschließend werden die Elemente nacheinander aus der ActiveBranchList genommen. Man beginnt somit mit dem Element, das von allen Elementen des betrachteten Knotens den geringsten Abstand zum Anfrageobjekt aufweist. Für das jeweilige Element aus der ActiveBranchList wird geprüft, ob die Entfernung kleiner ist als NearestList.MaxDist und damit das Element einen geringeren Abstand zum Anfrageobjekt aufweist, als das Objekt in NearestList mit dem größten Abstand zum Anfrageobjekt. b1) Wenn dies der Fall ist, wird der Algorithmus rekursiv für die nächsttiefere Ebene durchgeführt. Der Knoten, mit dem die Suche beginnen soll ist jetzt der, aus der ActiveBranchList entnommene, Kindknoten. oder b2) Ist dies nicht der Fall, gibt es in den folgenden Blättern keine näheren Objekte. Wenn schon der innere Knoten zu weit vom Anfrageobjekt entfernet ist, gilt dies erst recht für die Objekte in den Blattknoten. Die anderen Elemente in der ActiveBranchList auf dieser Ebene müssen nicht mehr durchsucht werden, da diese aufgrund der Sortierung der Elemente in der ActiveBranchList auch nicht mehr in Frage kommen. Es erfolgt ein Wechsel in die nächsthöhere Ebene. Wenn in der obersten Ebene, alle Elemente aus der ActiveBranchList abgearbeitet sind oder Fall 2 b2) eintritt, ist der Algorithmus beendet. Das Ergebnis sind die Objekte, die sich in NearestList befinden. Im folgenden Beispiel wird der Algorithmus zur Suche der k-nächsten Nachbarn, der als k-nn- Algorithmus bezeichnet wird, auf das obige Beispiel (Abbildung 11 und 12 aus Abschnitt 5.1) angewandt. In der NearestList befinden sich am Anfang die Objekte {(i, 21), (e, 48), (c, 53): 53} und NearestList.MaxDist beträgt somit zu Beginn 53. Als Knoten mit dem die Suche beginnen soll, wird die Wurzel R0 gewählt. An der Nummerierungstiefe erkennt man die Ebene im R-Baum. Nummerierungstiefe 3 (1.1.1 und sowie und 1.2.2) steht für eine Operation in einem Blattknoten. 1 k-nn (R0) wird ausgeführt. Die ActiveBranchList für R0 beinhaltet (R1, R2). 1.1 R1 wird aus der ActiveBranchList genommen. Die Entfernung von R1 zum Anfrageobjekt beträgt 0 und ist damit kleiner als 53. k-nn (R1) wird ausgeführt. ActiveBranchList für R1: (R4, R3) R4 wird aus der ActiveBranchList genommen. Die Entfernung von R4 zum Anfrageobjekt beträgt 11 und ist damit kleiner als 53. k-nn (R4) wird ausgeführt. Bei R4 handelt es sich um einen Blattknoten. Es muss somit geprüft werden, ob d, g oder h in die NearestList einzufügen sind. Im Ergebnis wird nur h eingefügt, da d (59) und g (81) zu weit vom Anfrageobjekt entfernt sind. NearestList: {(h, 17), (i, 21), (e, 48): 48} R3 wird aus der ActiveBranchList genommen. Die Entfernung von R3 zum Anfrageobjekt beträgt 13 und ist damit kleiner als 48. k-nn (R3) wird ausgeführt. Bei R3 handelt es sich erneut um einen Blattknoten. Es muss wiederum geprüft werden, ob a oder b in die NearestList einzufügen sind. Zunächst wird a für e eingefügt. Das Ergebnis lautet: 16

24 Robert Trögl, Thema 1: Distance Scan NearestList: {(h, 17), (a, 17), (i, 21): 21} Das Objekt b mit der Entfernung 48 wird damit nicht eingefügt. 1.2 Der Algorithmus wird eine Ebene weiter oben fortgeführt. R2 wird als letztes Element aus der ActiveBranchList dieser Ebene genommen. Die Entfernung von R2 zum Anfrageobjekt beträgt 0 und ist damit kleiner als 21. k-nn (R2) wird ausgeführt. ActiveBranchList für R2: (R5, R6) R5 wird aus der ActiveBranchList genommen. Die Entfernung von R5 zum Anfrageobjekt beträgt 0 und ist damit kleiner als 21. k-nn (R5) wird ausgeführt. Bei R5 handelt es sich um einen Blattknoten. Deshalb prüft man, ob c oder i in die NearestList einzufügen sind. Das Objekt c ist zu weit entfernt und i ist bereits in der Liste. NearestList: {(h, 17), (a, 17), (i, 21): 21} R6 wird aus der ActiveBranchList genommen. Die Entfernung von R6 zum Anfrageobjekt beträgt 44 und ist damit nicht kleiner als 21. Auf allen Ebenen wurde die jeweilige ActiveBranchList vollständig abgearbeitet. Der Algorithmus ist damit beendet. Folglich lauten die nächsten Nachbarn zum Anfrageobjekt q: {(h, 17), (a, 17), (i, 21)} Transformation in einen inkrementellen Algorithmus Wenn der im vorherigen Abschnitt beschriebene Algorithmus in einen inkrementellen Algorithmus transformiert wird, muss man die Elemente, die zwar in die ActiveBranchList eingefügt wurden, aber nicht besucht wurden, in einer zusätzlichen Liste B speichern. Mit der Hilfe von B, kann man feststellen, ob das erste Element in NearestList bereits der nächste Nachbar ist. 35 Es wird erneut mit Hilfe des R-Baum aus Abbildung 11 des Abschnitts 5.1 gesucht. Es werden jedoch folgende Entfernungswerte zu einem weiteren Anfrageobjekt x zugrunde gelegt: Tabelle 2: Abstände der Objekte und Knoten zum Anfrageobjekt x Objekt Entfernung Knoten Entfernung a 3 R1 0 b 7 R2 8 c 8 R3 0 d 11 R4 10 e 12 R5 8 f 14 R6 12 g 13 R1 0 h 15 i 18 Quelle: eigene Darstellung Die Suche beginnt erneut mit der ActiveBranchList für R0: (R1, R2). Zunächst wird R1 aus der ActiveBranchList genommen und die Suche dort fortgesetzt. In B befindet sich somit nur R2. Die ActiveBranchList für R1 lautet (R3, R4). R3 wird aus der ActiveBranchList genommen. Die Suche geht bei R3 weiter. B sieht damit wie folgt aus:{(r2, 8), (R4, 10): 8}. In R3 findet man schließlich die Objekte a und b, deren Entfernungen 3 und 7 betragen und damit kleiner sind als 8, der Entfernung des Elements in B, das die geringste Entfernung zum 35 [Hja, Sam 99] S. 295f., Kapitel

25 Robert Trögl, Thema 1: Distance Scan Anfrageobjekt aufweist. Das Attribut nach dem Doppelpunkt in B hat somit eine andere Bedeutung als NearestList.MaxDist in Abschnitt 6.1. B kann auch als Kontrollstruktur verwendet werden. 36 Dies bedeutet, dass nach der ersten erfolgreichen Suche nach einem nächsten Nachbar, das Element aus B mit dem geringsten Abstand zum Anfrageobjekt betrachtet wird. In unserem Beispiel findet man zunächst a und b in R3 und setzt die Suche anschließend bei R2, statt bei R4, fort. Über R2 und dem folgenden Blattknoten R5 findet man so schnell den drittnächsten Nachbarn c. Durch diese Modifikation muss der Baum nicht mehr in einer reinen Tiefensuche durchwandert werden. 7. Vergleich des INN-Algorithmus mit dem k-nn-algorithmus Zum Vergleich des incremental nearest neighbor algorithm (INN) mit dem k-nearest neighbor algorithm (k-nn) wurden zum einen vier verschiedene Landkarten aus der realen Welt und zum anderen beliebig generierte Daten herangezogen. 37 Auf diese Daten wurden die beiden Algorithmen zur Suche der nächsten Nachbarn angewandt. Die beliebig generierten Daten beinhalten Linien und werden im Diagramm mit R64K abgekürzt, die echten Landkarten werden mit PG abgekürzt. 38 Abbildung 13: Kumulative Ausführungszeit bei Distance Browsing Quelle: [Hja, Sam 99] S. 300, Abbildung links Zunächst wird ein Distance Browsing durchgeführt, bei dem vorab unbekannt ist, wie viele Nachbarn man benötigt. Die oberste Kurve zeigt die Zeit an, die der k-nn-algorithmus benötigt, falls er jedes Mal neu gestartet wird, sobald ein weiterer nächster Nachbar benötigt wird. Der Graph in Stufenform stellt die Messergebnisse für die Suche nach den 5, 10, 15 usw. nächsten Nachbarn dar. Bei dieser Suche sind die Kosten, um den 11. nächsten Nachbarn zu finden, gleich der Kosten, um den 15. nächsten Nachbarn zu finden. Die Ausführungszeit erhöht sich somit immer beim 6., 11., 16. usw. nächsten Nachbarn, da jeweils gleichzeitig die 10, 15 bzw. 20 nächsten Nachbarn gesucht werden. Bei diesem inkrementellen Ansatz ist der INN-Algorithmus wesentlich schneller als der k-nn-algorithmus. Der starke Anstieg der k-nn-kurven verdeutlicht dies. Aufgrund des beträchtlichen Unterschieds zu den INN-Kurven, wurde in Abbildung 13 für den k-nn-algorithmus die Darstellung der Messergebnisse auf die Echtdaten beschränkt Vgl. [Hja, Sam 99] S. 296, Kapitel Vgl. [Hja, Sam 99] S. 297, Kapitel 6 38 Vgl. [Hja, Sam 99] S. 300, Kapitel Vgl. [Hja, Sam 99] S. 301, Kapitel

26 Robert Trögl, Thema 1: Distance Scan Man kann die Suche mit dem k-nn-algorithmus noch optimieren. Sind die x nächsten Nachbarn gefunden und müssen anschließend die y nächsten Nachbarn gefunden werden (mit y > x), beginnt man bei der Entfernung des x. nächsten Nachbarn zu suchen. Die Besonderheiten, wenn der (x+1). nächste Nachbar die gleiche Entfernung zum Suchobjekt aufweist wie der x. nächste Nachbar, 40 werden für die folgenden Ausführungen ausgeklammert. Man stellt fest, dass die beschriebene Modifikation bei der Suche nach einer, absolut gesehen, nicht besonders großen Anzahl von nächsten Nachbarn sogar zu einer Verschlechterung führt. Dies liegt daran, dass jetzt für jeden Knoten neben der minimalen Entfernung auch die maximale Entfernung zum Anfrageobjekt berechnet werden muss. 41 Wenn lediglich die minimale Entfernung eines inneren Knotens zum Anfrageobjekt kleiner ist als die Entfernung des x. nächsten Nachbarn, bedeutet dies nicht, dass sich in den nachfolgenden Blättern kein Treffer, konkret ein Objekt, dass zwar nicht zu den x-nächsten Nachbarn, jedoch zu den y-nächsten Nachbarn gehört, befinden kann. Nur wenn auch die maximale Entfernung eines inneren Knotens kleiner als die Entfernung des x. nächsten Nachbarn ist, gehören alle Objekte in den nachfolgenden Blättern zu den x-nächsten Nachbarn und müssen folglich zur Feststellung der y-nächsten Nachbarn nicht mehr durchsucht werden. Anschließend wird eine k-nächste-nachbarn-suche durchgeführt, bei der die Anzahl der Ergebnisse vor Beginn der Suche bekannt ist. Dabei stellt man fest, dass auch bei dieser Suche, der INN-Algorithmus schneller ist als der k-nn-algorithmus. 42 Gleichzeitig ergibt sich, dass der INN-Algorithmus unabhängig von der Verteilung der Datenobjekte gleich gute Ergebnisse liefert, während der k-nn-algorithmus bei Echtdaten schlechtere Ergebnisse erzielt als bei künstlich generierten Daten. 8. Fazit Die Ausführungen des vorangegangenen Kapitels sowie des Kapitels 5.2 verdeutlichen bereits, dass der beschriebene, von Hjaltason und Samet modifizierte, incremental nearest neighbor algorithm die beste Wahl zur Suche nach den nächsten Nachbarn darstellt. Der Algorithmus passt insbesondere am besten zu der Ausgangsfrage: Wie kann man ein geeignetes Hotel in der Nähe des Hauptbahnhofs finden, wenn man mit dem Zug in eine fremde Stadt reist und zum Beispiel aus Bequemlichkeit möglichst nahe beim Hauptbahnhof übernachten möchte. Diese Frage wird man in den meisten Fällen intuitiv so beantworten, dass man zunächst das Hotel mit der kleinsten Entfernung zum Hauptbahnhof sucht. Falls man dieses zum Beispiel aufgrund negativer Bewertungen im Internet oder wegen eines zu hohen Preises ausschließt, sucht man das Hotel mit der zweitkleinsten Entfernung, danach das Hotel mit der drittkleinsten Entfernung usw., bis man schließlich ein geeignetes Hotel gefunden hat. Legt man sich vorab auf eine bestimmte Anzahl von Alternativen fest, die vom System angezeigt werden sollen, wie dies beim k-nn-algorithmus erforderlich ist, so ist der INN-Algorithmus immer noch schneller. Die im Abschnitt 7 beschriebene Modifikation des k-nn-algorithmus, die zum Tragen kommt, wenn man im 2. Durchgang eine größere Anzahl von nächsten Nachbarn sucht als im 1. Durchgang, ist bei der dargestellten Problemstellung nicht zielführend. Wenn die drei nächsten Nachbarn, gleichbedeutend mit den drei Hotels mit der kleinsten Entfernung zum Hauptbahnhof, kein befriedigendes Ergebnis gebracht haben, lässt man sich im nächsten Schritt zum Beispiel die sechs nächsten Nachbarn anzeigen. Da man weiterhin in der unmittelbaren Nähe des Hauptbahnhofs der besuchten Großstadt übernachten möchte, bleibt die absolute Anzahl an gesuchten nächsten Nachbarn relativ klein. Dies führt dazu, dass exakt der im Abschnitt 7 beschriebene Effekt eintritt und die Ausführungszeit des Algorithmus zunimmt. 40 Vgl. [Hja, Sam 99] S. 300f., Kapitel Vgl. [Hja, Sam 99], S. 301, Kapitel Vgl. [Hja, Sam 99], S. 304, Kapitel

27 Robert Trögl, Thema 1: Distance Scan Ein inkrementeller Algorithmus ist zudem vorteilhaft, wenn nach durchgeführter Suche einzelne Ergebnisse vom Reisenden ausgeschlossen werden, da die Nebenbedingungen nicht erfüllt sind. 43 Genau dies ist bei unserer Fragestellung häufig der Fall, wenn ein Hotel aufgrund des Preises oder der Anzahl der Sterne nicht den Bedürfnissen des Reisenden entspricht. Bei einem inkrementellen Algorithmus kann in solchen Fällen schnell eine Alternative, in Form des nächsten Hotels, gefunden werden. Da der INN-Algorithmus auf R-Bäume angewandt werden kann, ist eine Entartung des Baumes, wie sie zum Beispiel beim k-d-baum auftreten kann, ausgeschlossen. Damit ergeben sich bei der Implementierung keine größeren Schwierigkeiten, da keine komplizierten Algorithmen zur Reorganisation des Baumes benötigt werden. Zudem ist nur eine Prioritätenliste erforderlich, wodurch die Implementierung im Vergleich zum Algorithmus von A. Henrich weiter vereinfacht wird. Insgesamt gesehen erfüllt der incremental nearest neighbor algorithm alle Anforderungen für eine effektive Nächste-Nachbarn-Suche. 43 Vgl. [Güt, Behr, Xu 10], S. 4 20

28 Robert Trögl, Thema 1: Distance Scan Literaturverzeichnis [Guttmann 84] [Güting] [Güt, Behr, Xu 10] [Henrich 94] [Henrich 95] [Hen, Six, Wid 89] [Hja, Sam 99] A. Guttmann: R-trees: A dynamic index structure for spatial searching. In: Proceedings of the ACM SIGMOD Int. Conf. on Management of Data, S , Boston, R. H. Güting: Spatial Database Systems - Tutorial Notes, ohne Jahresangabe. veröffentlicht unter der URL: zuletzt eingesehen am R. H. Güting, T. Behr, J. Xu: Efficient k-nearest neighbor search on moving object trajectories. In: VLDB Journal (to appear), A. Henrich: A Distance Scan Algorithm for Spatial Access Structures. In: ACM-GIS, S , A. Henrich: Adapting the Transformation Technique to Maintain Multi- Dimensional Non-Point Objects in k-d-tree Based Access Structures. In: P. Bergougnox, K. Makki, N. Pissionu (Hrsg.), Proceedings of the 3rd ACM International Workshop oh Advances in Geographi Information Systems, ACM Press, S , Baltimore, Maryland, USA, December A. Henrich, H.-W. Six, and P. Widmayer. The LSD tree: spatial access to multidimensional point and non point objects. In: Proc. 15th International Conference on Very Large Data Bases, S , Amsterdam, G. Hjaltason, H. Samet: Distance Browsing in Spatial Databases. In: ACM Trans. Database Syst. 24, Nr. 2, S , [Schneider 04] M. Schneider: Implementierungskonzepte für Datenbanksysteme, veröffentlicht unter der URL: q=implementierungskonzepte+f%c3%bcr+datenbanksysteme&hl=de&ei =YAkOTdKqI4TCswbi3LjyDA&sa=X&oi=book_result&ct=result&resnu m=1&ved=0cdcq6aewaa#v=onepage&q&f=false zuletzt eingesehen am: [Här, Rahm 01] T. Härder, E. Rahm: Datenbanksysteme: Konzepte und Techniken der Implementierung, 2. Auflage, 2001 veröffentlicht unter der URL: =Datenbanksysteme:+Konzepte+und+Techniken+der+Implementierung++ Von+Theo+Här, Rahm 01,Erhard+Rahm&hl=de&e zuletzt eingesehen am II

29 Seminar 1912: Nächste Nachbarn Suche Thema 3: Abschätzen und ungenaue Ergebnisse Matthias Pump

30 INHALTSVERZEICHNIS 2 Inhaltsverzeichnis 1 Einführung 3 2 Kategorien 3 3 Hintergrund R-Bäume Metriken Hypersphere Voronoi Branch-and-Bound-Algorithmus MINDIST und MINMAXDIST Pruning Pseudocode Approximation Nächste Nachbarn Obere und untere Grenzen RkNN Approximation der knn Entfernungen Zusammenfassung der Approximationen RkNN-Suchalgorithmus Experimente knn-suche RkNN-Suche Auswertung der Ergebnisse knn-suche RkNN-Suche Fazit 24

31 1 EINFÜHRUNG 3 1 Einführung Nächste Nachbarn Suchen finden heutzutage in vielen Bereichen Anwendung. Detailliert werden in Abschnitt 2 ein paar Beispiele zur normalen k-nächsten Nachbarn Suche und zur inversen k-nächsten Nachbarn Suche gegeben. Hier stellt sich die Frage, ob es wichtiger ist, genaue Ergebnisse zu erhalten und dafür eine gegebenenfalls lange Wartezeit in Kauf zu nehmen, oder ob man auch mit genäherten Ergebnissen leben kann, sofern diese dann in kurzer Zeit zur Verfügung stehen. Genau dieser Frage wird auf den folgenden Seiten nachgegangen. Dabei werden zunächst im Kapitel 2 auch die Unterschiede und Ähnlichkeiten der k-nächsten Nachbarn Suche, abgekürzt knn, und der inversen k-nächsten Nachbarn Suche, abgekürzt RkNN, dargestellt. Anschließend werden in Kapitel 3 die für unsere Betrachtungen wichtigen Hintergrundinformationen und Werkzeuge beleuchtet, wie etwa Baumstrukturen, der Branch-and-Bound Algorithmus sowie die Hypersphere und Voronoi Ansätze, die in erster Linie in RkNN Suchen zum Einsatz kommen. In Kapitel 4 wird näher auf das Thema der genäherten Algorithmen eingegangen, woran sich dann Kapitel 5 mit konkreten Experimenten anschließt. In Kapitel 6 werden die Ergebnisse ausgewertet und kommentiert und der Bericht schließt in Kapitel 7 mit einem Fazit. 2 Kategorien Für die Untersuchung wurden zwei Kategorien von nächsten Nachbarn Suchen herangezogen. Zum einen die k-nächsten Nachbarn(kNN) und die inversen k-nächsten Nachbarn(RkNN). Bei den knn handelt es sich um das Problem, zu einem Anfrageobjekt die k-nächsten Nachbarn zu bestimmen. Dieses Problem findet seine Anwendung vor allem in geographischen Informationssystemen, den GIS (Geographic Information System) [Rou95] [Pap97]. Hier geht es darum, in räumlichen, häufig 3-dimensionalen Strukturen, zu einem Anfrageobjekt eine bestimmte Anzahl von nahen Objekten zu finden, etwa die nächsten 3 Tankstellen zur aktuellen Position des Fahrzeugs, in dem man sich befindet.

32 2 KATEGORIEN 4 Andere Anwendungsmöglichkeiten für die k-nächste Nachbarn Suche sind die Mustererkennung in Bildern, wenn es etwa darum geht, wie in Apples IPhoto bestimmte Gesichter auf Bildern zu identifizieren, oder die Bestimmung von Sternpositionen in der Astrophysik. Aber auch in der Informatik findet man im Bereich des maschinellen Lernens Möglichkeiten, die Nächste Nachbarn Suche anzuwenden. In all diesen Anwendungen geht es darum, dass auf traditionelle Art und Weise sehr viele erfolglose Suchanfragen abgesetzt werden müßten. Hier hat man aber Wege bzw. Datenstrukturen gefunden, die eine effektive Anordnung der Daten bieten und somit unter dem Gedanken der Performance relativ schnelle Ergebnisse bringen. Diese Strukturen, die in Kapitel 3 näher erläuterten R-Bäume, haben auch in den RkNN Suchen ihre Berechtigung. Handelt es sich bei den knn um relativ einfach formulierte Suchfunktionen, so sieht dies bei den RkNN Suchen schon komplizierter aus. RkNN stellen Suchen dar, bei denen diejenigen Objekte zurückgeliefert werden, die das Suchobjekt in der Menge ihrer k-nächsten Nachbarn haben. Es handelt sich hierbei um das Komplementärproblem zur knn, aber die Beziehung zwischen knn und RkNN ist keineswegs symmetrisch und die Anzahl der inversen k-nächsten Nachbarn ist nicht im voraus bestimmbar [EA07]. In Kapitel 3 wird etwas über die Methoden und Metriken erwähnt, mit denen RkNN Suchen bisher kategorisiert wurden. Beispiele für RkNN Suchen finden sich in der Analyse von biologischen Sequenzen [EA07], wo es darum geht, neu entdeckte biologische Sequenzen auf Originalität und Wichtigkeit zu testen. Jede neue Sequenz wird mittels RkNN Suchen dahingehend analysiert, dass existierende Sequenzdatenbanken mit einem großen Datenbestand untersucht werden und geschaut wird, ob die neu gefundene Sequenz bzw. deren Eigenschaften darin enthalten sind. Für interaktive Analysen ist es gerade in diesem Fall sehr wichtig, schnelle Resultate zu erzielen, als lange auf das perfekte Ergebnis zu warten. Weitere Anwendungsgebiete der RkNN Suche sind Abenteuerspiele auf Computern und Spielekonsolen, Verkehrsnetzwerke oder eben ganz allgemein jene Situationen, in denen die Objekte in der Datenbank metrische Abstände sind und keine Positionen von Vektoren im euklidischen Raum. Das eigentliche Problem von RkNN Suchen ist, dass zu einem gegebenen Pa-

33 3 HINTERGRUND 5 rameter k die Größe der Ergebnismenge nicht vorausgesagt werden kann. 3 Hintergrund 3.1 R-Bäume Ein R-Baum (engl. R-tree) ist eine in Datenbanksystemen verwendete räumliche dynamische Indexstruktur. Ähnlich zu einem B-Baum handelt es sich hier um eine höhenbalancierte Indexstruktur[Wik11a]. Ein R-Baum ist eine hierarchische und höhenbalancierte Datenstruktur, was bedeutet, dass alle Blattknoten auf derselben Ebene erscheinen. Ein R-Baum erlaubt die schnelle Suche in mehrdimensionalen ausgedehnten Objekten [Wik11a] und ist damit bestens geeignet für Nächste Nachbarn Anfragen. Abbildung 1: R-Baum Die Blätter enthalten die zu indizierenden räumlichen Daten in der Form (RECT,oid), wobei ein oid eine Kennzeichnung ist, die ein Objekt identifiziert

34 3 HINTERGRUND 6 und als Zeiger auf ein Datenobjekt fungiert. RECT ist ein n-dimensionales MBR (Minimal Bounding Rectangle), welches die zu betrachtenden Objekte umgibt. Die inneren Knoten enthalten Objekte der Form(RECT,p), wobei p ein Zeiger auf einen nachfolgenden Knoten in der nächsten Ebene ist. Jeder Knoten des R-Baums, egal ob innerer Knoten oder Blatt auf unterster Ebene, korrespondiert exakt zu einer oder dem Vielfachen einer Seite im Filesystem oder der Größe eines Diskblocks [Rou95]. Abbildung 2: MBR im 3D-Raum Die Leistung eines R-Baums verändert sich durch systematische Einfüge- oder Löschoperationen, so dass von Zeit zu Zeit der komplette Baum neu aufgebaut werden muss. Beispiele vergleichbarer Arbeiten basieren auf Quadtree Strukturen, gepackten R-Bäumen, R-Baum Variationen oder KD-Bäumen [Rou95], sowie RdNN- Baum und MRkNNCoP-Baum für die RkNN Suche [EA07].

35 3 HINTERGRUND Metriken Bei der Analyse der RkNN Suchen kommen zwei Ansätze zum Einsatz. Zum Einen die Hypersphere basierten Methoden, zum anderen die Voronoi basierten Methoden Hypersphere wenn die Entfernung von einem Objekt p zur Suche q kleiner ist als die 1-NN Distanz (hier ist k=1, also ist die 1-NN Distanz die Entfernung zum zum nächsten Nachbarn) von p, dann kann p zur Ergebnismenge hinzugefügt werden Baumstrukturen, die damit arbeiten: RNN RdNN MRkNNCoP

36 3 HINTERGRUND Voronoi Mit Thiessen-Polygonen bzw. Voronoi-Diagramm oder Dirichlet-Zerlegung wird eine Zerlegung des Raumes in Regionen bezeichnet, die durch eine vorgegebene Menge an Punkten des Raumes, hier als Zentren bezeichnet, bestimmt werden. Jede Region wird durch genau ein Zentrum bestimmt und umfasst alle Punkte des Raumes, die in Bezug zur euklidischen Metrik näher an dem Zentrum der Region liegen, als an jedem anderen Zentrum. Derartige Regionen werden auch als Voronoi- Regionen bezeichnet. Aus allen Punkten, die mehr als ein nächstgelegenes Zentrum besitzen und somit die Grenzen der Regionen bilden, entsteht das Voronoi- Diagramm.[Wik11b] Voronoi Methoden lassen sich nicht erweitern auf allgemeine metrische Objekte. 3.3 Branch-and-Bound-Algorithmus Zum Sortieren des R-Baums und beschneiden der die Suchobjekte umgebenden MBR werden zwei Größen benutzt, MINDIST und MINMAXDIST. Wenn man einen Punkt P betrachtet, der das gesuchte Objekt darstellt und ein Objekt O in seinem MBR. Dann stellt MINDIST die minimale Entfernung des Objekts O von P dar, MINMAXDIST ist das Minimum der maximal möglichen Entfernungen zu einer Ecke des MBR, welches O enthält. Diese Grenzen MINDIST und MINMAX- DIST werden vom Nächsten Nachbar Algorithmus zum Sortieren und kürzen des

37 3 HINTERGRUND 9 Suchpfades des R-Baums benutzt, indem durch den Algorithmus nicht benötigte MBR durch die Anwendung geeigneter Suchstrategien verworfen werden und der Algorithmus nur die relevanten MBR heranzieht, um die nächsten Nachbarn zu bestimmen. Basis der Untersuchungen ist ein MBR. Dieses Rechteck um den gegebenen Punkt P ist im euklidischen Raum durch seine zwei Endpunkte S und T der Hauptdiagonalen definiert: R = (S, T ), wobei S = [s 1, s 2,..., s n ] und T = [t 1, t 2,..., t n ] und s i t i für 1 i n ist. Abbildung 3: MINDIST und MINMAXDIST in 2D-Darstellung MINDIST und MINMAXDIST Bezogen auf einen Punkt P von einem Rechteck R ist MINDIST(P,R) definiert als n = p j r j 2, wobei r j = j=1 s j, t j, p j, p j < s j p j > t j sonst MINDIST wird benutzt, um das nächste Objekt zu P zu bestimmen, von all jenen, die im Rechteck R eingeschlossen sind. Betrachten wir unseren R-Baum für die Suche nach nächsten Nachbarn, dann muss man an jedem besuchten Knoten des R-Baums entscheiden, welches MBR als erstes untersucht wird. Der Parameter MINDIST offeriert eine erste Approximation der NN-Entfernung zu jedem MBR

38 3 HINTERGRUND 10 des Knoten und kann dafür genutzt werden, die Suchrichtung vorzugeben [Rou95], [Pap97]. Wie in [Rou95] ebenfalls dargelegt, wächst die Berechnung von MINDIST linear mit O(n). Für die Performance ist es wichtig, möglichst viele unnütze Wege zu vermeiden. Deswegen sollte es möglich sein, eine obere Grenze der NN-Entfernungen zu irgendeinem Objekt innerhalb eines MBR zu haben. Dadurch ist es möglich, MBR aus dem R-Baum zu entfernen, die eine MINDIST haben, die größer als die festgelegte obere Grenze ist. Diese obere Grenze wird MINMAXDIST genannt und sie berechnet die minimalen Werte all der maximalen Entfernungen zwischen dem Suchobjekt und den Achsen. [Pap97]: Die Definition der oberen Grenze MINMAXDIST lautet wie folgt [Rou95], Bezogen auf einen Punkt P von einem Rechteck R ist MINMAXDIST(P,R) definiert als = min( p l rm k 2 + p j rm j 2 ) mit und Pruning { s k, rm k = t k, { s j, rm j = t j, p k s k+t k 2 sonst p j s j+t j 2 sonst In [Rou95] werden drei Strategien erwähnt, mit denen die MBR, welche die Objekte umgeben, in ihrer Dimension angepasst und beschnitten werden. 1. Ein MBR M, dessen MINDIST(P,M) größer ist als die MINMAXDIST(P,M ) eines anderen MBR M wird verworfen, denn er kann nach Theorem 1 und 2 aus [Rou95] nicht den NN enthalten. Dieses Vorgehen wird im sogenannten downward pruning benutzt. 2. Die aktuelle Entfernung von P zu einem gegebenen Objekt O, die größer ist als die MINMAXDIST(P,M) für ein MBR M, kann verworfen werden, denn

39 3 HINTERGRUND 11 nach Theorem 2 aus [Rou95] enthält M ein Objekt O, welches näher zu P ist. Dieses Vorgehen wird ebenso im downward pruning benutzt. 3. Jedes MBR M mit MINDIST(P,M), welche größer ist als die aktuelle Entfernung von P zu einem gegebenen Objekt O, wird verworfen, denn nach Theorem 1, [Rou95], kann es kein Objekt enthalten, das näher als O ist. Dieses Vorgehen wird im upward pruning benutzt Pseudocode Der folgende Pseudocode wurde von Nick Roussopoulos entwickelt und in [Rou95] veröffentlicht. RECURSIVE PROCEDURE nearestneighborsearch(node, Point, Nearest) NODE Node // Current Node POINT Point // Search Point NEAREDTN Nearest // Nearest Neighbor // Local Variables NODE newnode BRANCHARRAY branchlist dist, last, i integer // At leaf Level - computer distance to actual objects If Node.type = LEAF Then For i:=1 to Node.count dist:=objectdist(point,node.branch_i,rect) if(dist<nearest.dist) Nearest.dist := dist Nearest.rect := Node.branch_i.rect // Non-leaf level-order, prune and visit nodes Else // Generate Active Branch List genbranchlist(point,node,branchlist) // Sort ABL based on ordering metric values sortbranchlist(branchlist) //Perform Downward Pruning //(may discard all branches) last = prunebranchlist(node,point,nearest,branchlist) // Iterate through the Active Branch List

40 3 HINTERGRUND 12 For i:=1 to last newnode:=node.branch_branchlist // Recursivley visit child nodes nearestneighborsearch(newnode,point,nearest) // Perform Upward Pruning last := prunebranchlist(node,point,nearest, branchlist) Der Algorithmus implementiert eine Tiefensuche. Er beginnt am Wurzelknoten und läuft den Baum hinab. Gestartet wird mit einem unendlichen Wert für die Entfernung zum nächsten Nachbarn. Beim Abstieg am Baum wird bei jedem neuen Blatt, das besucht wird, die Werte für MINDIST für alle MBRs berechnet und anschließend sortiert. Diese Liste wird an eine sogenannte Active Branch List übergeben, ABL abgekürzt. Auf diese ABL werden die oben erwähnten drei Strategien zum Beschneiden des Suchraums angewandt. Auf diese Weise werden ganze Zweige gelöscht, die sich als ungünstig erweisen würden. Die ABL wird solange durchlaufen, bis sie leer ist. Bei jeder Iteration wählt der Algorithmus den nächsten Zweig in der Liste und ruft sich rekursiv auf, mit dem Knoten als Wurzelknoten, der mit dem MBR dieses Zweiges korrespondiert. Wenn der Algorithmus auf ein Blatt und keinen Zwischenknoten mehr zugreift, wird eine spezielle Distanzfunktion für jedes Objekt aufgerufen und die kleinste Entfernung zwischen dem momentanen Wert des Nächsten und jedem berechneten Wert errechnet und anschließend der Nächste aktualisiert. Beim Ausstieg aus der Rekursion wird diese neue Annahme des Nächsten Nachbarn genommen und die Pruning Strategie 3 genommen, um alle Zweige mit MINDIST(P.M) > Nächster für alle MBR M in der ABL zu löschen. Der Code bezieht sich zwar auf den direkten nächsten Nachbarn, kann aber ohne weiteres erweitert werden auf k-nächste Nachbarn. Dazu müssen lediglich ein paar Erweiterungen vorgenommen werden. Es wird ein sortierter Puffer benötigt, der die momentan k-nächsten Nachbarn enthält Das Beschneiden der MBR wird durchgeführt für den am weitesten entfernten nächsten Nachbarn in diesem Puffer

41 4 APPROXIMATION 13 4 Approximation Da jeder Knoten des R-Baums, egal ob innerer Knoten oder Blatt auf unterster Ebene, sich auf eine Seite des Filessystems oder einen Block bezieht [Rou95], geht es bei der Einführung von oberer und unterer Grenze ganz konkret darum, die Anzahl der Zugriffe auf die Festplatten bzw. den Speicher zu begrenzen. Da die Knoten lediglich Zeigerinformationen auf die nächste Ebene enthalten, benötigen sie weniger Speicher als die Blätter auf unterster Ebene. Sie benötigen so wenig Speicher, dass sie in den Hauptspeicher eines Computers passen. Es gibt mindestens zwei Herangehensweisen zur Approximation. Die eine wird für die NN-Suche angewandt, die zweite Methode dient nur dazu, k-nächste Nachbarn zu berechnen, um dann hieraus einen M-Baum für die RkNN Suche aufzubauen. 4.1 Nächste Nachbarn Obere und untere Grenzen Die Formeln für die Grenzen werden in [Pap97] folgendermaßen durch zwei Sätze hergeleitet: Satz 1: Gegeben sei eine Menge von Punkten S im zweidimensionalen Raum. Die Problematik besteht nun darin, zu einem gegebenen Punkt P (p 1, p 2 ) S den nächsten Nachbarn (NN) zu finden, gekennzeichnet durch Q(q 1, q 2 ). Der Parameter d nn stellt dann die aktuelle euklidische Distanz zwischen den Punkten P und Q dar. Man kann d nn als den Radius eines Kreises annehmen, in dessen Mittelpunkt sich der Punkt P befindet. Die minimale Anzahl von Blatt-Seiten entspricht der Anzahl von Blattseiten, die durch den Radius des Kreises gekreuzt werden. Satz 2: Die maximale Anzahl von Blatt-Seiten, die berührt werden, ist die Anzahl von Blatt-Seiten, die der Kreis mit Mittelpunkt P und Radius d m kreuzt, wobei d m der MINMAXDIST Abstand zwischen P und der zuerst berührten Blatt- Seite ist. In [AC95] wurde eine Formel vorgestellt, die die durchschnittliche Anzahl von Nachbarn nb(ɛ, shape) eines Punktes P innerhalb der Distanz ɛ von P abschätzt,

42 4 APPROXIMATION 14

43 4 APPROXIMATION 15 wobei das Konzept der fraktalen Dimension einer Punktmenge benutzt wird. ( ) D 2 n volume(ɛ, shape) nb(ɛ, shape) = (N 1) 2 D2 ɛ D 2 volume(ɛ, rect) wo N die Datenmenge ist, D 2 is die fraktale Dimension, n ist die Dimension des Datenraums, in diesem Fall 2, und shape ist die Form, die P als ihr Zentrum hat. Da wir uns im euklidischen Raum befinden, kann man shape = circle setzen. Das führt zu nb(ɛ, circle) = ( πɛ 2 4ɛ 2 ) D 2 2 (N 1) 2 D2 ɛ D 2 Durch kürzen und vereinfachen der Gleichung erhält man: nb(ɛ, circle) = ( π) D2 (N 1) ɛ D 2 Man kann die nun erhaltene Gleichung benutzen, um die durchschnittliche Entfernung d nn eines Punktes P zu seinem nächsten Nachbarn abzuschätzen. Es wird ein ɛ gesucht, so dass nb(ɛ, circle) = 1 ist. d nn = ɛ = 1 π D 2 (N 1) Zur Berechnung von d m wird angenommen, das der NN eines Suchpunktes in der halben Entfernung zwischen MINDIST und MINMAXDIST liegt. Hierfür vergrößern wir den Parameter d nn um den Wert σ, um MINMAXDIST zu erhalten. 2 Dadurch folgt für d m d m = 1 π D 2 (N 1) + σ 2 Für die folgenden Berechnungen wird angenommen, das wir ein Fenster der Größe q q haben und wir führen eine Bereichssuche Q über den darunterliegenden Addressraum aus. Die durchschnittliche Größe jeder MBR Datenseite ist σ σ. Uns interessiert die Wahrscheinlichkeit P fetch, dass eine Datenseite während der Suche gefunden wird. Eine Datenseite wird aber nur dann gefunden, wenn, wenn das Zentrum des Fenster q q in den umgebenden Bereich fällt. Dann kann die Wahrscheinlichkeit P fetch definiert werden als: P fetch = GoodPoints AllPoints

44 4 APPROXIMATION 16 wobei GoodPoints die Anzahl von Punkten ist, die durch das größere Fenster (σ + q) (σ + q) eingeschlossen wird. AllPoints bezieht sich auf alle Punkte des Suchraums. GoodPoints läßt sich berechnen durch Gleichung 1: Daraus ergibt sich für P fetch : GoodP oints = (N 1) (σ + q) D 2 P fetch = N 1 N (σ + q)d 2 Außerdem möchten wir für unsere Abschätzungen wissen, auf wie viele Datenseiten N durchschnittlich zugegriffen wird. Die vollständige Anzahl an Datenseiten ist C avg. Da jeder Teil des Datenraums dieselbe Wahrscheinlichkeit hat, angefordert zu werden, ergibt sich für die Anzahl von Blattzugriffen eines Suchfensters der Seitenlänge q: L(q) = L(q) = N C avg (σ + q) 2 N P fetch L(q) = N 1 (σ + q) D 2 C avg C avg Abschätzung der oberen Grenze Um die obere Grenze zu berechnen, ersetzen wir q durch 2 d nn und erhalten L bound = N 1 C avg (σ + 2 d nn ) D 2 Abschätzung der unteren Grenze Um die untere Grenze zu berechnen, ersetzen wir q durch 2 d m und erhalten U bound = N 1 C avg (σ + 2 d m ) D RkNN Die Laufzeitkomplexität einer RkNN Suche liegt im Normalfall bei O(n 2 ). Dies kann reduziert werden auf O(n log n), wenn man einen Index benutzt, wie etwa den M-Baum, R-Baum oder den R*-Baum. Leider sind diese Baumstrukturen

45 4 APPROXIMATION 17 nicht unversell anwendbar, sondern in der Regel nur für euklidische Vektoren. Darum kommt für RkNN Suchen der AMRkNN Baum zum Einsatz, der den RdNN Baum durch eine Kombination aus konservativen und progressiven Approximationen erweitert. Beim Aufbau des AMRkNN Baumes werden ebenfalls knn Suchen durchgeführt, die ebenfalls approximiert werden [EA07]. Zum Aufbau der approximierten knn Werte kommt die Lineare Regression zur Hilfe. Hierdurch wird eine Formel entwickelt, anhand derer der AMRkNN Baum aufgebaut werden kann Approximation der knn Entfernungen Oberste Priorität hat die Vermeidung von Speicheroverhead und einer komplizierten Indexstruktur. Beides würde zu langen Laufzeiten führen. Also sollte unsere Modellfunktion zur Approximation möglichst kompakt sein, um eben diese Nachteile zu vermeiden. Man kann guten Gewissens annehmen, dass die Entfernungen der Nachbarn eines Objekts o gegeben sind als eine endliche Sequenz der Form NNdist(o) = nndist 1 (o), nndist 2 (o),..., nndist kmax (o) [EA07]. Diese Sequenz ist sortiert nach steigendem k. Aufgrund der Monotonie wissen wir ebenfalls, dass aus der Tatsache i < j folgt, dass nndist i (o) nndist j (o). Wir müssen nun versuchen, die diskrete Wertefolge durch irgendeine Funktion f 0 zu beschreiben, so dass f o (k) nndist k (o). Aus der Theorie der Selbstähnlichkeit [Sch91] ist bekannt, dass in den meisten Datenmengen eine Beziehung besteht zwischen der Anzahl der Objekte, die in einer willkürlichen Hypersphere eingeschlossen sind, und dem Radius dieser Sphere. Es gilt näherungsweise folgendes Potenzgesetz: encl(ɛ) ɛ d f, wo ɛ der Radius ist und encl(ɛ) die Anzahl der eingeschlossenen Objekte darstellt. d f ist die fraktale Dimension. Es kann ebenso angenommen werden, dass auch die knn Entfernung einem Potenzgesetz folgt: k nndist k (o) d f

46 4 APPROXIMATION 18 Überträgt man diese Gleichungen in ein Koordinatensystem mit logarithmischer Skala zur Basis e, dann folgt, dass man eine lineare Beziehung bekommt[sch91]: log(nndist k (o)) 1 d f log(k) Eine lineare Funktion wie diese benötigt weniger Rechenzeit als eine Funktion Abbildung 4: Beziehung zwischen k und der knn Entfernung höherer Ordnung.

47 4 APPROXIMATION 19 Die Theorie der Selbstähnlichkeit liefert uns wieder die Möglichkeit, auf bereits bewiesene Funktionen zurückzugreifen, um unsere Untersuchungen zu untermauern. Wir möchten eine klassische Regressionslinie bestimmen, die die wahren Werte von nndist k (o) mit minimalem Fehlerquadrat approximiert. Eine konventionelle Regressionslinie f o (x) = m o x + t o würde die Parameter (m o, t o ) mit minimalem Fehlerquadrat finden. k max (y k (m o log k + t o )) 2 min k=1 Diese lineare Beziehung ist die beste Approximation einer Punktmenge und es ist exakt die Approximation der knn Distanz, die wir berechnen wollen. Es müssen nur noch die Parameter (m o, t o ) berechnet werden. Aus der Theorie der linearen Regression folgt:, wo und ist. m o = ( k max k=1 y 1 k log k) k max y kmax k max k=1 log k ( k max k=1 (log k)2 ) k max ( 1 kmax k max k=1 log k)2 y = 1 k max log nndist k (o) k max k=1 1 t o = y m o k max log k k max k= Zusammenfassung der Approximationen In [EA07] wird gezeigt, wie die Approximationen zusammengefasst werden können. Die bisherigen Ausführungen bezogen sich jeweils auf ein einzelnes Objekt des Datenraums. Wenn man eine hierarchisch aufgebaute Indekstruktur benutzt, kann die Approximation auch dafür benutzt werden, irrelevante Unterbäume aus dem Baum zu entfernen. Gewöhnlicherweise ist jeder Knoten N des Index verbunden mit einer Seitenregion, die eine Menge von Objekten im Unterbaum repräsentiert, die N als Wurzel haben. Um nun den Unterbaum von N zu beschneiden, müssen wir alle knn Entfernungen von allen Objekten in diesem Unterbaum approximieren.,

48 4 APPROXIMATION 20 das heißt alle Seitenregionen. Wenn die Entfernung zwischen dem Suchobjekt q und der Seitenregion von N, die als MINDIST bezeichnet wird, größer ist als die Approximation, können wir N beschneiden und damit alle Objekte im Unterbaum von N herauswerfen. [EA07] Der Parameter MINDIST ist auch hier, wie im ersten Teil der Ausarbeitung erwähnt, eine untere Grenze für die Entfernung von q zu irgendeinem Objekt in N. In [EA07] wird gezeigt, wie obige Gleichungen für m o und t 0 modifiziert werden, um den Sprung zu schaffen von der Einzelbetrachtung hin zur Approximation aller N Objekte im Suchraum. Nachdem die Gleichungen aufgestellt und etwas umgeformt werden, erhält man und m N = Hier ist y o i k o i N ( k max k=1 yo i k kmax log k) o N i N yo i N k max kmax k=1 log k N ( k max k=1 (log k)2 ) k max ( 1 kmax k max k=1 log k)2 t N = 1 N = log nndist k(o i ) und y o i m o o i N k=1 1 k max k max k=1 y o i = 1 k max log nndist k (o i ) k max log k Durch weitere Umformung erhält man: o m N = i N ( k max k=1 yo i k log k) o i N yo i k max k=1 log k N ( k max k=1 (log k)2 ) k max ( 1 kmax k max k=1 log k)2 Um nun eine optimale Approximation für jeden Knoten N mit Kindknoten C i zu berechnen, müssen wir und v 1 = o i C i k max v 2 = y oi o i C i für jedes C i zusammenfassen. Diese beiden Werte werden nun für jeden Kindknoten C i zusätzlich abgespeichert, um die Distanz-Approximation zum Elternknoten zu berechnen. Die resultierende Index-Struktur wird AMRkNN-Baum genannt. k=1 y o i k

49 5 EXPERIMENTE RkNN-Suchalgorithmus Approximate_RkNN_query(D,q,k) // D is assumed to be organized as AMRkNN-Tree queue := new Queue; insert root of AMRkNN-Tree into queue; while not queue.isempty() N:=queue.getFirst(); if N ist node then if MINDIST(N,q) <= m_n * log k + t_n then insert all elements of N into queue; end if else // N is a point if log(dist(n,q)) <= m_n * log k + t_n then add N to result set; end if end if end while 5 Experimente 5.1 knn-suche Die durchgeführten Experimente der knn Approximation gründen sich zum Teil auf synthetische Daten als auch auf reale Daten. In [Rou95] werden als reale Daten segmentbasierte Datenfiles der Stadt Long Beach, Kalifornien und der Stadt Montgomery County genommen, diese auch in [Pap97], sowie aus Beobachtungsdaten vom IUE Satelliten der NASA. Die Beispiele bestehen aus rund Straßensegmenten, die in der Datenbank als Paar von Breiten und Längenkoordinaten gespeichert werden. Für die synthetischen Daten wurden Testdaten generiert von der Größe 1K, 2K, 4K, 8K, 16K, 32K, 64K 128K und 256K, gespeichert als Rechtecke in einem Raster von 8K mal 8K Größe. 5.2 RkNN-Suche Die Experimente zur RkNN Suche wurden auf realen Daten durchgeführt, hierzu wurden Experimente für allgemeine metrischen Daten durchgeführt. Das eine ist ein Straßennetzwerk der Stadt San Juan, Kalifornien, mit Knoten und Kanten. Die zweiten Datenmenge besteht aus Proteinsequencen, der

50 6 AUSWERTUNG DER ERGEBNISSE 22 der SWISSPORT Datenbank entnommen wurden. Für beide Datenmengen wurde ein M-Baum mit Knotengröße 4K benutzt. Außerdem wurden Experimente auf allgemeinen euklidischen Daten durchgeführt, und zwar dem SEQUOIA Datenset, ColorMoments und CoocTexture [EA07] 6 Auswertung der Ergebnisse 6.1 knn-suche Die Ergebnisse aus [Pap97]

51 6 AUSWERTUNG DER ERGEBNISSE 23 Man sieht hier sehr gut, dass die real gemessenen Werte sehr gut zwischen den approximieren Grenzen, Lower Bound und Upper Bound, liegen. 6.2 RkNN-Suche Die folgenden Grafiken zeigen die Ergebnisse aus den Experimenten, die in [EA07] durchgeführt wurden. Hier zeigt sich ganz deutlich an den gefärbten grünen Balken, dass die Experimente, die den AMRkNN Baum benutzen, deutlich schneller und mit geringerer Fehlerquote erzielt wurden, als bisherige Methoden zur Berechnung der Nächsten Nachbarn.

52 7 FAZIT 24 7 Fazit Obwohl die Ergebnisse der Experimente zur Approximation beeindruckend sind, lassen sie dennoch viel Raum für weitere Forschungen. Es gibt nur wenige Methoden und Algorithmen zur Berechnung der knn und RkNN und die mathematischen Grundlagen stützen sich allein auf die lineare Regression [Pap97] zur Berechnung der approximierenden Gleichungen. Die bisherigen Untersuchungen und Ergebnisse lassen den Schluss zu, dass es noch bessere Methoden zur Optimierung der Suchbäume gibt, vielleicht sogar ganz andere Datenstrukturen, die in der Lage sind, größere Datenpakete zu speichern und dennoch effektiv und schnell durchsucht zu werden. Dies würde bedeuten, dass im Zuge der immer stärker steigenden Datenvolumina höhere Anforderungen an Anwendungen gestellt werden, die mit Nächsten Nachbarn Algorithmen arbeiten. Mit höherem Datenvolumen sind aber für diese Anwendungen auch mehr und genauere Informationen verfügbar. Es ist darum absolut notwendig, die bestehenden Methoden weiter zu optimieren und an die steigenden Anforderungen anzupassen.

53 LITERATUR 25 Literatur [AC95] [EA07] [Pap97] A.Belussig and C.Faloutsos. Estimating the selectivity of spatial queries using the correlation fractal dimension. Proceedings of the 21th VLDB Conference, Zurich, Switzerland, P. Kröger E. Achtert, C. Böhm. Efficient reverse k-nearest neighbor estimation. 12. GI Fachtagung für Datenbanksysteme in Business, Technologie und Web, A. Papadopoulos. Performance of nearest neighbor queries in r-trees. Department of Informatics, Aristotle University, Thessaloniki, Greece, [Rou95] N. Roussopoulos. Nearest neighbor queries [Sch91] M. Schroeder. Fractals, chaos, power laws: Minutes from an infinite paradise. W.H. Freeman and company, New York, [Wik11a] Wikipedia. R-Baum [Wik11b] Wikipedia. Voronoi-Diagramm. Diagramm,

54

55 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen FernUniversität in Hagen - Seminar im Wintersemester 2010/2011 Nächste-Nachbarn-Suche Thema 5 Mehrdimensionale Umgebungen Referent: Matthias Markl

56 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Gliederung 1 Motivation Problemstellung und Zielsetzung Lösungsansätze Ansätze für exakte Nächste-Nachbarn-Suche Ansatz von Prof. Dr. Hans-Peter Kriegel et al NN-Region und die MBR Zerlegung Konstruktive Bestimmung der MBRs und Optimierung VA + -File Ansatz VA-File Ansatz Verbesserung des VA-File Ansatzes zum VA + -File Ansatz Experimentelle Evaluierung des Ansatzes Ansätze für approximative Nächste-Nachbar-Suche Einfacher progressiver Ansatz Cluster basierter Ansatz Evaluierung der Ansätze Zusammenfassung und Fazit Literaturverzeichnis... 22

57 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen 1 Motivation Eine sehr wichtige Aufgabenstellung auf dem Gebiet der multimedialen Datenbanken ist die Ähnlichkeitssuche von multimedialen Objekten wie z.b. Bilder, Texte und Videos. Üblicherweise beschreibt man diese multimedialen Inhalte mittels Dokument spezifischen Merkmalen. In Bilddatenbanken, zum Beispiel, beschreiben Farb- oder Texturmerkmale den Inhalt der Bilder. Häufig repräsentieren hoch-dimensionale Vektoren diese Merkmale und ein Distanzmaß definiert die Ähnlichkeit zwischen zwei Dokumenten. Dieses Vorgehen entspricht der Aufgabe Suche nach Punkte im Lösungsraum, welche nahe an einem Suchpunkt liegen, was wiederum einer Nächsten-Nachbar-Suche (NNS) entspricht. Da es sich bei vielen multimedialen Objekten um komplexe Objekte handelt, welche durch Merkmalsvektoren mit der Dimension größer zehn dargestellt werden, und die Ähnlichkeitsanfrage eine Basisfunktionalität eines modernen Datenbanksystems sein muss, ist es essentiell diese Datenbanken mit effizienten Algorithmen für das Lösen des Nächsten- Nachbarn Problems (NNP) in mehrdimensionalen Umgebungen zu unterstützen [1]. 2 Problemstellung und Zielsetzung Problemstellung In den vergangenen Jahren haben verschiedene Arbeiten Methoden zur effizienten Lösung des Nächsten-Nachbar Problems vorgestellt [2]. Allerdings funktionieren diese Ansätze nur in niedrig dimensionalen Räumen. Sobald die Anzahl der Merkmale und damit die Anzahl der Dimensionen der entsprechenden Vektoren ansteigt, degenerieren die Suchzeiten und die Effizienz des Verfahrens wird ungenügend [1]. Dieses Phänomen nennt man Fluch der hohen Dimensionen. Zielsetzung Ziel dieser Arbeit ist es, Algorithmen zu beschreiben, die es ermöglichen das Nächste- Nachbarn-Problem in mehrdimensionalen Umgebungen effizient zu lösen und somit den Fluch der hohen Dimensionen zu umgehen. Die dazugehörige Datenmenge soll hierbei keinerlei Annahmen oder Einschränkungen unterliegen, insbesondere sollen diese Algorithmen auch mit ungleichmäßig verteilten oder stark zusammenhängenden (Cluster) Datenmengen zu Recht kommen

58 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen 3 Lösungsansätze In diesem Abschnitt werden Lösungsansätze, die das Nächste-Nachbarn-Problem in mehrdimensionalen Umgebungen effizient lösen, erläutert und evaluiert. Hierbei unterteilt man diese Ansätze gewöhnlich in die folgenden beiden Klassen: Exakte Nächste-Nachbarn-Suche Approximative Nächste-Nachbarn-Suche Die Ansätze, die zur exakten Nächsten-Nachbarn-Suche eingesetzt werden können, werden in Abschnitt 3.1 und die Ansätze für die Approximative k-nächste-nachbarn-suche werden in Kapitel 3.2 behandelt. 3.1 Ansätze für exakte Nächste-Nachbarn-Suche Bei der exakten 1-Nächsten-Nachbarn-Suche wird genau ein Punkt NN (Nächster-Nachbar) bestimmt, der dem Suchpunkt v q am nächsten liegt, siehe Abbildung 1. Der allgemein gehaltene Begriff am nächsten liegen wird korrekt durch ein Distanzmaß z.b. euklidischer Abstand im IR 2 definiert. Mathematisch kann diese Thematik durch folgende Definition dargestellt werden: Definition (Exakte 1-Nächste-Nachbar-Suche) Geg: Vektor q D, eine Menge von Vektoren p j (0 j<n) und eine Distanzfunktion Ges: p i, so dass j: (q,p i ) (q,p j ) (d.h. (q,p i ) ist minimal) Abbildung 1: Exakte 1-Nächste-Nachbar-Suche Zwei sehr effiziente und wichtige Algorithmen werden nun in den beiden Unterabschnitten und ausführlich erläutert, siehe Tabelle 1. Die Literatur, die diese beiden Algorithmen behandelt und als Hauptquelle benutzt wird sind folgende: [1] und [3]

59 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Tabelle 1: Übersicht der Ansätze für exakte Nächste-Nachbarn-Suche Name Idee Fluch der hohen Dimensionen wird folgendermaßen überwunden Prof. Dr. Hans- Peter-Kriegel et al. (München, LMU) VA + -File (Zürich, ETH) Lösungsraum in NN-Regionen zerlegen und diese zusammen mit den Datenpunkten in einen mehrdimensionalen Index speichern. Transformation und Anpassung der Daten. Anschließend wird der VA-File Ansatz benutzt um das NNP zu lösen. Lösungsraum und nicht die Daten werden zerlegt Lösungsraum und nicht die Daten werden zerlegt Jahr der Enstehung Ca Ca Bemerkung: Diese Algorithmen aus Tabelle 1 können problemlos auf die exakte k-nns angewendet werden (siehe Abbildung 2). An der eigentlichen Idee ändert diese veränderte Anforderung nichts, nur beim abschließenden Bestimmen der exakten k-nns wird eben nicht nur der Beste NN gespeichert, sondern die besten k-nn. Im Folgenden wird mit der Bezeichnung Nächster- Nachbar (NN) auch immer die k-nächsten-nachbarn gemeint. Abbildung 2: Exakte 3-Nächste-Nachbar-Suche Ansatz von Prof. Dr. Hans-Peter Kriegel et al. Der Algorithmus von Prof. Dr. Hans-Peter-Kriegel et al. löst das Problem der Nächsten- Nachbar-Suche in mehrdimensionalen Umgebungen auf folgende Art und Weise. Zuerst wird der Lösungsraum in NN-Regionen aufgeteilt. Diese NN-Regionen, welche nach Definition genau einen Punkt beinhalten, werden in einer mehrdimensionalen Indexstruktur gespeichert ( und ). Die abschließende Nächste-Nachbar-Suche mit einem Abfragepunkt entspricht somit einer einfachen Punktsuche in dieser Indexstruktur. Obwohl die Idee auf dem Vorberechnen der Lösungsmenge basiert ist sie dennoch dynamisch, denn z.b. das Einfügen von neuen Datenpunkten ist möglich

60 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen NN-Region und die MBR Zerlegung NN-Region Wie in bereits erwähnt, besteht der erste Schritt des Ansatzes darin, die NN-Regionen des Lösungsraumes zu bestimmen. Diese NN-Regionen sind spezielle Voronoi-Diagramme [6] mit der Eigenschaft, dass die Regionen die Ordnung eins haben. Diese Einschränkung bedeutet, dass sich in jeder NN-Region (siehe Abbildung 3) genau ein Datenpunkt befindet: Definition (NN-Region, NN-Diagramm) Für jeden Punkt P DB und einer gegebenen Distanzfunktion d: IR d x IR d -> R + 0 ist die NN-Region von P folgendermaßen definiert: NN-Region(P) := {x DS (P DB\{P}): d(x,p) d(x,p )} Abbildung 3: NN-Diagramm mit der NN-Region für den Punkt P x Anschaulich bedeutet diese Definition, dass der Nächste-Nachbar für einen beliebigen Suchpunkt immer der Datenpunkt ist, welcher sich in der gleichen NN-Region befindet wie der Suchpunkt. Im Beispiel (siehe Abbildung 3) ist der Nächste-Nachbar für jeden Suchpunkt q v, welcher sich innerhalb des roten Bereichs befindet, der Punkt P x. Befindet sich der Suchpunkt auf einer Linie, dann ist sein Nächster-Nachbar nicht eindeutig und die Nächsten Nachbarn sind die Punkte aller angrenzenden NN-Regionen. Zur Bestimmung der NN-Regionen können verschiedene Algorithmen benutzt werden. Der Beste unter diesen liefert die NN-Regionen in einer Laufzeit von (n*log(n)) und verwendet den Divide and Conquer Ansatz [6]. MBR Zerlegung Obwohl diese NN-Regionen den Lösungsraum ideal und effizient aufteilen, haben sie den Nachteil, dass die Speicherung der sehr vielen Koordinaten der NN-Regionen in höher dimensionalen Räumen nicht durchführbar ist. Ziel ist es also eine Approximation dieser NN- Regionen zu bestimmen, bei der die guten Eigenschaften (ein Datenpunkt pro NN-Region) der NN-Regionen möglichst erhalten bleiben und das Speicherproblem (weniger Datenpunkte müssen gespeichert werden) verloren geht. Zur Approximierung dieser NN-Regionen wird in diesem Ansatz das Minimum Bounding Rectangle (MBR) (deutsch: Rechteck mit minimalem Umfang) vorgeschlagen und benutzt. Die MBR-Approximation für eine NN-Region wird folgendermaßen definiert: - 4 -

61 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Definition (MBR-Approximation der NN-Regionen) Die MBR Approximation Appr MBR der NN-Region (NNC) ist ein Rechteck mit minimalem Umfang MBR = (l 1, h 1,..., l d, h d ) der NNC mit i = 1,... d: l i = min{p i p NNC} und h i = max{p i p NNC} Am Besten lässt sich diese Definition an einem Beispiel erklären. Abbildung 4 zeigt das NN- Diagramm aus Abbildung 3 erweitert um die MBR Approxmation für den Punkt P x. Hierbei werden auch seine l i und h i, siehe obige Definition, angegeben, welche jeweils das Minimum und Maximum für beide Dimensionen x 1 und x 2 angeben. Abbildung 4: NN-Region und ihre dazugehörige MBR Approximation Konstruktive Bestimmung der MBRs und Optimierung Konstruktive Bestimmung der MBRs Leider liefert die Definition der MBR-Approximation keine Konstruktionsvorschrift wie man dieses gesuchte l i und h i und somit das MBR bestimmt. Dies wird erreicht, wenn man das sogenannte Lineare Problem (LP) für jede NN-Region löst. Ein lineares Problem ist immer von folgender Struktur. Eine Zielfunktion muss minimiert oder maximiert werden und wird durch mehrere Funktionen beschränkt [4]. Hier in diesem Fall ist der Umfang, also die Koordinaten von den l- und h Punkten in alle Dimensionen zu minimieren. Die beschränkenden Funktionen sind hierbei die anderen Datenpunkte mit ihren NN-Regionen und dessen Grenzen. Da für jede NN-Region jeweils das l und h für jede Dimension bestimmt werden muss und das NN-Diagramm aus N NN-Regionen besteht, müssen also 2 * d * N, mit d = Dimension und N = Anzahl NN-Regionen, LP gelöst werden. (Hier in diesem Beispiel: 2 * 2 * 10 = 40). Als effiziente Lösung ist hier beispielsweise der Simplex Algorithmus möglich [4], der die MBR-Approximation für ein NN-Diagramm berechnen kann. Ein entscheidender Nachteil dieses Algorithmuses, wie auch aller LP Algorithmen, ist aber, dass sie zur genauen Lösung alle Datenpunkte kennen müssen. Da die Anzahl dieser gewöhnlich sehr groß ist und die Effizienz dieses Algorithmen somit degenierieren würde ist ein naives Anwenden dieser Algorithmen hier nicht empfehlenswert. Besser ist es spezielle Verfahren zu benutzen, welche die Anzahl der Datenpunkte vor Anwenden des Linaren Programmierungs Algorithmus, verringert. Folgende Algorithmen stehen hierbei zur Verfügung: - 5 -

62 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Tabelle 2: Pre-Algorithmen zur temporären Minimierung der Datenpunkte Name Beschreibung Punkt Alle Punkte, die in dem indizierten Rechteck enthalten sind Gebiet/Bereich Alle Punkte, die von dem indizierten Rechteck geschnitten werden NN-Richtung 2*d NN-Punkte in allen Richtungen und 2*d Punkte mit dem geringsten Abstand zu der orthogonalen Achse Abbildung 5: NN-Diagramm mit ihren MBRs Mit Hilfe eines dieser oben angegebenen Algorithmen und dem Simplex Algorithmus können die MBRs des NN-Diagramm Abbildung 3 einfach und effizient berechnet werden, siehe Abbildung 5. Leider entstehen durch diese approximativen MBRs viele Überlappungen. Noch stärker wird dies, wenn man die Anzahl der Dimensionen erhöht und einen Algorithmus von Tabelle 2 verwendet, siehe Abbildung 6: Abbildung 6: Überlappungen beim Erstellen der MBRs für die jeweiligen Algorithmen - 6 -

63 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Optimierung der MBRs Überlappungen führen dazu, dass ein Datenpunkt evtl. nicht nur einem MBR zugeordnet wird und dies führt zu einer schlechten Performance bei der abschließenden Suche. In sehr hohen Dimensionen ist es sogar möglich, dass ein Datenpunkt dann in allen MBRs zu finden ist und somit ist der Algorithmus nicht mehr effizient anwendbar. Deshalb müssen die MBRs so zerlegt werden, dass ihr Umfang minimiert wird. Damit die optimale Zerlegung gefunden werden kann, müsste man alle möglichen Zerlegungen durchtesten. Da dies zu lange dauern würde, wird von den Autoren folgende Heuristik vorgeschlagen: Bestimme die wichtige/abhängige Dimension jeder NN-Region und zerlege sie in diese Dimension. Ein Beispiel für diese Heuristik wird in Abbildung 7, die ausführlichen Definitionen dazu werden in [1] ausführlicher behandelt. Abbildung 7: Zerlegung eines MBR in y- und z-richtung VA + -File Ansatz Im Jahre 1997 wurde ein Ansatz vorgestellt, der das Nächste-Nachbarn-Problem in mehrdimensionalen Umgebungen effizient lösen kann. Beim Benutzen dieses Algorithmuses zeigte sich aber, dass dieses Verfahren an Effiziens verliert wenn die Daten nicht gleichmäßig verteilt sind, wie es z.b. bei geclusterten Daten vieler praktischer Probleme der Fall ist. Daher wurde der VA-File-Ansatz weiter verbessert zu dem VA + -File-Ansatz, welcher Gegenstand dieses Kapitels ist. Da zum Verständnis des VA + -File-Ansatzes die Idee des VA-File

64 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Ansatzes erforderlich ist, wird dieser ausführlich erläutert ( ). Anschließend wird in Kapitel die Verbesserung des VA-File- Ansatz zum VA + -File Ansatz erläutert. Abschließend wird in einer praktischen Evaluierung gezeigt ( ), dass der VA + -File- Ansatz bei normalen Daten viel besser ist als der VA-File-Ansatz VA-File Ansatz Idee/Vorgehensweise Der VA-File-Ansatz löst das NNP in mehrdimensionalen Umgebungen auf folgende Art und Weise. Zuerst werden aus den gegebenen Datenpunkten (originalen Vektoren) approximierte Vektoren (VAs) ermittelt. Zur Ermittlung der VAs wird der Datenraum in eine vom Benutzer vorgegebene Anzahl von Rechtecken (Benutzer gibt Gesamtanzahl der Bits an und daraus werden die Anzahl der Rechtecke in Abhängigkeit der Dimension ermittelt) zerteilt. Jedes dieser Rechtecke hat eine Bit-Approximation und somit bekommt jeder Datenpunkt, der in dieses Rechteck fällt, auch diese Bit-Approximation. Diese Bit-Approximation ist zugleich die Approximation des originalen Vektors, siehe Abbildung 8 und die dazugehörige Tabelle 3. Bezüglich der originalen Vektoren und der approximierten Vektoren müssen folgende Bemerkungen beachtet werden: Der Name VA-File kommt daher, dass die approximierten Vektoren (Vector Approximations) in einem File gespeicher werden = > VA-File Die Ordnung der beiden Vektoren (Vector Original, Vector Approximation) muss identisch sein, d.h. der originale Vektor an der Stelle x im Vector-File muss auch an der Stelle x im Approximation-File gespeichert werden Operationen wie Insert, Delete und Update, die beim Einfügen, Löschen und Verändern von gegebenen Datenpunkten erfolgen, müssen jeweils in beiden Files synchron geändert werden Die anschließende NNS mit dem VA-File wird in zwei Phasen durchgeführt. Die erste Phase ermittelt mithilfe des Approximation-Files geeignete Kandidaten indem sie ungeeignete anhand eines Kriteriums herausfiltert. In der zweiten Phase werden diese geeigneten Kandidaten anhand ihrer exakten Koordinaten aus dem Vector-File untersucht und der exakte NN ermittelt. Berechnung des VA-Files Die Berechnung des VA-Files wird nun anhand eines Beispiels erläutert, dessen Inhalt teilweise in [5] zu finden ist. Gegeben sind hierbei fünf Datenpunkte im IR 2 und gesucht sind die fünf approximierten Vektoren, welche in Tabelle 3 angegeben sind

65 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Abbildung 8: Beispielpunkte im IR 2 Tabelle 3: Originale Vektoren und ihre Approxmationen für das Beispiel aus Abbildung 8 Originaler Vektor Approximierter Vektor 1/ / / / /1 110 Durch folgenden Algorithmus (Tabelle 4) können die approximierten Vektoren ermittelt werden: Tabelle 4: Vorgehensweise beim Berechnen der Approximationen Schritt Formel Beispiel (Siehe Abb. 8) Gegeben: b = 3 (Gesamtanzahl alle Bits), d = 2 (Dimension des Datenraums) 1) Bestimme Anzahl der Bits b j, die für jede Dimension j reserviert werden müssen. Ausgangsgröße ist hierbei b, welches die Gesamtanzahl aller Bits für alle Dimensionen darstellt und vorgegeben werden muss. 2) Bestimme Anzahl der Regionen für jede Dimension : n_b j. 3) Bestimme die Trennlinien so, dass jede Region bezüglich aller n_b j = 2 bj n_b 1 = 4 n_b 2 = 2 Es gibt zwei Möglichkeiten um dieses zu bestimmen: -Genaue Analyse der Daten b 1 = 2 (d.h. jede Region in der x-koordinate besteht aus 2 Bits. Wertebereich: XX mit X (0,1)) b 2 = 1 (d.h. jede Region in der y-koordinate besteht aus 1 Bit Wertebereich: X mit X (0,1)) Siehe Abbildung 8

66 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Schritt Formel Beispiel (Siehe Abb. 8) Dimensionen gleich -Stochastische Berechnungen populär verteilt ist. 4) Berechne die Approximationen a i für alle originalen Vektoren v i, i = 1... n Mit n = Anzahl der Vektoren r ij : Region in die der v ij liegt v ij fällt in die Region r ij genau dann wenn: r ij < v ij < r ij+1 5) Das VA-File ist die Konkatenierung aller approximierten Vektoren a i. Die Approximation a i ist die Verkettung der r ij : a i = r ij r ij+1 r ij+2 z.b. Vektor v 4 =13/6 (v 41 = 13, v 42 = 6) hat die Approximation a 4 = 101, denn die Koordinate der Dimension 1 ist 13 und diese fällt in die Region 2 = (10) und die Koordinate der Dimension 2 fällt in die Region 1 = (1). => r 41 = 10, r 42 = 1 => Approximation a 4 = 101 (siehe Tabelle 3) VA-File = a 1 a 2... VA-File = Ermittlung geeigneter Kandidaten (1 Phase mithilfe des Approximation-File) Um geeignete Kandidaten für den exakten Nächsten-Nachbarn zu finden, werden die Vektoren aus dem Approximation File verwendet. Für jeden Eintrag (a i ) in diesem File wird der geringste Abstand l i und der größte Abstand u i zwischen dem Suchpunkt v q und der bitapproximierten Region mithilfe einer Distanzfunktion ermittelt, siehe Abbildung 9. Falls der Abstand l i eines Vektors größer ist als der Abstand u i eines bereits geeigneten NN- Kandidaten, wird dieser eliminiert (Filterungsschritt). Dieser Vorgang wird für jeden Vektor aus dem Appoximation File durchgeführt und die verbleibenden Vektoren sind die geeigneten Kandidaten für die zweite Phase, vgl. Tabelle 5. Abbildung 9: Untere und obere Grenze eines Suchpunktes v q für die Region von a i Tabelle 5: Untersuchung des Punktes a 1 aus dem Beispiel von Abbildung 8 Schritt Beispiel a 1 siehe Abbildung 10 1) Bestimme Punkt mit niedrigstem und größten Punkt mit niedrigstem Abstand = 4/3 Abstand bezüglich des Suchpunktes q v Punkt mit größtem Abstand = 0/0 2) Berechne l i und u i (z.b. mit Hilfe des euklidischen l i = sqrt((20 4) 2 + (3-3) 2 ) = 16 Abstandes im IR 2 ) u i = sqrt((20-0) 2 + (3-0) 2 ) = 20,22 3) Bestimme ob der Vektor ein geeigneter Kandidat Da a 1 der erste untersuchte Vektor ist ist oder nicht und es noch keinen besseren gibt ist er ein geeignet Kandidat. Er wird aber vermutlich später herausgefiltert

67 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Abbildung 10: l i und u i für den Punkt v 1 Bestimmung des exakten Nächsten-Nachbarn (2 Phase mithilfe des Vector-Files) In der zweiten Phase werden die Vektoren, die in der ersten Phase ermittelt wurden, in der Reihenfolge der unteren Grenzen aufsteigend untersucht. Hierfür wird die exakte Distanz zwischen dem Vektor und dem Suchpunkt mithilfe des Vektor Files berechnet. Damit nicht die exakte Differenz zwischen allen Kandidaten und dem Suchpunkt ermittelt werden muss (viele kostenintensive I/O Zugriffe), werden nur die Kandidaten genauer untersucht, deren l i kleiner ist als die exakte Differenz zwischen dem temporär festgestellten Nächsten Nachbarn und dem Suchpunkt ist Verbesserung des VA-File Ansatzes zum VA + -File Ansatz Leider wurde in der Berechnung des VA-Files die Annahme getroffen, dass die Dimensionen unabhängig oder zumindest unkorreliert sind. Dadurch war es gerechtfertigt, dass man die Dimensionen unabhängig voneinander untersuchen kann und sie unabhängig von der Dimension in Regionen unterteilen darf, siehe Schritt 1) und 2) in Tabelle 4. In der Realität sind die Daten aber sehr oft voneinander abhängig, sehr oft sogar geclustert, siehe Abbildung 11. Da die Effizienz der ersten und zweiten Phase des VA-Files aber im wesentlich von kleinen unteren Grenzen l i (weniger Vektoren werden in der zweiten Phase untersucht) und kleinen oberen Grenzen u i (mehr Vektoren werden in der ersten Phase eliminiert) abhängt, muss vor Anwendung dieser beiden Phase eine Optimierung auf die existierende Verteilung der Regionen auf die Datenpunkte durchgeführt werden. Im VA + -File-Ansatz wird diese Optimierung durch folgende drei Schritte, die nacheinander durchgeführt werden müssen, erledigt: 1. Transformation der Daten durch KLT (Hauptkomponentenanalyse) 2. Änderung der BIT-Allokation 3. Finden von den Clusterzentren und Anpassung der Regionen (k-means-algorithmus)

68 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Auf dieses entstehende Ergebnis wird dann die erste und zweite Phase des VA-Algorithmus angewendet. In Kapitel wird dann gezeigt, dass das VA+-File-Ansatz wesentlich effizienter ist als der normale alte VA-File-Ansatz. Vorgehensweise zur Ermittlung der Regionen nach dem ursprünglichen VA-Verfahren In Abbildung 11 ist eine Zeitreihe von Aktienkursen zu sehen, welche nach dem VA-File- Ansatz in Regionen zerteilt wurden. Wie man sieht, sind sehr viele Regionen ohne Datenpunkte und vier Regionen haben sehr viele Datenpunkte. Die Anwendung der ersten und zweiten Phase des VA-File-Ansaztes würde sehr ineffizient funktionieren, da z.b. der NN des Suchpunktes q v = 30/20 eine sehr große obere Grenze hat und somit kaum Vektoren in der ersten Phase eliminiert werden würden. Abbildung 11: Datenreihe nach Anwendung des VA-File-Ansatz

69 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen 1. Transformation der Daten durch KLT (Hauptkomponentenanalyse) In Abbildung 12 ist die Zeitreihe aus Abbildung 11 zu sehen, nachdem die KLT- Transformation auf sie angewendet wurde. Diese KLT-Transformation ist einheitlich, das heißt, dass alle Winkel und Längen beibehalten werden, und ist ein sehr bekanntes Beispiel der Hauptkomponentenanalysen. Das Ziel einer Hauptkomponentenanalyse ist es, die Korrelationen zwischen den Datenpunkten zu minimieren. Eine detaillierte Beschreibung dieser speziellen Transformation würde den Rahmen dieser Arbeit sprengen, daher wird auf [7] und weiterführende Literatur verwiesen. In diesem konkreten Fall mit den Aktienkursen liefert diese Transformation unter anderem eine 45-Grad Drehung. Abbildung 12: Datenreiche nach Anwendung des ersten Schrittes des VA + -File Ansatzes

70 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen 2. Änderung der BIT-Allokation Im VA-File-Ansatz werden die gesamten Bits nach einer Formel, welche die gegebenen Daten nicht als Parameter verwendet, gleichmäßig auf die Dimension verteilt. Im VA + -File- Ansatz hingegen wird die Information über die Datenpunkte im zweiten Schritt mit einbezogen. In Abbildung 13 ist das Ergebnis, also die Änderung der Bit-Allokation zu sehen. Die x-achse hat jetzt die gesamten vier Bits bekommen (vorher zwei), während die y-achse kein Bit mehr hat (vorher zwei). Abbildung 13: Datenreihe nach Anwendung des zweiten Schrittes des VA + -File Ansatzes

71 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen 3. Finden von den Clusterzentren und Anpassung der Regionen (k-means-algorithmus) Im letzten Schritt werden die Trennlinien zwischen den Intervallen mithilfe des Lloyd- Algorithmus verschoben und optimiert (Abbildung 14). Dieser Algorithmus gehört zu den k- Means-Algorithmen und das Ziel dieser Algorithmen ist es, aus einer Menge von ähnlichen Objekten eine vorher bekannte Anzahl von k-gruppen zu bilden, die sich um das jeweilige Clusterzentrum neu bilden. Er findet sehr schnell die Zentren der geclusterten Daten und ist sehr einfach anzuwenden [8]. Bezüglich der Durchführung und Terminierung dieses Algorithmus wird wiederum wegen Platzgründen auf die angegebene Literatur verwiesen. Abbildung 14: Datenreihe nach Anwendung des dritten Schrittes des VA + -File Ansatzes Experimentelle Evaluierung des Ansatzes Die drei Schritte aus Kapitel zum Verbessern des VA-Files wurden eingesetzt um engere untere Grenzen l i und engere obere Grenzen u i zu erreichen und somit eine effizientere Durchführung der beiden Phasen zu erreichen. Erinnerung Engere obere Grenzen führen zu mehr Eliminierungen von vorhanden Vektoren und damit eine geringere Anzahl von geeigneten Kandidaten für die zweite Phase. Engere untere Grenzen führen dazu, dass eine geringere Anzahl von geeigneten Kandidaten in der zweiten Phase untersucht werden (weniger I/O Zugriffe!)

72 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Die Verbesserung des VA + -File-Ansatzes im Vergleich zum VA-File-Ansatz lässt sich schon relativ leicht stichprobenartig durch Vergleich der Abbildungen 11 und 14 zeigen. Die ganze Mächtigkeit dieser drei Transformationsschritte wird aber erst bei sehr komplexen und umfangreichen Daten ersichtlicht. Hierfür wird ein Landsat Bild mit dem VA + -File-Ansatz und VA-File-Ansatz bezüglich unterer Grenzen und Anzahl besuchter Kandidaten in der zweiten Phase verglichen, siehe Abbildung 15. Dieses zu untersuchende Bild besteht aus Vektoren, die jeweils 60 Dimensionen besitzen und die vorgegebene Gesamtanzahl von Bits beträgt 180. Auf der x-achse dieser Abbildung sind die Anzahl der zu besuchenden Kandidaten zu sehen und auf der y-achse ist der wahre Abstand der Objekte zum Suchpunkt abzulesen. Betrachtet man nun beispielsweise die beiden Schnittstellen der k = 10 Linie (mit der x- und y-achse) dann erkennt man, dass in beiden Fällen der wahre Abstand ca. 62 beträgt (Schnittstelle von k = 10 mit der y-achse). Der Schnittpunkt zur x-achse hingegen ist sehr unterschiedlich. Während er beim VA-File (links) ca beträgt, ist er beim VA + -File ca Das bedeutet, dass beim VA-File ca. 16-mal ( = 8000 / 500) soviele Kandidaten in der zweiten Phase besucht werden müssen. Dieser Unterschied ist ein enormer Performance- Unterschied und zeigt, dass das VA + -File bei realistischen Datenmengen sehr viel effizienter ist und, falls möglich, immer angewendet werden sollte. Ein weiteres Beispiel, welches unterlegt, dass die drei Verbesserungen von wichtige Performancevorteile in der ersten und zweiten Phase des VA-Algorithmus bringen, zeigt Abbildung 16. Abbildung 15: Vergleich zwischen VA-File (links) und VA + -File (rechts) bezüglich unterer Grenze und wahrem Abstand Abbildung 16: Vergleich zwischen VA-File und VA + -File bezüglich der ersten und zweiten Phase des Algorithmuses

73 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen 3.2 Ansätze für approximative Nächste-Nachbar-Suche Neben den exakten NNS-Algorithmen (siehe Kapitel 3.1) werden in dieser Arbeit auch die approximativen NNS-Ansätze beschrieben. Für ihre Existenz und Wichtigkeit sprechen zwei Gründe. Der erste ist, dass es in vielen Anwendungen aufgrund von vielen und komplexen Daten nicht sehr effizient ist, ein exaktes Ergebnis zu ermitteln (Zeit). Der zweite Grund ist, dass, die Ähnlichkeitssuche, die in vielen Anwendungen benutzt wird, den Feature-Vektor Ansatz benutzt. Die Idee des Feature-Vektors basiert auf Heuristiken, welche subjektiven Gedanken folgten, und somit nicht der 100% Wahrheit entsprechen. (Die Wahrheit jeder individuellen Person) Es entsteht also ohnehin evtl. ein kleiner Fehler und das Ergebnis der Ähnlichkeitssuche mithilfe eines exakten NNS-Algorithmus ist nicht exakt. Somit ist es sehr sinnvoll dem Benutzer in kürzerer Zeit ein sehr gutes Ergebnis mithilfe des approximativen Ansatzes zu liefern. Allgemein gibt es zwei verschiedene Klassen von approximativen Ansätzen: 1. Retrieved set reduction (dt.: Eingeschränkte Menge) 2. Retrieved information reduction (dt.: Eingeschränkte Informationen) Klasse 1 benutzt als Ausgangsbasis für die NNS nicht die gesamte Menge, sondern nur eine Teilmenge davon. Da eine Teilmenge gewöhnlich wesentlich weniger Punkte enthält, kann die Suche sehr viel schneller durchgeführt werden. Wenn die Teilmenge aber falsch ausgewählt wurde, kann es aber auch passieren, dass die Ergebnismenge sehr schlecht ist. Der zweite Ansatz hingegen schränkt die Anzahl der Dimensionen ein. Statt die z.b. 20 Dimensionen, aus denen ein Feature Vektor eines Bildes besteht, werden nur die ersten drei benutzt. Für diese geringe Anzahl von Dimensionen gibt es sehr gute und effiziente Algorithmen und Datenstrukturen. Wiederum muss man natürlich bei der Auswahl der Dimensionen aufpassen und die richtigen/wesentlichen erwischen, da ansonsten das Ergebnis sehr schlecht sein kann. Die Literatur, die in diesem Kapitel 3.2 primär benutzt wird, ist wiederum folgendes Paper: [3]. Die wesentlichen Ideen dieser Algorithmen werden in den folgenden Abschnitten erläutert. Auf die exakten ausformulierten Algorithmen und Spezialfälle wird aus Platzgründen hier nicht eingegangen Einfacher progressiver Ansatz Das Prinzip des einfachen progressiven Ansatzes ist, dass der Benutzer selbstständig und zu jeder Zeit die Abfrageberechnung stoppen kann. Dies kann gewünscht sein, wenn die Ergebnismenge gut genüg für ihn ist oder wenn keine weitere Wartezeit mehr zur Verfügung steht. Dieser einfache Ansatz kann problemlos auf die zwei oben genannten Klassen von approximativen NNS Algorithmen angewendet werden. Im Falle des retrieved set reduction heißt das, dass alle Daten einfach sequenziell durchgelaufen werden und der Abstand zum Suchpunkt gemessen wird. Der aktuelle NN nach dem Stoppen der Abfrageberechnung ist schließlich dann der approximative NN. Die Umsetzung des einfachen progressiven Ansatzes mit dem retrieved information reduction ist komplizierter und läuft in mehreren Schritten ab. Im ersten Schritt werden die originalen Feature Vektoren mittels der schon in beschriebenen KLT-Transformation in verbesserte Feature Vektoren transformiert. Jeder dieser neuen Feature Vektoren wird anschließend in s feste Teilvektoren mit fester Dimension r i zerlegt. Die Summe der Dimensionen über alle s-vektoren ergibt wieder die gesamte Dimension des Feature Vektors. Da die teuren I/O-Operationen die NNS am meisten negativ beeinträchtigen, werden nun alle korrespondierenden Teilvektoren alle Feature Vektoren jeweils gemeinsam gespeichert (dies spart Zeit beim Lesen). Nun wird bei einer Benutzerabfrage die Ähnlichkeit zwischen zwei

74 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen multimedialen Objekten im ersten Schritt nur über die Teilvektoren mit z.b. der Dimensionen r 1 durchgeführt und ein Teilergebnis erstellt. Dieser Vorgang kann mehrfach durchgeführt und jederzeit abgebrochen werden Cluster basierter Ansatz Der Cluster basierte Ansatz versucht die beiden Klassen von approximativen NNS- Algorithmen optimal zu einem einfachen und sehr effizienten Ansatz zu kombinieren. Idee Die retrieved information reduction wird hierbei dadurch erreicht, dass mittels KLT (Hauptkomponentenanalyse) die wichtigen Dimensionen der Vektoren und des Abfragepunktes bestimmt werden. Von diesen wichtigen Dimensionen werden dann r (die Anzahl r wird statistisch ermittelt) Dimensionen genommen. Die retrieved set reduction wird mittels eines modifizierten k-means-algorithmus erreicht. Dieser modifizierte Algorithmus bildet Cluster (jeder Cluster ist sozusagen eine disjunkte Teilmenge), die bzgl. der Anzahl Datenpunkte nach oben und nach unten begrenzt ist. Der Algorithmus ist so modifiziert, dass bei Überschreitung der oberen Grenze der vorhandene Cluster in zwei Cluster aufgeteilt wird. Falls die untere Grenze unterschritten werden würde, wird der Cluster einfach gelöscht. Skizze des Algorithmus 1. Mittels KLT Transformation und statistischen Verfahren werden die r wichtigen/einflussreichen Dimensionen des Abfragepunkte q v bestimmt (retrieved information reduction). 2. Anhand der Koordinaten des Abfragepunktes wird der zu untersuchende Cluster bestimmt. 3. Von allen Datenpunkten, die in diesen Cluster fallen, werden die r-dimensionen gelesen (I/O Zugriffe) und der Abstand zum Suchpunkt mithilfe der r-dimensionen und einer passenden Abstandsdefinition gemessen. 4. Alle Datenpunkte (von diesem Cluster) werden nun aufsteigend nach dem Abstand sortiert. Die ersten k-stück dieser Menge sind die k-nn und dieses erste Ergebnis wird 1-Level-Ergebnis genannt. 5. Um von dem 1-Level Ergebnis zum verbesserten 2-Level Ergebnis zu kommen usw. gibt es zwei Verbesserungsmöglichkeiten: a) retrieved information reduction wieder auflockern: Von allen Datenpunkte, die in dieses Cluster fallen, werden mehr Dimensionen gelesen => Genauigkeit der vorhandenen Punkte wird erhöht. b) retrieved set reduction wieder auflockern: Auch Punkte, die in den Nachbarclustern liegen, werden im folgenden auch untersucht. 6. Sobald eine der beiden Verbesserungsmöglichkeiten ausgewählt wurde, wird diese durchgeführt und der Algorithmus geht zurück zu Schritt 3. In Schritt 4. bekommt man dann für diesen nächsten Verbesserungsschritt die k-nn im 2-Level, 3-Level usw Evaluierung der Ansätze Neben dem einfachen progressiven Ansatz und dem Cluster basierten Ansatz, welcher in den vorherigen Abschnitten vorgestellt wurde, gibt es noch weitere approximative Ansätze. Auch diese benutzen die beiden Möglichkeiten retrieved information reduction und retrieved set

75 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen reduction und basieren auf existierenden exakten Algorithmen oder Transformationen wie z.b. KLT (siehe Kapitel 3.1). Durch umfangreiches Testen kann gezeigt werden, dass der approximative VA + -File Ansatz (VA + -File Ansatz ohne zweite Phase) alle anderen Algorithmen einschließlich des einfachen progressiven Ansatzes sowohl in der Performance als auch in Genauigkeit (k-menge der NN besteht aus sehr vielen richtigen ) um Längen schlägt. Daher wird im Folgenden nun der approximative VA + -File Ansatz mit dem Cluster basierten Ansatz aus verglichen. Hierfür werden diese Ansätze bzgl. Gesamtstrecken Verhältnis und Anzahl von False-Hit bei 10 Möglichkeiten verglichen. Ein False-Hit ist hierbei ein gefundener k-nn, der in Wirklichkeit keiner ist. Das Gegenteil wird False Dismissals genannt und das bedeutet, dass ein Punkt, der eigentlich in die k-nn Menge gehören sollte, dort fehlt. Das Ergebnis dieses Vergleiches, welcher verschiedene Arten von Bildern beinhaltet, ist in den Abbildungen 17 und 18 zu betrachten. Der wesentliche Unterschied zwischen den beiden Abbildungen ist, dass das Clusterminimum für den Cluster basierten Ansatz in der ersten Abbildung zehn und in der zweiten Abbildung 40 beträgt. Die Ergebnisse des VA + -File Ansatzes sind hingegen in beiden Abbildungen logischerweise identisch. Ein höheres Clusterminimum bedeutet immer, dass der Suchpunkt durchschnittlich in einem Cluster landet, in dem sich mehr Punkte befinden und dass die Anzahl der Cluster geringer ist. Dies hat zur Folge, dass zur Berechnung des 1-Level Ergebnisses mehr Punkte gelesen werden müssen und somit mehr teure Seiten Zugriffe statt finden. Dies führt wiederum dazu, dass es mehr passende Kandidaten gibt und für diese dann die Genauigkeit erhöht werden muss (retrieved information reduction), siehe Abbildung 17 und 18. Zusammengefasst führt das dazu, dass die Performance mit einem Clusterminimum von 10 einiges besser ist als die Performance mit einem Clusterminimum von 40. Dennoch ist in den Abbildungen auch zu erkennen, dass in beiden Fällen die Clustermethode die approximative VA+-File-Methode bei weitem übertrifft. Abbildung 17: Vergleich zwischen VA + -File und Cluster Methode (Clusterminimum 10)

76 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen Abbildung 18: Vergleich zwischen VA + -File und Cluster Methode (Clusterminimum 40)

77 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen 4 Zusammenfassung und Fazit In dieser Arbeit, welche als Hauptgrundlage die beiden Papers [1] und [3] benutzt, wurde zu Beginn gezeigt, warum es nötig ist, schnelle und robuste NNS-Algorithmen für mehrdimensionalen Umgebungen zu entwickeln. Als Hauptmotivation wurde hierbei der Feature-Vektor Ansatz, der in multimedialen Datenbanken zur Ähnlichkeitssuche meist angewendet wird, genannt. Dennoch ist es auch ansonsten lohnenswert, sich mit effizienten NNS-Algorithmen zu beschäftigen, da sie in vielen Anwendungen bereits erfolgreich eingesetzt werden. Allgemein werden diese Algorithmen in zwei Arten eingeteilt. Es gibt hierbei einmal die exakten Algorithmen, die immer den exakten oder die exakten k-nn finden. Als State of the Art Algorithmus wurde hierbei der VA + -File-Ansatz ausführlich erläutert und seine Stärke in einer praktischen Evaluation gezeigt. Die andere Klasse sind die approximativen Algorithmen, welche zwar nicht die exakten aber in sehr kurzer Zeit eine sehr gute Ergebnismenge ermitteln können. Wichtigster und effizientester Ansatz war hierbei der Cluster-basierte Ansatz, der ähnlich wie die anderen Algorithmen iterativ immer bessere Ergebnisse liefert und dessen Abbruch über ein Programm oder durch den Benutzer bestimmt wird. Seine Dominanz wurde abschließend in einer praktischen Evaluierung gezeigt. Die Empfehlung ob ein exakter oder ein approximativer Ansatz benutzt werden soll hängt aber im Wesentlichen von der Datenmenge und der Fragestellung ab. Bei einer geringen Anzahl von Daten oder bei der Fragestellung nach genau dem 1-Nächsten-Nachbarn sollte immer ein exakter Algorithmus benutzt werden. Hingegen bei sehr vielen Daten und einer großen gesuchten k-nn Menge ist ein approximativer Algorithmus sehr zu empfehlen, da die Performance damit sehr viel besser ist und die Falschen Treffer leicht in den Griff zu bekommen sind

78 Matthias Markl, Thema 5: Mehrdimensionale Umgebungen 5 Literaturverzeichnis [1] Berchtold, Stefan ; Ertl, Bernhard ; Keim, Daniel A. ; Kriegel, Hans-Peter ; Seidl, Thomas: Fast Nearest Neighbor Search in High-Dimensional Space. In: ICDE, IEEE Computer Society, ISBN , S [2] Schneider, Markus; Skript der Vorlesung Implementierungskonzepte für Datenbanksysteme ; FernUniversität Hagen; Wintersemester 2010/11 [3] Ferhatosmanoglu, Hakan ; Tuncel, Ertem ; Agrawal, Divyakant; Abbadi, Amr E.: High dimensional nearest neighbour searching. In: Inf. Syst. 31 (2006), Nr. 6, S [4] Prof. Dr. Waldemann, Karl-Heinz; Operations Research; Institut für Wirtschaftstheorie und Operations Research; Universität Karlsruhe; Oktober 2006 [5] Blott, Stephen ; Weber, Roger: A Simple Vector-Approximation File for Similarity Search in High-Dimensional Vector Spaces; Institute of Information Systems; ETH Zentrum; Zürich 1997 [6] Constantin, Jeremy; Horn, Michael; Gmeiner Björn; Voronoi Diagramm Eine Wegeplanungs-Strategie; URL: Aufgerufen am [7] KLT-Transformation; URL: Transformation; Aufgerufen am [8] K-Means-Algorithmus; URL: WIKIPEDIA: Algorithmus; Aufgerufen am

79 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken FernUniversität in Hagen Seminar im Wintersemester 2010/2011 Nächste-Nachbarn-Suche Thema 7 Nächste Nachbarn in Netzwerken Referent: Thomas Achmann

80 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite 1 Inhaltsverzeichnis 1 Einleitung Nächste Nachbarn Suche k Nächste Nachbarn (knn) k Reverse Nächste Nachbarn (RkNN) k Reverse Weiteste Nachbarn (RkFN) Voronoi Diagramme in Netzwerken Voronoi Diagramme Definition Eigenschaften Netzwerk Voronoi Diagramme (NVD) Definition Eigenschaften Nächste Nachbarn Suche in Netzwerken Verwendung von Netzwerk Voronoi Diagrammen Netzwerk Nächste Nachbarn (VN 3 ) Übersicht Filter Schritt Verfeinerungsschritt Update Funktionen Performance Reverse Nächste / Weiteste Nachbarn Suche in Netzwerken Reverse Nächste Nachbarn Algorithmus Reverse Weiteste Nachbarn Algorithmus Leistungsmerkmale Fazit Literatur Abbildungsverzeichnis... 14

81 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite 2 1 Einleitung Elektronische Navigationshilfen sind heute überall anzutreffen. Nicht nur im Auto oder im Handy werden sie zur Orientierung eingesetzt, auch in Computerprogrammen unterstützen elektronische Navigationshilfen bei der Logistikplanung oder Taxidisposition. Eine der wichtigsten Funktionen von elektronischen Navigationshilfen ist, neben der Streckenplanung, die Suche interessanter Punkte in der Umgebung abhängig vom aktuellen Standort, z.b. wo ist die nächste Tankstelle, wo könnte man übernachten oder wo steht der nächste Krankenwagen in Bezug auf den Einsatzort. Diese Funktion wird in der Informatik als Nächste Nachbarn Suche bezeichnet. Wenn eine bestimmte Anzahl von Nächste Nachbarn von Interesse ist, dann spricht man von einer k Nächsten Nachbarn Suche. Es gibt aber auch die Möglichkeit zu fragen, ob ein Objekt Nächster Nachbar eines anderen Objektes ist. In diesem Fall spricht man von einer Reverse Nächste Nachbarn Suche. Wie die Themenstellung erkennen lässt, wird in dieser Arbeit die Nächste Nachbarn Suche und deren Modifikation, die Reverse Nächste Nachbarn Suche, nicht in dieser Allgemeinheit behandelt, sondern eingeschränkt auf Netzwerke, räumliche Netzwerke. Dazu wird eine Spezialisierung von Voronoi Diagrammen verwendet, sogenannte Netzwerk Voronoi Diagramme. Deren Eigenschaften sind essentiell für die Entwicklung der Algorithmen. Eine Besonderheit sind die Algorithmen zur Reverse Nächste Nachbarn Suche in räumlichen Netzwerken, die erstmalig von [TTS09] vorgestellt werden. Zunächst erfolgt ein kurzer Überblick über die verschiedenen Typen von Nächsten Nachbarn Suche in der Informatik. Ausgehend von Voronoi Diagrammen wird anschließend das Netzwerk Voronoi Diagramm erläutert. Darauf folgt die Beschreibung von Nächste Nachbarn Suche in räumlichen Netzwerken, die verwendeten Algorithmen und deren Laufzeitmerkmale. Zum Abschluss dieser Arbeit werden die vorgestellten Verfahren beurteilt. 2 Nächste Nachbarn Suche Nächste Nachbarn Suche ist eine der vorwiegenden Anwendungen in Geografischen Informationssystemen (GIS). Eine Besonderheit besteht bei geografischen Netzwerk Datenbanken (Spatial Network Database SNDB) in der Einschränkung, dass sich die Objekte nur entlang der Netzwerkpfade bewegen können. Folglich kann bei der Nächsten Nachbarn Suche nicht die euklidische Entfernung zwischen zwei Objekten verwendet werden, vielmehr muss man die Entfernung entlang der Netzwerkkanten, über die die beiden Objekte verbunden sind, berechnen. Im Folgenden werden drei verschiedene Typen von Nächste Nachbarn Suche vorgestellt. Ein vierter Typ, die k Weiteste Nachbarn Suche (kfn), die damit eng verwandt ist, wird nicht behandelt, weil sie in den wissenschaftlichen Arbeiten, die hier zusammengefasst werden, nicht erwähnt wurde.

82 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite k Nächste Nachbarn (knn) Bei einer vorgegebenen Menge von geografischen Objekten p1,..., pn (points of interest POI) und einem Ausgangspunkt q (query point QP) sollen die k POIs bestimmt werden, die dem QP am nächsten sind. Ein Beispiel sei die Suche eines mit GPS ausgestatteten Autos nach den drei nächsten Tankstellen. Abbildung 1: k - Nächste Nachbarn (k = 3) 2.2 k Reverse Nächste Nachbarn (RkNN) Eine Anfrage als k Reverse Nächste Nachbarn ermittelt alle diejenigen POIs, zu denen der QP einer ihrer k Nächsten Nachbarn ist. Zum Beispiel werden alle die Taxis ermittelt (in diesem Fall POIs), bei denen ein bestimmter Taxistand (hier der QP, an dem eine Person nach einem Taxi ruft) zu den k Nächsten Taxiständen gehört. Diese Taxis werden dann angefragt, ob sie diesen Taxistand anfahren können. 2.3 k Reverse Weiteste Nachbarn (RkFN) Die k Reverse Weiteste Nachbarn Suche bestimmt die POIs, zu denen der QP zu den k am weitest entfernten Objekten gehört. Als Beispiel diene ein Flughafen F. Eine RkFN Anfrage bestimmt alle Flughäfen, zu denen der Flughafen F zu den k am weitest entfernten Flughäfen zählt. Abbildung 2: k - Reverse - Nächste / Weiteste Nachbarn (k = 3) 3 Voronoi Diagramme in Netzwerken Die Methoden, die in den Papern [KS04] und [TTS09] vorgestellt werden, verwenden netzwerkbasierte Voronoi Diagramme (NVD). Diese sind eine Spezialisierung der Voronoi Diagramme (VD). Voronoi Diagramme erstellt man anhand des euklidischen Abstandes zwischen Objekten. Beim NVD wird der Abstand entlang der Netzwerkkanten des zugrundeliegenden Netzwerkes bestimmt. Besonders wichtig sind die Eigenschaften der VD. Diese gelten auch für NVDs und werden verwendet, um die Laufzeiten der Algorithmen für die Nächste Nachbarn Suche zu bestimmen. Deswegen werden die Voronoi Diagramme und deren Eigenschaften hier näher erläutert. 3.1 Voronoi Diagramme Voronoi Diagramme teilen den Raum in disjunkte Voronoi Polygone (VP) auf. Jedes Voronoi Polygon wird von einem Generator Punkt (GP) bestimmt. Alle Punkte innerhalb des VP haben unter allen GPs des VD den GP dieses VPs als Nächsten Nachbarn. Die Kanten eines VP werden als Voronoi Kanten (VK) bezeichnet. Alle Punkte auf einer VK haben mehr als einen GP als Nächsten Nachbarn. Benachbarte VP haben gleiche Kanten, deren GPs heißen dann auch benachbart.

83 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite Definition Formal wird ein Voronoi Diagramm für den 2 wie folgt definiert [KS04]: Sei P = {p 1,..., p n } 2 eine Menge von Generatorpunkten mit 2 < n < und p i p j für i j mit i, j I n = {1,..., n}. Ein Region VP(p i ) = {p d(p, p i ) d (p, p j )} für alle i, j I n, wobei d(p, p i ) die den minimalen euklidischen Abstande zwischen den Punkten p und p j beschreibt, heißt Voronoi Polygon von p i. In diesem Sinne wird hier das Voronoi Polygon als Fläche mit Rand verstanden. Die Menge VD(P) = {VP (p 1 ),..., VP (p n )} heißt das von P generierte Voronoi Diagramm. Abbildung 3: Beispiel für Generator Punkte und dazugehöriges Voronoi Diagramm Ein Voronoi Diagramm stellt also eine erschöpfende Zerlegung der Ebene dar. Jeder Punkt der Ebene liegt in mindestens einem Voronoi Polygon und abgesehen von den Randpunkten liegt er genau in einem. Die Randpunkte haben zu mehreren Generatorpunkten den gleichen Abstand. Sie werden als Voronoi-Kanten bezeichnet und mehrere Kanten treffen sich in Voronoi-Knoten Eigenschaften Für das Folgende sind vier Eigenschaften des Voronoi Diagramms wichtig: 1. Die Zerlegung in ein Voronoi Diagramm ist eindeutig Für ein Menge P von Generatorpunkten gibt es nur ein einziges, wohlbestimmtes Voronoi Diagramm VD(P) 2. Der Generator Punkt, der einem beliebigen Generator Punkt p j am nächsten ist, gehört zu einem der Voronoi Polygone, die gemeinsame Kanten mit dem VP(p j ) haben. 3. Seien n die Anzahl der GP und n e die Anzahl der Kanten im VD, dann gilt: n e 3n 6 4. Weil jede Kante zu genau zwei VP gehört, folgt aus Eigenschaft 3 dass die durchschnittliche Anzahl von Kanten eines VP höchsten 6 ist: 2(3n 6) / n = 6 12 / n 6 Ein Beweis dieser Eigenschaften findet sich in [OKA00].

84 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite Netzwerk Voronoi Diagramme (NVD) Ein Netzwerk Voronoi Diagramm (siehe auch [OKA00]) ist eine Spezialisierung des Voronoi Diagramms. Die Position von Objekten ist beschränkt auf die Verbindungen zwischen den Knoten eines Graphen. Der Abstand zwischen Objekten wird als Länge des kürzesten Abstands (kürzester Pfad, kürzeste Zeit) im Netzwerk definiert, im Unterschied zum euklidischen Abstand bei Voronoi Diagrammen. Ein Beispiel für ein räumliches Netzwerk ist ein Netzwerk von Straßen. Dieses kann als gewichteter Graph dargestellt werden. In diesem werden Kreuzungen als Knoten und Straßen als Kanten abgebildet. Dabei werden die Kanten mit den Größen aus der realen Welt, wie z.b. Entfernungen, Fahrzeiten und Kosten, gewichtet Definition Die formale Definition eines Netzwerk Voronoi Diagramms (NVD) ist [KS04]: Sei G (N, L) ein gewichteter Graph mit der Knotenmenge N = {p 1,..., p n, p n+1,..., p o } und der Kantenmenge L = {l 1,..., l k }. Die ersten n Elemente aus N, also P = { p 1,..., p n } bezeichnen die Generatorpunkte. Alle o-n Nicht Generatorpunkte sind weitere Knoten des zugrundeliegenden räumlichen Netzwerkes (z.b. Kreuzungen). Der Abstand von einem Punkt p auf einer Kante aus L zu einem Knoten p i in N, d n (p, p i ), wird als kürzester Netzwerkabstand von p nach p i definiert: Außerdem sei für alle j I n \ { i } die Bezeichnung Dominanz Region von p i über p j auf Kanten in L definiert als Dom (p i, p j ) = {p p lo, d n (p, p i ) d n (p, p j )} Diese Menge enthält alle Punkte p, die auf allen Kanten in L gleich nah oder näher an p i als an p j liegen. Als Bisektor oder Randpunkte (Border points) definiert man die Menge: b(p i, p j ) = {p p lo, d n (p, p i ) = d n (p, p j )} Diese Menge enthält alle Punkte auf den Kanten, die den gleichen Abstand zu p i und p j haben. Daraus folgt die Menge der Voronoi Kanten die mit p i assoziiert werden: V Kante (p i ) = Dom (p i, p j ) j I n \ { i } V Kante (p i ) sind alle Punkte der Kanten in L, die näher an p i sind als an jedem anderen Generator Punkt. Damit wird das Netzwerk Voronoi Diagramm definiert als: NVD(P) = { V Kante (p 1 ),, V Kante (p n ) } Wie früher für das Voronoi Diagramm so ist die Zerlegung in das Netzwerk Voronoi Diagramm mit Ausnahme der Randpunkte erschöpfend und disjunkt.

85 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite 6 In Netzwerk Voronoi Diagrammen ist zu beachten, dass b eine Menge von Punkten darstellt. Da im Unterschied zum VD die Randpunkte keine Kanten sind, können sie primär auch keine Polygone bilden. Letzteres kann aber dadurch erreicht werden, dass benachbarte Randpunkte eines Generatorpunktes g verbunden werden, ohne eine Kante von L zu schneiden. Auf diese Weise kann ein g umschließendes Polygon, ein Netzwerk Voronoi Polygon ( NVP(g)) gebildet werden. Um zu verhindern, dass beim Verbinden von zwei Randpunkten eine Kante von L geschnitten wird, können zusätzliche Punkte eingefügt werden (siehe Punkt v in Abbildung 4b ). Dadurch ist eine Zerlegung in Netzwerke Voronoi Polygone nicht mehr eindeutig. Da aber Objekte nur auf Kanten des Graphen platziert werden können, ist die Zerlegung in Netzwerk Voronoi Polygone hinsichtlich ihrer Randpunkte eindeutig. Die Eigenschaften 3) und 4) bleiben weiterhin bestehen ([OKA00]) Eigenschaften Abbildung 4: Aufbau eines Netzwerk Voronoi Diagramms (NVD) Im Folgenden werden zwei weitere Eigenschaften von NVDs vorgestellt, die aus den Eigenschaften der VD (Abschnitt 3.1.2) abgeleitet sind. Sie sind von Nutzen bei der Nächsten Nachbarn Suche in NVDs. Die vier Eigenschaften des Voronoi Diagramms werden erweitert um: 5. Der zweitnächste Generatorpunkt zu einem Punkt innerhalb eines VP ist der Generatorpunkt eines benachbarten VPs. Dies ist eine Erweiterung der Eigenschaft 2). 6. Sei G = {g 1,, g k } P die Menge der ersten k Nächsten Nachbar Generatorpunkte eines Anfragepunktes q innerhalb von VP(g 1 ). Dann ist g k ein benachbarter Generatorpunkt von {G \ g k }. Das ist eine Generalisierung von Eigenschaft 5). Die folgenden Eigenschaften sind wichtig bei der Berechnung der Abstände von Randpunkten zwischen NVPs: 7. In einem VD seien (g 1,g 2 ) die Menge der ersten zwei nächsten Nachbar Generatorpunkte eines Anfragepunktes q. Der kürzeste Pfad von q nach q 2 kann nur durch die {VP(g 1 ), VP(g 2 )} gehen und somit durch die gemeinsame Voronoi Kante von {VP (g 1 ), VP(g 2 )}. 8. In einem VD seien (g 1,, g k ) die Menge der ersten k Nächsten Generatorpunkte von q. Der kürzeste Pfad von q nach g k kann nur durch eine Kombination der von diesen Punkten generierten Voronoi Polygone {VP (g 1 ),, VP(g k )} gehen. Deshalb kann dieser Pfad nur durch eine Kombination der gemeinsamen Voronoi Kanten von {VP (g 1 ),, VP(g k )} führen.

86 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite 7 9. Wenn in einem VD der kürzeste Pfad von q zu einem Generatorpunkt g k durch ein VP(g i ) führt, dann ist g i näher zu q als g k. Die Beweise dieser Eigenschaften finden sich in [KS04]. Des Weiteren sind folgende Eigenschaften für die Rerverse Nächste Nachbarn Suche nützlich: 10. In einem NVD sei g x ein Element der Menge aus RkNN(q). Dann ist die Anzahl der Generatorpunkte die näher an q x als an q sind kleiner order gleich k 1. Der Beweis dieser Eigenschaft findet sich in [TTS09]. 4 Nächste Nachbarn Suche in Netzwerken In der Vergangenheit wurden zwei unterschiedliche Ansätze verfolgt. Das eine Verfahren verwendet zur Berechnung der Entfernung zwischen zwei Objekten Grafenalgorithmen (Dijkstra). Diese werden während der Anfragebearbeitung durchlaufen, benötigen also sehr viel Rechenzeit. Optimiert wird dieses Verfahren durch den Netzwerk Expansion Algorithmus [PAP03]. Bei nur wenigen Objekten, die weitverteilt im Netzwerk liegen, müssen jedoch große Teile des Netzwerkes untersucht werden, bis Nächste Nachbarn gefunden werden. Das andere Verfahren beruht auf Indexstrukturen (M Tree, R Tree), die im Voraus zwischen einigen der Objekte oder Gruppen von Objekten im Bezug auf Referenzknoten berechnet werden. Hier wird aber als Nächste Nachbarn zu einem Anfragepunkt immer nur eine kleine Teilmenge aller Objekte bestimmt. Es muss somit eine Nachberechnung zur exakten Bestimmung der Nachbarn folgen. Leider existiert für diese Nachberechnung kein effizientes Verfahren. Nur das erste Verfahren bietet eine solche, benötigt aber keine Teilmenge der Objekte als Ausgangsmenge. Darüber hinaus können R Tree Indexstrukturen nur für euklidische Entfernungen verwendet werden und können somit in SNDBs nicht verwendet werden. Beide Ansätze sind deshalb nicht besonders geeignet, um Nächste Nachbarn in räumlichen Netzwerken zu finden. Der hier vorgestellte Ansatz zur Nächste Nachbarn Suche in Geografischen Netzwerk Datenbanken soll die folgenden Bedingungen erfüllen: 1. Entfernungen zwischen Objekten können unter Verwendung der Netzwerkverbindungen exakt berechnet werden 2. Anfragen können in Echtzeit effizient bearbeitet werden, um KNN Anfragen von bewegten Objekten zu ermöglichen 3. Skalierbarkeit, so dass die Nächste Nachbarn Suche auch auf sehr große Netzwerke angewendet werden kann 4. Unabhängigkeit von der Verteilung und der Anzahl der geografischen Objekte (POIs) 5. Anpassungsfähig in Bezug auf das Löschen oder das Hinzufügen von Kanten, Knoten oder geografischen Objekten 6. Erweiterbarkeit hinsichtlich der Verwendung von Richtungs- oder Entfernungseinschränkungen

87 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite Verwendung von Netzwerk Voronoi Diagrammen Nächste Nachbarn Suche in Netzwerken basiert auf den Eigenschaften von Netzwerk Voronoi Diagrammen und der lokalen Vorausberechnung von Netzwerkabständen für einen sehr kleinen Anteil von Nachbarknoten im Netzwerk. Die NVPs eines NVDs werden direkt zur Suche des Nächsten Nachbarn eines Anfragepunktes q in einem Netzwerk verwendet. Danach werden die weiteren Nächsten Nachbarn in einem iterativen Verfahren, das aus einem Filter- und einem Verfeinerungsschritt besteht, gefunden. Die Nachbarschaftsinformationen des NVDs werden benutzt, um eine Menge von Kandidaten von möglichen Nächste Nachbarn von q zu bilden. Mit den vorausberechneten Abständen werden dann die tatsächlichen Nächsten Nachbarn von q aus der Kandidatenmenge ermittelt. Dieses Verfahren muss k mal durchlaufen werden, um alle k Nächste Nachbarn von q zu finden. 4.2 Netzwerk Nächste Nachbarn (VN 3 ) In dem folgenden Abschnitt wird ein Algorithmus vorgestellt, mit dem eine Anfrage zur k Nächsten Nachbarn Suche in einem räumlichen Netzwerk bearbeitet wird Übersicht Der präsentierte Ansatz zur Berechnung von Voronoi Basierten Netzwerk Nächste Nachbarn Suche (VN 3 ) umfasst drei Komponenten: 1. Vorausberechnung des Lösungsraums: Es müssen für jede einzelne Menge von POI Typen (Hotels, Restaurants, Tankstellen) in einem Netzwerk die NVDs berechnet und die dazugehörigen NVPs in einer Datenbanktabelle gespeichert werden. 2. Ausnutzung von Indexstrukturen: Als erstes muss das NVP gefunden werden, dass den Anfragepunkt q enthält. Dazu wird eine räumliche Indexstruktur über die NVPs des NVDs verwendet. Mit der contains(q) Funktion kann somit schnell das NVP ermittelt werden, das q enthält und dessen Generatorpunkt der Nächste Nachbar zu q ist. 3. Vorausberechnung der genauen Abstände auf einer sehr kleinen Menge von Daten: Die für den Verfeinerungsschritt benötigten Abstände zwischen den Randpunkten werden vorausberechnet und in einer Datenbank gespeichert Filter Schritt Der Filter Schritt des Algorithmus dient dazu, eine Menge C von Kandidaten NVP für Nächste Nachbarn in Bezug zu einem Anfragepunkt q zu bestimmen. Dazu werden die ersten beiden Komponenten des Ansatzes benötigt, die Berechnung des NVD und die Erstellung von dazugehörigen Indexstrukturen. Abbildung 5: Netzwerk Voronoi Diagramm Beispiel Anhand Abbildung 5, die ein Beispiel für ein Netzwerk Voronoi Diagramm zeigt, wird im Folgenden der Filter Schritt erklärt.

88 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite 9 Aufgrund der Definition eines NVD folgt, dass zum Anfragepunkt q der erste Nächste Nachbar P 1 ist, denn NVP(P1) enthält q. Damit P 1 effizient gefunden werden kann, wird über alle NVPs eines NVD eine räumliche Indexstruktur erzeugt. Durch Aufruf der Funktion contains(q) wird das entsprechende NVP und somit dessen Generatorpunkt P 1 gefunden. Die Eigenschaft 5 von Netzwerk Voronoi Diagrammen (siehe ) fordert, dass der zweite Nächste Nachbar des Anfragepunktes q einer der Generatorpunkte der an NVP(P 1 ) angrenzenden NVPs ist. Somit umfasst die Kandidatenmenge nun C = {P 2, P 3, P 4, P 5, P 6 }. Damit die Nachbarn eines NVPs schnell gefunden werden können, wird für jedes NVP die Nachbar NVP Information in der Datenbank gespeichert. An dieser Stelle wird nun der Verfeinerungsschritt (siehe ) ausgeführt, um innerhalb der Kandidatenmenge den zweiten Nächsten Nachbarn für q zu bestimmen. Angenommen P 3 ist das Ergebnis des Verfeinerungsschrittes. Aus Eigenschaft 6 folgt, dass der dritte Nächste Nachbar von q unter den zu {P 1, P 3 } benachbarten Generatorpunkten zu finden ist. Die Kandidatenmenge ist nun C = { P 3, P 4, P 5, P 6, P 10, P 11, P 12 }. Die folgenden Nächsten Nachbarn von q werden durch iterative Wiederholung dieser Schritte gefunden Leistungsmerkmale Die Komplexität des Filterschritts des VN 3 Algorithmus wird in Bezug auf die Größe der Kandidatenmenge und die Anzahl der Festplattenzugriffe analysiert. 1. Die Größe der Kandidatenmenge: Der erste Nächste Nachbar wird durch die contains(q) Funktion auf einen R-Tree gefunden, der für die NVPs gebildet wurde. Hier erfolgt keine Abstandsberechnung. Aus der Eigenschaft 4) von VDs folgt, dass im Mittel 6 Generatorpunkte untersucht werden müssen, um den nächsten Nächsten Nachbarn zu finden. Außerdem existiert unter den Nachbarn eines jeden neuen Nächsten Nachbarn bereits ein solcher (Eigenschaft 6) ). Damit müssen nur 5 (im Mittel) der benachbarten Generatorpunkte untersucht werden, um den nächsten Nächsten Nachbarn zu ermitteln. Damit ist die Kandidatenmenge durchschnittlich (5k + 1) groß. Dies entspricht einer Komplexität von O(k). 2. Der Aufruf der contains(q) Funktion auf dem R Tree, hat eine Komplexität von O(log(n)), wobei n für die Anzahl der Generatorpunkte im Netzwerk steht. Unter Punkt 1 wurde gezeigt, dass O(k) Generatorpunkte untersucht werden müssen und es somit ebenso viele Festplattenzugriffe gibt. Die Komplexität aller Festplattenzugriffe beträgt somit O(K + log(n)) Verfeinerungsschritt Im vorigen Abschnitt wurde beschrieben, wie die Kandidatenmenge C aktualisiert wird, nachdem ein Nächster Nachbar des Anfragepunktes q gefunden wurde. Im Verfeinerungsschritt werden nun für alle Generatorpunkte der Kandidatenmenge die exakten Abstände zu q berechnet und der folgende Nächste Nachbar von q bestimmt. Der Algorithmus des Verfeinerungsschrittes basiert auf der Tatsache, dass alle Pfade, die außerhalb eines NVP beginnen und an einem Knoten des Netzwerkes im Inneren enden, durch die Randpunkte des Polygons führen. Deswegen werden im Folgenden die Randpunkte eines Objektes e mit BoP(e) bezeichnet.

89 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite 10 Alle Abstände von den Randpunkten eines NVP zu dessen Generatorpunkt werden im Voraus berechnet und in einer Tabelle gespeichert. Dies geschieht für alle NVPs eines VNDs. Wenn die Entfernung von einem Objekt außerhalb eines NVPs zu dessen Randpunkten bekannt ist, kann daraus der minimale Abstand von diesem Objekt zum Generatorpunkt des NVP bestimmt werden. Somit zerfällt die Berechnung des minimalen Abstandes von einem Anfragepunkt q zu einem Generatorpunkt in zwei Bereiche: 1. Anfragepunkt zu Randpunkt: In [KS04] wird vorgeschlagen, alle Abstände von Knoten innerhalb eines NVP zu den Randpunkten im Voraus zu berechnen (Offline Precalculation OPC) und in der Datenbank abzuspeichern. Die Alternative, bei jeder Anfrage einen komplexen Algorithmus auszuführen und dafür große Mengen an Daten aus der Datenbank anzufordern, hat eine längere Laufzeit. Die Anzahl der Abstände, die im Voraus berechnet werden müssen, ist im Verhältnis zur Berechnung aller Knoten zu Knoten Abstände gering. 2. Randpunkt zu Randpunkt: [KS04] verwendet eine optimierte Abstandsberechnung (Distance Computing Optimization DCO). Ausgehend von der Annahme, dass bereits die Generatorpunkte {g 1,, g n-1 } als (n-1) Nächste Nachbarn eines Anfragepunktes q gefunden sind, werden nur alle möglichen minimalen Netzwerkabstände von q zu allen Randpunkten BoP( = {NVP(g 1 ) NVP(g n-1 ) }) berechnet. Diese können nur durch NVPs (und deren Randpunkte) führen, wenn deren Generatorpunkte bereits als Nächste Nachbarn von q identifiziert wurden (Eigenschaft 8) ). Wenn nun der nächste mögliche Nächste Nachbar von q untersucht wird, werden erst alle möglichen kürzesten Abstände von q zu den Randpunkten BoP(NSP(g n )) berechnet. Diese Pfade müssen durch die Randpunkte BoP(NSP(g n ) ) führen. Jetzt werden nur die Pfade untersucht, auf denen die Randpunkte liegen, die einen neuen kleinst-möglichen Netzwerkabstand zu q haben. Auf diesen wird der Netzwerkabstand von q zu den entsprechenden Generatorpunkten berechnet. Der Generatorpunkt mit dem kleinsten Abstand zu q wird als nächster Nächster Nachbar ausgewählt Update Funktionen Einer der Vorteile des VN 3 Verfahrens liegt darin, dass lokale Änderungen des räumlichen Netzwerkes auch nur lokale Auswirkungen haben, so dass nicht das ganze Netzwerk Voronoi Diagramm neu berechnet werden muss [KS04]. Wenn Kanten oder Knoten hinzugefügt oder entfernt werden, müssen u. U. nur die Abstände der Randpunkte in dem betroffenen NVP neu berechnet werden. Es kann sein, dass sich auch die Abstände von Randpunkten in benachbarten NVPs ändern. Wenn sich eine Kante über mehrere NVPs erstreckt, verändert sich die Anzahl der Randpunkte. Die NVPs müssen deshalb neu generiert werden. Wenn POIs hinzugefügt oder entfernt werden, muss nur das NVP, das den neuen Punkt enthält, neu berechnet werde. Falls sich hierbei Randpunkte ändern, müssen auch benachbarte NVPs neu berechnet werden Performance In [KS04] wurden einige Simulationen durchgeführt und der VN 3 Algorithmus mit dem Incremental Network Expansion (INE, [PAP03]) Algorithmus verglichen. Außerdem wurde untersucht, inwieweit sich die Vorausberechnung von Abständen auswirken und wie sich die Größe der Kandidatenmenge entwickelt. Die Experimente wurden auf einer Datenbasis aus der realen Welt durchgeführt.

90 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite 11 Es zeigt sich, dass der VN 3 Ansatz bis zu einer Größenordnung besser ist als das INE Verfahren. INE muss mit fortschreitender Anzahl von gefundenen Nächsten Nachbarn immer größere Teile des Netzwerkes bearbeiten und diese Daten aus der Datenbank holen. VN 3 verbraucht mehr Zeit auf der CPU, aber die Datenbankzugriffe sind signifikant weniger. Besonders interessant ist hier, dass der erste Nächste Nachbar in Echtzeit gefunden wird, unabhängig von der Anzahl der POIs. Der Grund dafür ist die Verwendung der contains(q) Funktion. Die Anzahl der vorausberechneten Abstände zwischen allen Randpunkten ist annähernd konstant und somit unabhängig von der Anzahl (und somit der Dichte) der POIs. Bei einer großen Anzahl von NVPs ist die durchschnittliche Anzahl der Randpunkte klein, während bei wenigen NVPs die durchschnittliche Anzahl von Randpunkten höher ist. Die Anzahl der zu berechnenden Abstände für den OPC Schritt ist um drei Größenordnungen kleiner als beim naiven Ansatz, bei dem alle Abstände zwischen den Knoten berechnet werden. Die Anzahl wird mit einer geringeren Anzahl von POIs größer, da sich die durchschnittliche Zahl von Knoten innerhalb der NVPs erhöht. Die Größe der Kandidatenmenge (SKS Size of Candidate Set) zeigt ein erstaunliches Verhalten. Das Verhältnis von SKS zu K wird kleiner, je größer K wird. Für sehr große K (K > 500 nähert sich SKS der Größe von K an. Der Grund dafür ist, dass mit einer steigenden Größe von K sich die Wahrscheinlichkeit erhöht, dass ein Generator aus der Kandidatenmenge bereits im vorherigen Schritt untersucht worden ist und daher nicht noch einmal hinzugefügt werden muss. Für den VN 3 Algorithmus bedeutet das, dass für größere Werte von K die durchschnittliche Anzahl von zu untersuchenden POIs signifikant abnimmt. Ein weiteres Ergebnis der Simulationen ist, dass die SKS unabhängig von der Anzahl (und der Dichte) der POIs ist. Die Leistung des Filter Schritts verändert sich also nicht. 5 Reverse Nächste / Weiteste Nachbarn Suche in Netzwerken Eine exakte Berechnung der Reverse Nächste Nachbarn Suche in räumlichen Netzwerken ist bisher nicht wissenschaftlich untersucht worden [TTS09]. Bisher gab es nur Ansätze, die ein ungefähres Ergebnis hatten. Sie sind auch nicht auf räumliche Netzwerke anwendbar, da sie auf der euklidischen Abstandsberechnung basieren. Die Algorithmen zur Bearbeitung von Anfragen bezüglich RkNN und RkFN in räumlichen Netzwerken sind dem VN 3 Algorithmus sehr ähnlich [TTS09]. Sie verwenden Netzwerk Voronoi Diagramme, den Progressive Incremental Network Expansion (PINE) Algorithmus und Vorausberechnung von Netzwerkabständen. Der PINE Algorithmus verwendet wie der VN 3 Algorithmus Netzwerk Voronoi Diagramme und berechnet den Abstand von Randpunkten im Voraus. Er verzichtet aber auf die Vorausberechnung von Netzwerkabständen zwischen einzelnen Objekten. Eine große Anzahl von POIs wirkt sich dabei auf die Laufzeit und die zu speichernden Datenmenge negativ aus. Stattdessen wird der Dijkstra Algorithmus eingesetzt [SAF05]. 5.1 Reverse Nächste Nachbarn Bei der Reverse Nächsten Nachbarn Suche gibt es vier unterschiedliche Möglichkeiten, je nachdem ob der Anfragepunkt oder der POI ein Generatorpunkt ist oder nicht. In [TTS09] wird nur der Fall beschrieben, bei dem der Anfragepunkt und die POI gleichzeitig Generatorpunkte sind. Diese Art der Anfrage wird mit RNN GP (GP) bezeichnet. Wie im VN 3 Ansatz müssen vorher für jeden Typ von POIs ein eigenes NVD erzeugt werden und die Rand- zu Randpunkt Netzwerkabstände sind zu berechnen.

91 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite Algorithmus In einem ersten Schritt wird das NVP gesucht, das den Anfragepunkt q enthält. Daraufhin folgt der Filter-Schritt, bei dem die zu diesem benachbarten NVPs zu einer Kandidatenmenge hinzugefügt werden. Jetzt wird der Verfeinerungsschritt für jedes NVP aus der Kandidatenmenge durchgeführt. Nun werden für jeden NVP Kandidaten P y die k Nächsten Nachbarn berechnet. Diese knn(p y ) Anfrage verwendet den PINE Algorithmus. Die Berechnung der Netzwerkabstände zwischen Generatorpunkten erfolgt durch die Vorausberechnung der Abstände innerhalb der NVPs und der Abstandsberechnung der Rand- zu Randpunkt mit dem Dijkstra Algorithmus. Enthält knn(p y ) P x, dann wird P y dem Ergebnis hinzugefügt. Anschließend werden die zu P y benachbarten NVPs der Menge von Kandidaten hinzugefügt. Der letzte Schritt wird solange wiederholt, bis das Ergebnis k Generatorpunkte enthält. 5.2 Reverse Weiteste Nachbarn Algorithmus Im vorherigen Abschnitt wurde bei der RkNN Suche die jeweils benachbarten NVPs in die Kandidatenmenge mit aufgenommen. Bei der k Reverse Weiteste Nachbarn Suche ist dies nicht möglich. Hier müssen alle Generatorpunkte untersucht werden, denn der Anfragepunkt q kann zu jedem der Weiteste Nachbar sein. Zuerst wird wieder das NVP ermittelt, das den Anfragepunkt q enthält. Dazu wird die contains(q) Funktion verwendet. Dieses NVP wird mit P x bezeichnet. Im folgenden Filterschritt bilden die zu P x benachbarten NVPs die ersten Kandidaten für RkFN(q). Nun werden für jeden NVP Kandidaten P y die k Weitesten Nachbarn von P y, kfn(p y ) gesucht. Es wird mit den zu P y benachbarten NVPs begonnen. Falls kfn(p y ) q nicht enthält, dann gehört P y nicht zu RkFN(q) und es wird mit dem nächsten Kandidaten fortgefahren. Falls q in kfn(p y ) enthalten ist, wird die Suche solange fortgesetzt, bis keine weiteren NVPs mehr gefunden werden. Die Kandidatenmenge wird um die an P y grenzenden NVPs erweitert. Der letzte Schritt wird sooft wiederholt, bis alle NVPs des NVDs untersucht wurden. 5.3 Leistungsmerkmale Um die Leistungsmerkmale der beiden Algorithmen zu untersuchen, wurden verschiedene Simulationen durchgeführt (s. [TTS09]). Diese liefen auf Standard Personal Computern. Verwendet wurden Daten aus der realen Welt. Die Simulationen lieferten Informationen über die Anzahl der gefundenen Nachbarn, Rechenzeit und den Speicherverbrauch. Die Simulationen für die Reverse k Nächste Nachbarn Suche zeigen, dass mit steigenden k Wert die CPU Zeit und der Speicherverbrauch ansteigen. Das liegt an der wachsenden Anzahl von Kandidaten für die RNN Suche und dem damit verbundenen, größeren Ressourcenverbrauch. Weiterhin wurde festgestellt, dass je größer die Anzahl von POIs ist und damit deren Dichte auf dem räumlichen Netzwerk, desto größer ist der Verbrauch an Rechenzeit und Speicherplatz. Für eine geringe bis mittlere Anzahl von POIs kann man aber eine gute Antwortzeit und einen akzeptablen Speicherverbrauch erwarten. Der Ausgang der Simulationen für die Reverse k Weiteste - Nachbarn Suche zeigt ein ähnliches Bild. Je größer der Wert k gewählt wird, desto länger wird die Rechenzeit und desto höher wird der Speicherplatzverbrauch. Für kleine Werte von k werden auch nur geringe Ressourcen benötigt, um die Weiteste Nachbarn Suche für jeden Kandidaten durchzuführen. Für größere Werte von k steigt der Ressourcenverbrauch drastisch an. Jedes Objekt im Netzwerk kann ein Reverse Weitester Nachbar sein und muss untersucht werden. Der Suchbereich ist

92 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite 13 nicht begrenzt. Auch hier kann man für eine geringe bis mittlere Anzahl von POIs eine gute Antwortzeit und einen akzeptablen Speicherverbrauch erwarten. 6 Fazit Diese Arbeit stellt neue Verfahren vor, mit denen die Nächste Nachbarn Suche in räumlichen Netzwerken signifikant schneller bearbeitet werden kann als bisher. Besonders hervorzuheben ist die dafür grundlegende Arbeit von Mohammad Kolahdouzan [KS04]. Durch die Einführung von Netzwerk Voronoi Diagrammen und des iterativen Algorithmus aus einem Filter- und einem Verfeinerungsschritt wird eine effiziente Anfragebearbeitung ermöglicht. Analysen und Benchmarks für die k Nächste Nachbarn Suche in Netzwerken zeigen deutlich die Leistungsfähigkeit des Algorithmus auf. Dieser ist zwischen 1.5 Mal und 20 Mal schneller als der bis dahin beste Incremental Network Expansion Ansatz. Die Arbeit von Tran [TTS09] beschreibt auch neue Algorithmen zur k Reverse Nächste / Weiteste Nachbarn Suche in räumlichen Netzwerken. Bis dahin gab es auf diesem Gebiet keine wissenschaftlichen Arbeiten. Die Laufzeitmerkmale zeigen deutlich eine Abhängigkeit vom Wert der Variable K und von der Anzahl und Verteilung der POIs. Je größer k gewählt wird und je dichter die POIs liegen, desto schlechter ist die Performance des Algorithmus. Für mittlere und kleine Verteilung von POIs wird jedoch eine gute Performance erreicht. Der große Nachteil der hier vorgestellten Verfahren ist sicherlich die Einschränkung, dass sie immer nur für einen Typ von räumlichen Objekten (POIs) verwendet werden können. Mit Typ sind entweder Hotels oder Tankstellen oder Restaurants gemeint. Für jeden Typ müssen eigene Netzwerk Voronoi Diagramme, Abstände und Indexstrukturen berechnet werden. Dies verhindert einerseits, dass man keine Nächsten Nachbarn Anfragen mit verschiedenen Typen (z.b. Hotels und Restaurants) stellen kann, wenn für jeden einzelnen bereits ein NVD existiert. Andererseits ist es auch nicht möglich, spontan neue Typen (z.b. Bars) hinzuzufügen, denn dafür müssten erst alle Vorausberechnungen erfolgen.

93 Thomas Achmann Thema 7: Nächste Nachbarn in Netzwerken Seite 14 7 Literatur [KS04] [NÖK+04] [OKA00] [PAP03] [SAF05] [TTS09] Kolahdouzan, Mohammad R.; Shahabi, Cyrus: Voronoi-Based K Nearest Neighbor Search for Spatial Network Databases. In: [NÖK+04], S Nascimento, Mario A. (Hrsg.); Özsu, M. T. (Hrsg.); Kossmann, Donald (Hrsg.); Miller, Ren ee J. (Hrsg.); Blakeley, Jos e A. (Hrsg.); Schiefer, K. B. (Hrsg.): (e)proceedings of the Thirtieth International Conference on Very Large Data Bases, Toronto, Canada, August 31 - September Morgan Kaufmann, ISBN Okabe, A; Boots, B; Sugihara, K. Chiu, S.N. Spatial Tessellations, Concepts and Applications of Voronoi Diagrams. John Wiley and Sons Ltd., 2nd edition, Papadias, D.; Zhang, J.; Mamoulis, N.; Tao, Y.: Query Processing in Spatial Network Databases. In VLDB 2003, Berlin, Germany. Safar, M.: K Nearest Neighbor Search in Navigation Systems. In: Mobile Information Systems 1(3), (2005) Tran, Quoc T.; Taniar, David; Safar, Maytham: Reverse k Nearest Neighbor and Reverse Farthest Neighbor Search on Spatial Networks. In: T. Large- Scale Data- and Knowledge-Centered Systems 1 (2009), S ISBN Abbildungsverzeichnis Abbildung 1: k - Nächste - Nachbarn (k = 3)...3 Abbildung 2: k - Reverse - Nächste / Weiteste Nachbarn (k = 3)...3 Abbildung 3: Beispiel für Generator Punkte und dazugehöriges Voronoi Diagramm...4 Abbildung 4: Aufbau eines Netzwerk Voronoi Diagramms (NVD)...6 Abbildung 5: Netzwerk Voronoi Diagramm Beispiel...8

94

95 FernUniversität in Hagen - Seminar im Wintersemester 2010/2011 Nächste-Nachbarn-Suche Thema 8 Bewegter Anfragepunkt Referent: Alexander Kiefl

96 2 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt Inhaltsverzeichnis 1 Einleitung 3 2 Anfragen für bewegte Punkte Nächste-Nachbarn-Suche für bewegte Anfragepunkte Fixed Upper Bound Search Algorithmus Lazy Search Algorithmus Prefetching Search Algorithmus Dual Buffer Search Algorithmus Diskussion Reduzierung des Kommunikationsoverheads Range Filter Filter Pool Algorithmus Diskussion Fazit 13

97 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt 3 1 Einleitung Bisher wurden in Datenbanken Informationen gespeichert, die sich selten ändern und gültig bleiben, bis ihnen ein neuer Wert zugewiesen wird z.b. das Gehalt eines Mitarbeiters. Heutzutage ergeben sich zusätzlich zwei neue Anforderungen an Datenbanken, die durch das bisherige Modell nicht mehr abgedeckt werden können. Zum einen soll die räumliche Ausdehnung eines Objektes beschrieben werden und zum anderen soll auch dessen Position - gegebenenfalls auch über die Zeit veränderlich - dargestellt werden können. Beispiele hierfür sind, Häuser, Straßen, Tiefdruckgebiete usw. Aus diesem Grund wurden räumlich-zeitliche Datenbanken entwickelt. Diese haben die Möglichkeit räumliche Daten (Punkte, Linien, Vielecke) zu speichern. Dazu bieten sie räumliche Datentypen und räumliche Indizes an. Viele Anwendungsmöglichkeiten findet man im Zusammenhang mit aktuellen Anwendungen der Nächsten-Nachbarn-Suche. Ein Beispiel: ein Brand wird gemeldet und die Leitstelle muss die nächstgelegene Feuerwehr alarmieren. Für die Darstellung der bewegten Objekte gibt es zwei unterschiedliche Vorschläge. Ein Ansatz ist die Speicherung der aktuellen Position, sowie der künftig zu erwartenden Position mithilfe eines Bewegungsvektors [SWCD97]. Die zweite Möglichkeit umfasst die Speicherung der gesamten Bewegungshistorie des Objektes als Funktion der Zeit [GBE+00]. Aufgrund der zunehmenden Bedeutung von mobile computing 1 entstehen neue Anforderungen an räumliche Datenbanken und die Nächste-Nachbarn-Suche. Statische Nächste- Nachbarn-Suche bietet in diesem Umfeld keine ausreichenden Lösungen an. Um auf das obige Beispiel zurückzukommen, muss nun zusätzlich ein Krankenwagen, der sich schon in Bewegung befindet alarmiert werden. Für bewegte Anfragepunkte müssen nun neue Lösungen für die Nächste-Nachbarn-Suche gefunden werden. Außerdem soll der durch die Bewegung entstehende Kommunkationsaufwand minimal gehalten werden. Für beide Anforderungen soll im Folgenden Vorschläge aufgezeigt werden. 2 Anfragen für bewegte Punkte Die folgenden Ausführungen und Abbildungen basieren auf [SR01] und [JG07]. Im ersten Teil wird beschrieben, wie man die Nächste-Nachbarn-Suche für bewegte Anfragepunkte durchführen kann; im zweiten Teil wird erläutert, wie man die dafür notwendige Kommunikation gering halten kann. 2.1 Nächste-Nachbarn-Suche für bewegte Anfragepunkte Eine zentrale Anwendung für räumliche Datenbanken ist die Nächste-Nachbarn-Suche. Im Unterschied zu der bisherigen Betrachtung für diese Fragestellung ist das Anfrageobjekt nicht länger statisch, sondern bewegt sich und verändert seine Position über die Zeit, was ein häufiges aktualisieren der Datensätze in der Datenbank erfordert (vgl.. obiges Beispiel mit dem Krankenwagen in Bewegung). Dieses Verhalten findet bereits im Bereich mobile computing Anwendung. Ein Beispiel: Ein Fußgänger ist mit seinem Mobiltelefon in der Fußgängerzone unterwegs, und möchte nun im nächstgelegenen Musikladen einkaufen. Die Position des Fußgängers ändert sich ständig, wohingegen die Position des nächstgelegenen Musikladen statisch ist. Für den Spezialfall 1-NNMP 2 gibt es bereits verwendbare Lösungen. Leider kann diese 1 Mobile Kommunikationsanwendung 2 Nearest Neighbor Search for Moving Query Point für 1 nächsten Nachbarn

98 4 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt Lösung nicht auf das k-nnmp Problem angewandt werden, wenn man nach k nächsten Nachbarn sucht. Zur Darstellung des sich bewegenden Anfragepunktes wird periodisches Abtasten verwendet. Dazu wird die Zeitachse in n+1 Zeitscheiben mit gleicher Länge eingeteilt. Für jeden Abtastpunkt wird der Standort des sich bewegenden Anfragepunktes abgerufen. Die einfache Lösung, nämlich für jeden Abtastpunkt eine neue Nächste- Nachbarn-Suche zu starten, ist leider sehr aufwändig und ineffizient. Ziel soll es sein, eine verbesserte Nächste-Nachbarn-Suche für alle Abtastpositionen zu bekommen. Grundlage dafür ist folgende Beobachtung: wenn die Abtastpositionen q 1 und q 2 nahe beieinanderliegen, dann müssen die Suchergebnisse der Nächsten-Nachbarn-Suche S 1 und S 2 in irgendeiner Abhängigkeit zueinander stehen. Daraus kann geschlossen werden: wenn S 1 zur Verfügung steht, kann S 2 mit geringem Zusatzaufwand berechnet werden. Für das Beispiel mit dem Fußgänger, der auf der Suche nach dem nächsten Musikladen ist bedeutet das, wenn er sich nur sehr wenig weiterbewegt, dann ändert sich der für ihn nächste Musikladen auch nicht. Es werden 2 Annahmen getroffen für die Nächste-Nachbarn-Suche für bewegte Anfragepunkte: 1. Die Information über die Standorte liegt vor dem Ausführen der Abfrage bereits vor. 2. Die Standorte werden in einer R-Baum Struktur gespeichert Neuer Ansatz für die Nächste-Nachbarn-Suche für bewegte Anfragepunkte: Antwort unter Verwendung der Informationen aus den Ergebnissen (Verlaufsdaten) der vorausgegangen Abtastungen Wenn eine neue Suche erforderlich ist, dann wird ein besserer Startpunkt zur Verfügung gestellt Verlaufsdaten werden zuerst untersucht, ob das richtige Ergebnis für die Suchanfrage bereits vorhanden ist, bevor eine neue Suche gestartet wird Zusätzlicher Puffer für die Vorhersage der Bewegung Für die Nächste-Nachbarn-Suche für statische Objekte haben sich zwei unterschiedliche Verfahren durchgesetzt. Dies ist zum einen die single-step Suche, bei der die Standortdatensätze nur einmal durchsucht werden, und zum anderen die multi-step Suche, bei der die Standortdatensätze mehrmals durchsucht werden, bis ein passender Radius gefunden wird. Das k-nnmp-problem erfordert eine neue Vorgehensweise. Die im Folgenden beschriebenen Algorithmen basieren auf einem statischen branch-andbound Algorithmus. Grund hierfür ist die Tatsache, dass hierbei keine Datenbankstatistiken benötigt werden. Deshalb ist die Abfragegeschwindigkeit vorhersehbar und stabil. Zudem gilt, dass die Bewegung von bewegten Objekten eher zufällig ist, als dass sie bestimmten Mustern folgen würde. Folgende Vereinbarungen werden getroffen: q: bewegter Anfragepunkt q t : Standort von q zum Abtastzeitpunkt t

99 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt 5 S: Standortmenge, enthält n = S Standorte Zu jeder Zeit t sind die Standorte S aufsteigend sortiert abhängig von ihrer Entfernung zu q t Standort bei Position i hat die Entfernung D t (i) mit D t (1) D t (2)... D t (n) ɛ obere Grenze innerhalb derer wir im Abstand von q t mindestens k Orte finden, mit D t (k) ɛ t Fixed Upper Bound Search Algorithmus Ein einfacher Ansatz wäre es, für jede Abtastposition mittels branch-and-bound Algorithmus eine neue Suche zu starten, wobei die Start Suchgrenze auf unendlich gesetzt wird. Soweit keine zusätzlichen Informationen über das Anfrageumfeld vorliegen, ist dieser Schritt unabkömmlich, um ein korrektes Abfrageergebnis zu erzielen. Bei dem k-nnmp Problem kann uns aber das Ergebnis der vorherigen Abtastung Hinweise dafür liefern, einen niedrigeren Wert für die Start Suchgrenze auszuwählen. Es ist erwiesen, dass der statische branch-and-bound Algorithmus mit einem niedrigeren Wert als unendlich für die Start Suchgrenze effizienter arbeitet (vgl. Abbildung 1). Abbildung 1: niedrigere Start Suchgrenze [SR01, Seite 83] Theorem 1. Zur Zeit t sind die k nächsten Nachbarn für den Anfragepunkt am Standort q t p 1, p 2,..., p k und D t (k) ist die maximale Entfernung dieser Standorte zu q t. Zur Zeit t+1 bewegt sich der Anfragepunkt zu q t+1. Dann gilt: ɛ t+1 = D t (k) + δ, mit δ als Entfernung zwischen q t und q t+1 So funktioniert der fixed upper bound search Algorithmus: Zum Abtastzeitpunkt 1, nachdem die statische search-and-branch Suche ausgeführt worden ist, werden der Standort des Anfrageobjektes und seine Entfernung D 1 (k) aufgezeichnet. Bei Abtastposition t > 1

100 6 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt wird dann nach Theorem 1 die Start Suchgrenze berechnet und eine neue statische Suche wird gestartet, was D t (k) und q t liefert Lazy Search Algorithmus Beim fixed upper bound search Algorithmus wird bei jeder Abtastposition eine neue Suche gestartet - auch dann, wenn die Bewegung des Anfrageobjektes zu gering ist, um ein unterschiedliches Ergebnis zu liefern. Für solche Fälle kann dann der lazy search Algorithmus angewandt werden. Damit ist es möglich, dass in manchen Situationen keine neue Suche erforderlich ist. Oft ist es möglich, bei der Nächsten-Nachbarn-Suche zur Zeit t D t (k + 1) mit einem geringen Zusatzaufwand zu erreichen. Dazu werden einfach aus der Ergebnismenge die ersten Ergebnisse außerhalb der k-nnmp Suche genommen. Theorem 2. Zur Zeit t sind die k nächsten Nachbarn für den Anfragepunkt am Standort q t p 1, p 2,..., p k und D t (k) ist die maximale Entfernung dieser Standorte zu q t und D t (k+1) ist die minimale Entfernung der Standorte außerhalb der Ergebnismenge. Zur Zeit t + 1 bewegt sich der Anfragepunkt zu q t+1. Dann gilt: δ Dt(k+1) Dt(k) mit δ als Entfernung 2 zwischen q t und q t+1 Damit wird gezeigt: wenn die Bewegung des Anfrageobjektes sehr klein ist, wird sich das Ergebnis nicht verändern. Das erste Suchergebnis schnell zu bekommen ist ein weiterer wichtiger Aspekt bei der statischen Nächsten-Nachbarn-Suche. Mit diesem Ansatz ist es möglich, dass sich einige Standorte aus der vorhergegangenen Anfrage im Ergebnis der aktuellen Anfrage wiederfinden, auch dann wenn eine neue Suche gestartet werden muss. Wenn sich nun der Anfragepunkt um die Entfernung δ bewegt, stellt sich die Frage, welche Standorte aus der alten Ergebnismenge auch noch in der neuen Ergebnismenge zu finden sein werden. Theorem 3. Zur Zeit t sind die k nächsten Nachbarn für den Anfragepunkt am Standort q t p 1, p 2,..., p k und D t (k) ist die maximale Entfernung dieser Standorte zu q t und D t (k+1) ist die minimale Entfernung der Standorte außerhalb der Ergebnismenge. Zur Zeit t + 1 bewegt sich der Anfragepunkt zu q t+1. Dann gilt: die neue Ergebnismenge enthält Standorte p i mit Dt(i) < D t (k + 1) 2δ mit δ als Entfernung zwischen q t und q t+1 So funktioniert der lazy search Algorithmus: Zum Abtastzeitpunkt 1 liegen vor: das korrekte Abfrageergebnis, der Standort des Anfragepunktes, D 1 (k) und D 1 (k + 1). Zum Abtastzeitpunkt t > 1 muss dann die Ergebnismenge hinsichtlich Theorem 2 überprüft werden. Im Gutfall wird das Ergebnis zurückgeliefert ansonsten wird nach Theorem 3 überprüft. Dann wird die Anfangsgrenze ɛ t nach Theorem 1 berechnet und eine neue statische Suche wird gestartet. Das Ergebnis wird zusammen mit den Werten von D t (k), D t (k + 1) und q t (k) gespeichert. Anschließend wird auf die nächste Anfrage gewartet Prefetching Search Algorithmus Im Vergleich zum lazy search Algorithmus wird hier einen Schritt weiter gegangen und eine Art Cache verwendet. Dazu wird eine m-nächste-nachbarn-suche an irgendeiner Abtastposition ausgeführt, wobei gilt m > k. Das Ergebnis der Suche wird in einem Puffer im Speicher abgelegt. Nun wird an den übrigen Abtastpositionen erst der Puffer geprüft, ob dort bereits ein passendes Ergebnis für die Anfrage vorhanden ist, bevor eine neue Suche

101 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt 7 Abbildung 2: Verwendung Suchpuffer [SR01, Seite 86] gestartet wird. Typischerweise muss nun überlegt werden, wann die Inhalte des Caches erneuert werden. In diesem Zusammenhang ist auch eine Verdrängungsstrategie erforderlich. Theorem 4. Zur Zeit t sind die m nächsten Nachbarn für den Anfragepunkt am Standort q t im einem Puffer gespeichert mit m > k. D t (k) und D t (m) sind die k-fache und m-fache Entfernung von diesen Standorten. Der Anfragepunkt bewegt sich zur neuen Position q. Der Puffer muss nicht aktualisiert werden wenn gilt δ Dt(m) Dt(k) mit δ als Entfernung 2 zwischen q t und q t+1 (vgl. Abbildung 2). Funktionsweise: Bei Abtastposition 1 wird eine erweiterte m-nächste-nachbarn-suche ausgeführt. Die Ergebnisse werden in einem Puffer abgelegt und die nächsten Nachbarn bestimmt. D 1 (k), D 1 (m) und die Anfrageposition werden gespeichert. Bei Abtastposition t > 1 wird dann das Ergebnis für die Anfrage zuerst im Puffer gesucht. Ist das Ergebnis nicht im Puffer, wird eine neue Suche gestartet Dual Buffer Search Algorithmus Für manche Anwendungen kann die nächste Position des Anfragepunktes vorhergesagt werden, z.b. Flugzeug im Landeanflug. Jedoch kann niemand eine 100 prozentig genaue Vorhersage treffen. Für den dual buffer search Algorithmus wird daher folgendermaßen vorgegangen: Für jede Suchanfrage werden zusätzlich die nächst besten Anfrageergebnisse in einem zusätzlichen Puffer gespeichert. Es gibt also zwei Puffer der Größe m > k. Der erste Puffer ist für die möglichen Ergebnisse der aktuellen Abfrage und der zweite Puffer ist für die möglichen Ergebnisse der nächsten Abfrageposition. Bei der Abtastposition t > 1 werden dann die Elemente des ersten Puffer in den zweiten verschoben und die aktuellen Abfrageergebnisse werden im ersten Puffer gespeichert. Mit Hilfe des zweiten Puffers kann die Start Suchgrenze verringert werden. Theorem 5. Beim dual buffer search Algorithmus gilt für jede Position t, dass die Anfangssuchgrenze nicht größer als r (Unsicherheitsfaktor) plus die vorhergesagte Anfangssuchgrenze ist, für: r = 0.

102 8 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt Diskussion Der Fixed Upper Bound Algorithmus startet für jede Abtastposition eine Suche mit einem niedrigeren Anfangswert. Deshalb funktioniert er immer besser als die triviale Methode der statischen Suche, bei der immer der gleiche Anfangssuchwert verwendet wird. Dazu trägt auch bei, dass manche Standorte für die Suche ausgeschlossen werden können. Wenn allerdings die Bewegung einigermaßen präzise vorhergesagt werden kann, so liefert die Dual Buffer Search durch einen niedrigeren Anfangssuchwert noch bessere Ergebnisse. Der Lazy Search Algorithmus und der prefetching Algorithmus generieren höhere Kosten, da zusätzliche Information gesammelt werden müssen. Dafür hat man aber dann den Vorteil, dass für manche Abfragepositionen keine neue Suche gestartet werden muss, da die Antwort basierend auf den Daten aus dem Puffer erfolgen kann. Diese Algorithmen sind um so wirkungsvoller, je mehr Anfragen direkt aus dem Puffer beantwortet werden können. Außerdem gilt, dass für kleine Ortsänderungen im Lazy Search Algorithmus das Abfrageergebnis das Gleiche ist. Bei dem Dual Buffer Search Algorithmus ist die Geschwindigkeit mit der das Ergebnis gefunden wird abhängig von der Größe des verwendeten Puffers. Hierbei muss allerdings abgewogen werden, ob man einen kleinen Puffer mit geringen Kosten und geringer Leistungsfähigkeit oder einen großen Puffer mit hohen Kosten und großer Leistungsfähigkeit haben will. Experimente zeigen, dass sowohl Fixed Upper Bound Algorithmus, als auch Dual Buffer Search Algorithmus und Lazy Search Algorithmus in der Regel um den Faktor 3 besser sind als ein einfacher Brutal Search Algorithmus. Dies gilt allerdings nicht für eine sehr kleine Anzahl von Standorten. Bei guter Vorhersage ist der Dual Buffer Search Algorithmus nochmal besser als der Fixed Upper Bound Algorithmus. Der Lazy Search Algorithmus ist meistens besser als der Fixed Upper Bound Algorithmus, wenn die Standortanzahl klein ist und das Anfrageobjekt sich nicht zu schnell bewegt. Der Pre-fechting Search Algorithmus erzielt dann eine gute Leistung, wenn die Anzahl der no-search-positions 3 groß ist, im Vergleich zu Fixed Upper Bound Algorithmus und Lazy Search Algorithmus jedoch meistens schlechter. 2.2 Reduzierung des Kommunikationsoverheads Wie wir bereits wissen, ist die Nächste-Nachbarn-Suche eine der wichtigsten Anforderungen im Umfeld räumlicher Datenbanken. Bisher wurden in aktuellen Anwendungen hauptsächlich statische Objekte betrachtet, deren Daten in der Regel nicht häufig geändert werden müssen. Zunehmend richtet sich aber das Augenmerk auf bewegte Objekte, die häufig ihre Position verändern, z.b. mobile Navigationssysteme. Üblicherweise sendet das sich bewegende Objekt regelmäßig seine aktuelle Position an einen Empfänger. Dort wird dann in Echtzeit das Ergebnis berechnet. Bisherige Ansätze haben versucht Ergebnisse, mit wenig Speicher und Rechenaufwand zu erreichen. Gerade bei verteilten Umgebungen ist jedoch meistens die Netzwerkübertragung die kritische Ressource. Bei steigendem Kommunikationsaufwand wird diese zum Flaschenhals im Gesamtsystem. Daher ist es unumgänglich für solche Systeme eine Lösung anzubieten, wobei die Kommunikation besonders effizient vonstatten geht. Um den Kommunikationsaufwand bei dauerhafter Überwachung der k-nächsten Nachbarn für ein dynamisches Anfrageobjekt zu reduzieren, ist es notwendig neue Methoden zu erarbeiten. 3 Finden der Antwort aus dem Puffer. Keine neue Suche starten

103 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt 9 Eine solche Methode ist der Range-Filter-based Approach (RFA). Die Funktionsweise ist folgendermaßen: Anfänglich wird jedem Objekt ein Bereichsfilter zugeordnet, dessen Aufgabe es ist, neue Standorte an eine zentrale Stelle zu senden, falls der aktuelle Standort außerhalb eines bestimmten Bereichs ist. Der zugehörige Filter wird durch die zentrale Stelle initialisiert und durch diese selber und mit Hilfe des Anfrageobjektes aktuell gehalten. Zusätzlich wird in der zentralen Stelle eine Kopie aller Filter gespeichert. Wenn ein Objekt sich bewegt, wird der neue Standort erkannt und mit dem zulässigen Bereich verglichen. Falls der neue Standort außerhalb des zulässigen Bereichs liegt, wird dieser an die zentrale Stelle gemeldet. Dort werden dann die Filtereinstellungen des aktuellen Objekts und der notwendigen anderen Objekte angepasst. Die wichtigste Eigenschaft des Range-Filter-based Approach (RFA) ist seine Selbstanpassungsfähigkeit. Bei bisherigen Ansätzen wurden wenn die Filter nicht mehr gültig waren, von der Zentrale neue Einstellungen berechnet und an alle Objekte verteilt. Passierte dies häufig, kam es zu einer hohen Netzwerkauslastung. Gerade diese hohe Netzwerkauslastung soll mit dem Range-Filterbased Approach (RFA) vermieden werden, indem der gleiche Filter in der Zentrale und im bewegten Objekt berechnet wird. Wenn die neuen Einstellungen die Abfragebedingung erfüllen, ist keine zusätzliche Übertragung erforderlich. Der Range-Filter-based Approach (RFA) unterstützt zwei Arten von Anfragen: value-based approximate knn query 4 non-value-based approximate knn query 5 Folgende Vereinbarungen werden getroffen: n bewegte Objekte O n und 1 Zentrale bewegtes O i sendet Kennung und Standort über drahtloses Netzwerk an die Zentrale Menge S beinhaltet alle Objekte S = {O 1, O 2,..., O n } V i,t Standort O i zum Zeitpunkt t Jedes Objekt O i erzeugt eine Spur {V i,0, V i,1 } Keine Kommunikation zwischen den einzelnen Objekten Zentrale kann eine Nächste-Nachbarn-Suche in Echtzeit beantworten Zwischen folgenden Abfragen wird unterschieden: precise knn query : knn(q,k) non-value-based approximate knn query : nvaknn(q,k,r) value-based approximate knn querk : vaknn(q,k,e) mit q Abfrage Objekt, k Anzahl der nächsten Nachbarn, r Fehlerparameter, e Fehlerparameter Ein range filter F i wird in einem Objekt O i eingebaut um durch Filtern der neuen Standorte innerhalb des gültigen Bereichs den Kommunikationsoverhead zu reduzieren. Die Zentrale besteht aus 3 Einheiten: range filter, Antwortmenge A, Verarbeitungseinheit. Der 4 numerischer Wert als Antwortgarantie 5 Fehlertoleranz als Rang

104 10 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt filter pool beinhaltet eine Kopie der Filter aller bewegten Objekte. Zu jedem Zeitpunkt kann die Verarbeitungseinheit die Antwortmenge A basierend auf den Daten im filter pool berechnen. Zusätzlich muss die Zentrale die Filter der bewegten Objekte zurücksetzen, wenn die aktuellen Einstellungen nicht mehr den Abfrageanforderungen entsprechen Range Filter Ein Range Filter F ist definiert als (c, l, u, b), wobei c Standortwert, zentraler Punkt des Filterbereichs l unterer Durchmesser, minimale Entfernung zu c, 0 l u u oberer Durchmesser, maximale Entfernung zu c, 0 l u b Sicherungsdurchmesser Der Bereich eines Filters F ist eine Menge von Standorten deren Entfernungen zu c in [l, u] liegen. D.h. ein Standort v befindet sich im Bereich von Filter F nur dann wenn gilt, dist(v, c) [l, u]. Im RFA sendet ein Anfrageobjekt seine aktuelle Position nur dann an die Zentrale, wenn sein Standort außerhalb des gültigen Bereichs liegt oder explizit von der Zentrale angefragt wird. Wichtig ist, dass RFA einen neuen gültigen Bereich erzeugen kann, wenn die aktuelle Position v den gültigen Bereich verlässt (siehe Algorithmus 1) Algorithm 1 newrange(f,v) /*F=(c,l,u,b)*/ [JG07, Seite 243] 1: = dist(c, v) b 2: if < 0 then 3: l = b + 2 4: u = b : else 6: l = max(0, b ) 7: u = b + 2 8: end if Filter Pool Die Verarbeitungseinheit führt eine Nächste-Nachbarn-Suche basierend auf den gespeicherten Filtern der Objekte durch. Dazu werden zuerst die minimale und die maximale Distanz zwischen V i,t und q t bestimmt (dist(v i,t, c i ) [l i, u i ]). Außerdem gilt: dist(v i,t, q t ) hängt ab von den Filtereinstellungen und dem Wert von q t. Lemma (1) - (3) zeigen wie drei Arten von Anfragen aus dem filter pool beantwortet werden können (R i maximale Anzahl von Objekten die näher an q t sind als Objekt O i ) Lemma 1. A = {O i R i < k}. Falls A = k dann ist A die Antwort für die Anfrage knn(q, k) Lemma 2. A = {O i R i < k + r}. Falls A = k dann ist jede Teilmenge von A die k Objekte enthält eine Antwort auf die Anfrage nvaknn(q, k, r)

105 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt 11 Lemma 3. A = {O i R i < k} {O i U i L + e, R i k}, mit L als k-ten kleinsten Wert von L i. Falls A k dann ist jede Teilmenge von A die k Objekte enthält eine Antwort auf die Anfrage vaknn(q, k, e) Algorithmus RFA besteht aus zwei Teilen: RFA client eingebaut in die bewegten Objekte RFA server läuft in der Zentrale Die Aufgabe des RFA client (Algorithmus 2) ist die Positionsbestimmung und Kommunikation mit der Zentrale. Wenn ein Objekt den gültigen Bereich verlässt wird Algorithmus 1 ausgeführt. Jedes entfernte Objekt kann 2 unterschiedliche Nachrichten verarbeiten: neue lokale Filtereinstellung erstellen und Sendeanfrage der Zentrale (sende aktuelle Position an die Zentrale). RFA server (Algorithmus 3) stellt zwei Funktionen zur Verfügung: Initialisierungsphase und Betriebsphase. In der Initialisierungsphase empfängt die Zentrale die Position aller entfernten Objekte und berechnet die k nächsten Nachbarn für q 0. Zusätzlich werden die Filtereinstellungen für alle Objekte neu berechnet. In der Betriebsphase wird der filter pool aktualisiert wenn ein neuer Standort übermittelt wurde. Zusätzlich wird überprüft, ob die Filter noch im gültigen Bereich sind und diese gegebenenfalls neu berechnet (Algorithmus 4), damit ein korrektes Anfrageergebnis ausgegeben werden kann. Algorithm 2 RFA client(i) [JG07, Seite 245] 1: loop 2: if Sees a new location V i,t then 3: if Object O i itself is the query object q then 4: Sends V i,t to central site 5: else if dist(v i,t, c i ) / [l i, u i ] then 6: newrange(f i, V i,t ) 7: Sends V i,t to central site 8: end if 9: else if Receives (c i, l i, u i, b i) from central site then 10: (c i, l i, u i, b i ) = (c i, l i, u i, b i) 11: else if Receives a request SEND from central site then 12: Sends V i,t to central site 13: end if 14: end loop Diskussion Ein Vorteil des Range-Filter-based Approach ist die Reduzierung des Kommunikationsaufwandes. Da die bewegten Objekte über einen eigenen Filter verfügen, muss keine zusätzliche Kommunikation für die Nächste-Nachbarn-Suche stattfinden, solange sie sich in dessen Gültigkeitsbereich befinden. Erst wenn die Zentrale bei der Übermittlung der neuen Position V i,t feststellt, dass das Objekt O i sich außerhalb des gültigen Bereichs befindet, muss ein neuer Filter berechnet und an das Objekt übermittelt werden. Bis

106 12 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt Algorithm 3 RFA server() [JG07, Seite 246] 1: Receives all locations {V 1,0, V 2,0,...V n,0 } from moving objects 2: Creates set A, containing k objects with minimum dist(v i,0, q 0 ) 3: V = min oi S A q(dist(v i,0, q 0 )) 4: V = max oi A(dist(V i,0, q 0 )) 5: B = v +v 2 6: for all fitlerf i do 7: c i = q 0 8: b i = B 9: newrange(f i, V i,0 ) 10: Sends F i to object O i 11: end for 12: loop 13: if Receives V i,t from object O i then 14: newrange(f i, V i,t ) 15: else if Can t find answer according to Lemma (1)-(3) then 16: adjust(); 17: end if 18: Output result; 19: end loop Algorithm 4 adjust() [JG07, Seite 246] 1: Caclulates a set A satisfying A = {O i R i < k} 2: while A < k do 3: Finds O i with min L i in S A q 4: if O i has not send V i,t to the central site then 5: receives V i,t from O i by sending SEND signal to O i 6: L i = dist(v i,t, q t ) 7: U i = dist(v i,t, q t ) 8: else 9: A = A + {O i } 10: B = L +U, where L = max(u 2 i = i A), U = min(l i O i S A {q} 11: end if 12: end while 13: for all objects with L i = U i do 14: c i = q t 15: b i = B 16: newrange(f i, V i,t ) 17: Sends (c i, l i, u i, b i ) to object O i 18: end for

107 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt 13 dahin ist es möglich alle Anfragen aus dem filter pool zu beantworten. Ziel des Algorithmus 4 adjust() ist es die k nächsten Nachbarn für das Anfrageobjekt q zu finden. In der Initialisierungsphase von Algorithmus 3 wird für diese Anforderung eine recht einfache Lösung gewählt, was zur Folge hat, dass alle Objekte ihre Standorte senden müssen. Dabei kommt es zu einer hohen Netzwerkauslastung, die man gerade vermeiden will. Algorithmus 4 bietet dafür eine effiziente Lösung, die das vorgegebene Ziel der Reduzierung des Kommunikationsoverheads erfüllt. Experimente zeigen, dass der RFA Ansatz gegenüber dem RTP Ansatz [JG07, Seite 247] (Filter basierte Lösung zur Beantwortung von knn-anfragen für verteilte Umgebungen, allerdings für statische Objekte) eine höhere Leistungsfähigkeit erreicht. Das liegt daran, dass beim RTP Ansatz die verwendeten Filter die gleiche Breite haben, was dazu führt, dass alle Objekte ihre neue Position an die Zentrale senden müssen wenn gilt A > k. Bei dem RFA Ansatz hat jedes Objekt seinen eigenen individuellen Filter, was zur Folge hat, dass nur ein paar wenige Objekte ihre neue Position an die Zentrale senden müssen, wenn gilt A < k oder A > k. RFA unterscheidet zwischen drei Kostenarten für die Netzwerkübertragung: 1. O i sendet neue Position an die Zentrale, wenn es den gültigen Bereich verlässt 2. Zentrale schickt Anfrage zur Übermittlung der aktuellen Position an O i 3. Zentrale aktualisiert Filter für O i Es werden 3 unterschiedliche Arten von Anfragen unterstützt: knn, nvaknn, vaknn. Die Untersuchungen zeigen, dass für größer werdendes k alle Kostenarten steigen. Es fällt aber auf, dass die Kosten für 2. und 3. immer kleiner sind als für 1.. Außerdem ist die Summe aller Nachrichten beim RFA Ansatz kleiner als die im Versuch maximal möglichen. RFA unterstützt außerdem 2 verschiedene Arten von Näherungsanfragen: nvaknn(q,k,r) und vaknn(q,k,e). Untersuchungen der Kommunikationskosten bezogen auf die beiden Fehlertoleranzwerte zeigen, dass höhere Toleranzwerte zu einer Reduktion der Nachrichtenübertragung führen. Abschließend kann man sagen, dass die verschieden Untersuchungen dem RFA eine Reduzierung der Nachrichtenübertragung bestätigen. 3 Fazit Die Anforderungen an mobile Kommunikationsanwendgungen und deren Verbreitung sind in den letzten Jahren enorm gestiegen und werden auch künftig noch stark zunehmen. In diesem Umfeld ist die Betrachtung und Verarbeitung sich bewegender Objekte zwingend erforderlich. Ein Beispiel hierfür ist der hohe Verbreitungsgrad von mobilen Navigationsgeräten und mobilen Datenanwendungen. Der in [SR01] beschriebene Ansatz ermöglicht für die Nächste-Nachbarn-Suche ein besseres Anfrageergebnis als brutal search Algorithmen, durch die Nutzung der vorherigen Abfrageergebnisse und gepufferter Ergebnisse. Die hier vorgestellten Methoden zeigen eine deutliche Leistungssteigerung gegenüber den bisher benutzten statischen Methoden für die Nächste-Nachbarn-Suche im Umfeld von räumlichen Datenbanken.

108 14 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt Auf Grund der zu erwartenden Zunahme mobiler Anwendungen in der Zukunft wird es ein deutlich erhöhtes Netzwerkaufkommen geben. Bisherige Methoden haben versucht, gute Anfrageergebnisse mit wenig Speicherplatz und geringer Rechenleistung zu erzielen. Viel wichtiger werden in Zukunft aber zwei Aspekte sein: Reduzierung der Netzwerkommunikation und Reduzierung der Kosten für die Kommunikation. Der in [JG07] beschriebene Ansatz bietet hierfür eine mögliche Lösung. Durch die Realisierung eines eigenen Filters in den bewegten Objekten muss nur ein kleiner Teil über das Netzwerk übertragen werden. Oft ist es möglich, k nächste Nachbarn durch Überprüfen der Daten im filter pool zu finden. Versuche zeigen, dass in dem beschriebenen Verfahren nur sehr wenige Nachrichten übertragen werden müssen und somit die kritische Ressource Bandbreite im Netzwerk entlastet wird. Eine Kombination beider vorgestellter Ansätze führt zu einem Gesamtsystem, das die Nächste-Nachbarn-Suche für bewegte Objekte mit geringen Kosten und schnellen Antwortzeiten möglich macht.

109 Alexander Kiefl, Thema 8: Bewegter Anfragepunkt 15 Literatur [SWCD97] [GBE+00] [SR01] [JG07] [Wiki01] [Wiki02] [Wiki03] SISTLA, A. P. ; WOLFSON, Ouri ; CHAMBERLAIN, Sam ; DAO, Son: Modeling and Querying Moving Objects. In: GRAY, W. A.(Hrsg.) ; LARSON, Per-Ake (Hrsg.): ICDE, IEEE Computer Society, ISBN , S GÜTING, Ralf H. ; BÖHLEN, Michael H. ; ERWIG, Martin ; JEN- SEN, Christian S. ; LORENTZOS, Nikos A. ; SCHNEIDER, Markus ; VAZIRGIANNIS, Michalis: A foundation for representing and querying moving objects. In: ACM Trans. Database Syst. 25 (2000), Nr. 1, S SONG, Zhexuan ; ROUSSOPOULOS, Nick: K-Nearest Neighbor Search for Moving Query Point. In: JENSEN, Christian S. (Hrsg.) ; SCHNEI- DER, Markus (Hrsg.) ; SEEGER, Bernhard (Hrsg.) ; TSOTRAS, Vassilis J. (Hrsg.): SSTD Bd. 2121, Springer, 2001 (Lecture Notes in Computer Science). ISBN X, S JIN, Cheqing ; GUO, Weibin: Efficiently Monitoring Nearest Neighbors to a Moving Object. In: ALHAJJ, Reda (Hrsg.) ; GAO, Hong (Hrsg.) ; LI, Xue (Hrsg.) ; LI, Jianzhong (Hrsg.) ; ZAIANE, Osmar R. (Hrsg.): ADMA Bd. 4632, Springer, 2007 (Lecture Notesin Computer Science). - ISBN , S WIKIPEDIA: R-Baum Stand WIKIPEDIA: Nearest neighbor search neighbor search Stand WIKIPEDIA: Spatial Database database Stand

110

111 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge FernUniversität in Hagen - Seminar im Wintersemester 2010/2011 Nächste-Nachbarn-Suche Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge Referent: Marek Niwinski

112 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge Gliederung der Präsentation / Ausarbeitung 1. Einführung mit kurzer Erläuterung der TPR-Baum-Datenstruktur 2. Vorstellung von Fast Nearest-Neighbor Query Processing in Moving Object Databases (Raptopoulou / Papadopoulos / Manolopoulos, 2003) 2.1 Erläuterung der Grundidee 2.2 Erläuterung von NNS-a 2.3 Erläuterung von NNS-b 2.4 Erläuterung von NNS-CON 2.5 Erläuterung der Pruning Techniques 2.6 Performancetest 3. Vorstellung von An Efficient Algorithm for Predicitive Continuous Nearest Neighbor Query Processing and Result Maintenance (Lee / Leong / Zhou, 2005) 3.1 Erläuterung der Grundidee 3.2 Techniken zur Vermeidung unnötiger Berechnungen 3.3 Integration in den TPR-Baum 3.4 Erweiterung auf knn 3.5 Organisation des Zwischenspeichers 3.6 Integration von Updates 4. Anmerkungen und Kritik der beiden Arbeiten 5. Diskussion

113 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge 1. Einleitung Diese Präsentation setzt sich mit zwei Arbeiten auseinander, die die Nächste Nachbarn Suche bei beweglichen Abfragepunkt und beweglicher Abfragemenge zum Thema haben. Bewegliche Objekte haben eine räumliche Komponente (ihre Position) und eine zeitliche Komponente (die Veränderung der Position über die Zeit). Sie sind generell durch ihre Position und einen Geschwindigkeitsvektor definiert. Eine Nächste Nachbarn Suche in diesem Fall bedeutet, dass zu einem beweglichen Objekt eine bestimmte Anzahl (k) von nächstgelegenen beweglichen Objekten zu einem bestimmten Zeitpunkt oder in einem Zeitintervall gesucht wird (im Folgenden mit knn abgekürzt). Beide Arbeiten haben gemein, dass zur Indexierung eine TPR-Baum-Datenstruktur zugrunde gelegt wird. Aus diesem Grund möchte ich zunächst den TPR-Baum kurz erläutern. Danach werde ich beide Arbeiten separat erläutern, um mit einem Vergleich diese Präsentation abzuschließen. Generell ist ein Suchbaum eine Datenstruktur, bei der versucht wird, die in ihr gespeicherten Objekte baumähnlich anzuordnen, so dass sie effizient durchsucht werden können. Ein R-Baum hat dabei die Eigenschaft, dass die (unbeweglichen) Datensätze mehrere räumliche Dimensionen haben. Blätter enthalten Datensätze, Indexknoten stellen minimale umgebende Rechtecke dieser Datensätze dar. Ein R-Baum erlaubt Bereichsanfragen (Suche nach Objekten in einer bestimmten Region) und Nächste Nachbarn-Suchen. Ein R*-Baum ist eine Variation der R-Baumes, bei dem versucht wird, das Überlappen von Rechteckregionen zu minimieren. Ein TPR-Baum ist eine Weiterentwicklung des R*-Baumes zur Handhabung von Objektbewegungen. Das umgebende Rechteck ist hier beweglich. Der TPR-Baum unterscheidet sich vom R-/R*-Baum u.a. dadurch, dass das umgebende Rechteck nicht mehr minimal sein muss. 2. Fast Nearest-Neighbor Query Processing in Moving Object Databases (Raptopoulou / Papadopoulos / Manolopoulos, 2003) 2.1 Grundidee Den Kern dieser Arbeit bildet ein Algorithmus, der es erlaubt, knn Abfragen für einen bestimmten Zeitpunkt oder ein Zeitintervall zu stellen. Letzteres ist schwieriger und benötigt das Wissen über Zeitpunkte, an denen sich die Ergebnismenge ändert (sog. split points). Eigenschaften des vorgestellten Algorithmus: ist für eine beliebige Anzahl von nächsten Nachbarn einsetzbar ist für eine beliebige Anzahl räumlicher Dimensionen einsetzbar es können verschiedene Algorithmen zur zur Vermeidung unnötiger Berechnungen angewandt werden auf jeden Knoten wird nur einmal zugegriffen gibt nicht nur an, wenn sich die Objekte im Ergebnis verändern, sondern auch, wenn sich die Reihenfolge der Objekte im Ergebnis verändert Eingabe für den Algorithmus: Das Referenzobjekt q, der dazugehörige Geschwindigkeitsvektor q v, die Ganzzahl k sowie das Zeitintervall [t s,t e ]. Ausgabe: Sich nicht überlappende Zeitintervalle, zu jedem Intervall eine geordnete Liste von Objekt-IDs.

114 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge Die Autoren bieten auf dieser Grundlage eine Formel, mit der der Abstand zweier beweglicher Objekte als Funktion der Form f(t)= at² + bt + c modelliert werden kann. (Siehe Schaubild 1. Die mathematischen Details werden hier ausgespart.) Der Graph hat immer die Form eines Tals. Zur einfacheren Veranschaulichung wird im Folgenden ein zweidimensionales Modell gewählt. Wie Schnittpunkte zweier solcher Funktionen als Indikator für eine Veränderung im Ergebnis dienen können, kann man im Schaubild 2 sehen. Schaubild 1 Der Nearest Neighbor Search-Algorithmus (NNS) gliedert sich in zwei Teile: NNS-a NNS-b 2.2 NNS-a Eingabe: das bewegliche Objekt q, ein Menge von n beweglichen Objekten O, das Zeitintervall [t s, t e ]. Ausgabe: die k nächsten Nachbarn Ziel ist es, das Zeitintervall in Teilintervalle zu unterteilen, in denen die Liste der nächsten Nachbarn unverändert bleibt. Solche Zeitintervalle werden durch die erwähnten split points definiert. Die Menge der beweglichen Objekte O wird hierzu unterteilt in: Schaubild 2 die Menge K der k nächsten Nachbarn die Menge C der Kandidaten, die an einem zukünftigen Zeitpunkt zu einem nächsten Nachbarn werden könnten die Menge R der verworfenen Objekte, die für die Ergebnismenge ohne Bedeutung sind Zur Berechnung stellen die Autoren folgende Hilfssätze auf: 1. Satz: Bewegliche Objekte, deren Abstandsfunktionen die Funktionen der k nächsten Nachbarn im Zeitintervall nicht schneiden, können verworfenen werden. (Wann immer sich zwei Objekte schneiden, kann sich die Ergebnismenge verändern. Wenn ein Objekt also die k nächsten Nachbarn nicht schneidet, kann es nicht Teil der Ergebnismenge sein.) 2. Satz: Wenn ein nächster Nachbar N und ein Kandidat K sich schneiden, dann ist N der letzte

115 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge (also k-te) nächste Nachbar der Liste. 3. Satz: Wenn sich ein nächster Nachbar N und ein Kandidat K zu einem Zeitpunkt t x schneiden, dann werden alle Schnittpunkte vom Kandidaten K mit nächsten Nachbarn, die zuvor stattfinden, nicht als split points betrachtet (einfach deshalb, weil das Ergebnis bis t x schon berechnet wurde) Damit kann NNS-a nun formuliert werden. 1. Alle Objekte werden zu den Kandidaten hinzugefügt, die Liste mit den NN sowie mit den verworfenen Objekten wird als leer initialisiert. 2. die Liste der split points wird mit dem Start- und Endpunkt des zu prüfenden Zeitintervalls initialisiert. 3. Es werden die knn zum Startpunkt t s berechnet und der Liste der NN hinzugefügt. 4. Für alle NN werden die Schnittpunkte mit den anderen NN (wegen evtl. sich verändernde Reihenfolge) sowie mit den Kandidaten (wegen evtl. sich verändernde nächste Nachbarn) berechnet und zu den split points hinzugefügt. Kandidatenobjekte, die keine solchen Schnittpunkte besitzen werden verworfen (Satz 1). 5. Für die ermittelten Schnittpunkte werden in chronologischer Reihenfolge folgende Aktion durchgeführt: 1. die Reihenfolge der Objekte in der Liste der NN vertauscht, falls es sich um zwei NN handelt oder. 2. der Kandidat den NN hinzugefügt und umgekehrt, falls es sich um ein Kandidaten und einen NN handelt. Falls ein Objekt zum ersten Mal in der Liste der NN ist, müssen noch die Schnittpunkte mit den Kandidaten ermittelt werden, was die Liste der split points entsprechend ändert. 3. Beim Schnitt zweier Kandidaten wird der split point ignoriert. Ergebnis ist eine Liste von knn für jedes ermittelte Teilintervall. 2.3 NNS-b Der NNS-b Algorithmus erlaubt zu einem mit NNS-a berechneten Ergebnis das Überprüfen von zusätzlichen Objekten, die zum Zeitpunkt von NNS-a noch nicht überprüft wurden. (Dies wird im anschließenden Gesamtalgorithmus NNS-CON benötigt.) Hierzu werden die Schnittpunkte des neuen Objektes w mit den der nächsten Nachbarn in allen Teilintervallen untersucht. Hierbei sind 4 Fälle möglich, die unterschieden werden können: 1. w schneidet keinen der NN im betreffenden Intervall und liegt über dem relevanten Bereich. In diesem Fall wird w ignoriert, da es nicht zu den knn beitragen kann. 2. w schneidet keinen der knn, liegt aber komplett im relevanten Bereich. In diesem Fall muss w in Betracht gezogen werden. Die Anzahl der split points könnte reduziert werden. 3. w schneidet ein Objekt, dass zu diesem Zeitpunkt aber kein NN ist. Die Ergebnismenge kann sich in diesem Fall nicht ändern, weswegen w ignoriert wird. 4. w schneidet ein Objekt, dass zu diesem Zeitpunkt ein nächster Nachbar ist. w muss in diesem Fall in Betracht gezogen werden, da ein neuer split point generiert wurde. Einige der alten split points könnten verworfen werden.

116 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge Die Autoren stellen nun einen weiteren Hilfssatz zur Berechnung auf: 4. Wenn ein Objekt im Gesamtintervall keinen der NN schneidet und seine Position unter den knn am Anfang des Intervalls pos w ist, dann behält w diese Position im gesamten Intervall bei. Aus diesen Überlegungen lässt sich der NNS-b Algorithmus ableiten. (Es wird an dieser Stelle darauf verzichtet, NNS-b durchzugehen. Der Algorithmus beinhaltet im wesentlichen die Abarbeitung der genannten vier Fälle.) 2.4 NNS-CON Im Gesamtalgorithmus NNS-CON werden sowohl NNS-a als auch NNS-b verwendet. Ausgangspunkt ist dabei der Wurzelknoten eines TPR-Baumes, der alle Knoten mit den umgebenden Rechtecken und den zu prüfenden Objekte enthält. Dieser wird nun mittels einem depth-first-search-ähnlichen Verfahren durchsucht. Dabei werden in Fällen von inneren Knoten alle umgebenden Rechtecke nach ihrem Minimalabstand zum Abfrageobjekt mittels der Metrik mindist geordnet und der Algorithmus dann rekursiv auf die nun geordneten Rechtecke angewandt. (Die Metrik mindist berechnet zu einem Punkt p und einem Rechteck r den Abstand zu den Randpunkten des Rechtecks, falls der Punkt außerhalb liegt, sonst 0.) Bei einem Blattknoten werden zunächst alle Objekte des betroffenen Rechtecks einer Menge von Kandidaten hinzugefügt, bis man eine Menge von m größergleich k erreicht hat. Auf diese Menge wird nun NNS-a angewendet. Für alle nachfolgenden Rechtecke werden zunächst aussichtslose Kandidaten von der Berechnung ausgeschlossen (siehe unten), anschließend wird für jedes übriggebliebene Element NNS-b angewendet. 2.5 Zusätzliche Techniken zum Ausschluss von aussichtslosen Kandidaten (Pruning Techniques) Dabei wird, wenn möglich, über die bereits gefundenen NN der maximal mögliche Abstand definiert, den ein Objekt noch haben kann, um die Ergebnismenge zu beeinflussen. Dabei kann wahlweise eine der folgenden Methoden zur Verringern der Berechnungen angewandt werden: Schaubild 3 1. Im ersten Fall wird ein Rechteck über den maximalen Abstand vom abgefragten Objekt zu den NN definiert. Schneidet das umgebende Rechteck eines inneren Knotens des TPR-Baums dieses Rechteck, so muss dieser Knoten überprüft werden, da er die Ergebnismenge beeinflussen kann. 2. Der zweite Fall ist analog zum ersten, nur dass hier mehrere Rechtecke für die durch die split points bestimmten Intervalle definiert

117 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge werden (siehe Schaubild 3). Die Auswirkungen der unterschiedlichen Techniken sind offensichtlich: PT 1 benötigt nur eine Berechnung, verursacht wegen der fehlenden Präzision aber mehr Speicherzugriffe. PT 2 benötigt mehrere Berechnungen und weniger Speicherzugriffe. 2.6 Performance-Vergleich Die Autoren unterziehen den NNS-CON Algorithmus einen Vergleich mit den von Tao und Papadias veröffentlichten NNS-REP Algorithmus [1] (beide in C programmiert). Beide werden unter unterschiedlichen, variablen Aspekten untersucht: Anzahl der nächsten Nachbarn Größe des Zwischenspeichers Größe des Zeitintervalls Anzahl der räumlichen Dimensionen Größe der abgefragten Datenbank Die Aspekte wirken sich verschieden stark auf die Performance aus. Zusammenfassend kann man jedoch sagen, dass NNS-CON unter allen Gesichtspunkten (z.t. deutlich) besser abschneidet. 3. An Efficient Algorithm for Predicitive Continuous Nearest Neighbor Query Processing and Result Maintenance (Lee / Leong / Zhou, 2005) Die Autoren dieses Papers gehen ähnlich vor, allerdings soll ihr Algorithmus auch Bewegungsupdates möglich machen. Ihre Überlegungen beschränken sich zunächst auf den 1NN- Fall, werden später aber für knn erweitert. Schaubild Grundidee Das allgemeine Vorgehen ist folgendes: Anfangs wird ein Punkt als nächster Punkt für das gesamte Zeitintervall festgesetzt, die Anzahl der Teilintervalle ist somit 1. Anschließend wird die Funktion dieses Punktes auf Schnittpunkte mit der Funktion des nächsten Punktes überprüft. Dabei sind drei Fälle möglich (keine, einer, zwei Schnittpunkte, wobei im Fall keine Schnittpunkte ein Spezialfall auftreten kann). Falls ein Schnittpunkt im untersuchten Zeitintervall liegt, bedeutet dass einen split point, in dem sich die Zusammenstellung bzw. Reihenfolge der NN ändern kann; dies bedeutet dann, dass sich die Anzahl der Teilintervalle um die Anzahl der im Gesamtintervall liegenden Schnittpunkte erhöht. Für die veränderten Intervalle muss nun festgestellt werden, welcher Punkt weiter vorne liegt. Die Autoren geben Formeln an, um dies anhand der gegebenen quadratischen Funktionen für alle vier Fälle festzustellen (sowie einen Algorithmus qnn-compare, mit dem zwei Objekte verglichen werden können und der alle vier Fälle beinhaltet). Dieser Vergleich wird nun für alle verbleibenden Objekte durchgeführt (siehe Schaubild 4).

118 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge 3.2 Techniken zur Vermeidung unnötiger Berechnungen Die Autoren machen zusätzliche Beobachtungen, mit denen sich die Anzahl der Berechnungen verringern lässt. Dazu definieren sie zunächst zwei Metriken mindist und maxdist. mindist ist das Minimum der bekannten quadratischen Abstandsfunktion, falls es im gesuchten Intervall liegt, sonst das kleinere (nähere) Intervallende; maxdist bezeichnet das größere Intervallende. Dazu stellen die Autoren zwei Lemmata auf: 1. Bei einer Menge von Objekten muss das Objekt mit dem geringsten mindist Wert zum 1NN Ergebnis beitragen. 2. Wenn ein Objekt Teil der 1NN Ergebnismenge ist, können Objekte mit einem höheren mindist Wert als der maxdist Wert dieses Objekts nicht Teil der Ergebnismenge sein. Mit diesen Lemmata erstellen die Autoren den Sortieralgorithmus qnn, der die Objekte nach ihrer mindist sortiert und terminiert, wenn ein Objekt ein mindist aufweist, der höher ist als der minimale maxdist (gespeichert in der Variable minmaxdist) der davor sortierten Objekte. Die verbleibenden Objekte können das Ergebnis nicht beeinflussen und gehen nicht in die Berechnungen ein. 3.3 Integration in den TPR-Baum In einem nächsten Schritt werden die erarbeiten Algorithmen in die TPR-Baum-Datenstruktur integriert. Um den gewünschten einzigen Zugriff auf einen Knoten nicht zu überschreiten, wählen die Autoren einen vorsichtigen Ansatz, der eventuelle überflüssige Berechnungen in Kauf nimmt. Da ein umgebendes Rechteck eines TPR-Knotens seine Position oder Größe im Laufe der Zeit verändern kann, werden diese Rechtecke zu sogenannten Minimum Bounding Sweeping Regions (MBSR) erweitert, indem das ursprüngliche Rechteck um die die Geschwindigkeitsvektoren beinhaltende Velocity Bounding Box im gesuchten Zeitraum erweitert wird (siehe Schaubild 5). Schaubild 5

119 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge Der eigentliche Suchalgorithmus qnn_df_traverse durchläuft einen Baum vergleichbar zu Depthfirst-search. Innere Knoten werden zunächst nach der mindist ihrer MBSR sortiert; solange eine solche mindist eines Knotens die minimale maxdist der gefunden NN nicht überschreitet, werden alle Objekte des Knotens mittels qnn verglichen. Der Einsatz von MBSRs kann zwar zu unnötigen Knotenzugriffen führen, garantiert aber die Korrektheit des Verfahrens. 3.4 Erweiterung auf knn Hierzu werden die Lemmata 1 und 2 für knn erweitert und lauten nun: 3. Bei einer Menge von Objekten müssen die ersten k Objekte mit dem niedrigsten mindist Wert Teil der Ergebnismenge sein. 4. Wenn k Objekte Bestandteil der knn Ergebnismenge sind, können Objekte mit einem mindist Wert, der höher ist als das k-te Minimum der geprüften maxdist-werte ist, nicht Teil der Ergebnismenge sein. Statt einer Variable minmaxdist wird nun ein Array minmaxdist der Größe k gespeichert. Bis auf die ersten k Objekte wird jedes Objekt auf das komplette Array geprüft. 3.5 Organisation des Zwischenspeichers Das bisherige Verfahren wäre in einer statischen Umgebung ausreichend. Für dynamische Umgebungen bieten die Autoren eine Organisationsform für den Zwischenspeicher an, mit dem die Kosten für zusätzliche Abfragen gering gehalten werden sollen. Und zwar wird eine Datenstruktur aufgebaut, die für jedes Teilintervall oft mehr als k Elemente speichert. Dieser Überschuss dient dazu, weitere Abfragen nur über den Zwischenspeicher bewältigen zu können. Teilintervalle werden als rekursive Struktur B - p - A verwaltet, welche verfeinert werden kann. p stellt ein Pivotelement dar, B das below- set mit den Objekten, die niedriger (näher) sind als p und A das above-set mit den Objekten, die höher (weiter entfernt) sind als p. A und B sind auf die Größe k-1 beschränkt, womit wir minimal k und maximal 2k-1 Objekte haben. Das finale Ergebnis setzt sich aus B, p und evtl. Objekten aus A zusammen. Vergleiche beziehen sich immer nur auf das Pivotelement, nie auf alle Objekte. Dazu werden Regeln angegeben, wie man in den Vergleichsfällen vorzugehen hat. Regel 1. Wenn ein Objekt o im gesamten Zeitintervall unterhalb von p liegt, wird o B hinzugefügt. Läuft B über, wird p und A gelöscht. Ein Element aus b wird als das neue Pivotelement bestimmt, die verbleibenden Elemente werden erneut hinzugefügt. Regel 2. Wenn ein Objekt im gesamten Intervall oberhalb von p liegt, wird es A hinzugefügt. Läuft A über, wird A durch eine Gesamtstruktur B' - p' - A' ersetzt, wobei B' und A' auf die Größe k-2 beschränkt werden. Ein Element aus A wird als Pivotelement ausgewählt, die verbleibenden Elemente werden in die neue Struktur eingefügt. Regel 3. Wenn ein Objekt im Intervall t a unter und im Intervall t b über p liegt, wird der Inhalt des gesamten Intervalls K t in K ta und K tb geklont und das Objekt nach Regel 1 in K ta und nach Regel 2 in K tb eingefügt. Das Ergebnis ist dieser Vorgehensweise ist also die genannte dynamische B-p-A Speicherstruktur für jedes gefundene Teilintervall.

120 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge 3.6 Updates Diese Organisationsform des Zwischenspeichers kann auch hilfreich sein, wenn es um Updates geht. Ein Update muss immer dann stattfinden, wenn eine Orts- oder Bewegungsänderung stattgefunden hat. Solche Updates können in Einfüge- und Löschmengen unterteilt werden. Löschmengen beinhalten dabei gelöschte Objekte. Zunächst muss geprüft werden, ob eine Löschmenge dass aktuelle Ergebnis beeinflusst, d.h. ob es Überschneidung mit der aktuellen Ergebnismenge gibt. Falls das Ergebnis nach einer Löschung noch mindestens k Objekte beinhaltet, kann eine zusätzliche Abfrage unterbleiben. Die Einfügemenge wird nur betrachtet, wenn eine Abfrage des Index unterbleibt. Zusätzlich wird ein eingefügtes Objekt nur dann zur Einarbeitung in das Ergebnis in Betracht gezogen, wenn es in das below-set eingefügt werden kann. 4. Anmerkungen und Kritik der beiden Arbeiten Positiv an beiden Arbeiten: Die Algorithmen sind für beliebige knn-suchen und beliebige räumliche Dimensionen einsetzbar. Es sind Techniken zur Vermeidung unnötiger Berechnungen vorhanden. Fast Nearest-Neighbor Query Processing in Moving Objects Databases Positiv: Die aufgestellte Sätze werden bewiesen. Es findet ein ausführlicher Performance-Vergleich statt. Negativ: Es ist keine Möglichkeit für Updates vorgesehen. An Efficient Algorithm for Predictive Continuous Nearest Neighbor Query Processing and Result Maintenance Positiv: Es ist eine Möglichkeit für Updates vorhanden. Negativ: Die aufgestellten Sätze werden nicht bewiesen. Es findet kein Performance-Test statt, die Demonstration der Nützlichkeit des vorgestellten Zwischenspeichermodells steht damit noch aus.

121 Marek Niwinski, Thema 9: Nächste Nachbarn Suche bei beweglichem Abfragepunkt und beweglicher Abfragemenge Literaturverzeichnis [1] Y. Tao, D. Papadias. Time-parametrized queries in spatial-temporal databases, Proceedings ACM SIGMOD Conference, , 2005b.

122

123 FERNUNIVERSITÄT HAGEN Seminar 1912 Nächste Nachbarn Suche im Wintersemester 2010/2011 Barbara Drüke Thema 11: Nächste Nachbarn Suche in dynamischen Umgebungen bei beweglichem Anfragepunkt und beweglicher Anfragemenge

124 INHALTSVERZEICHNIS Seite 2 Inhaltsverzeichnis 1 Einleitung 3 2 Monitoring der k-nn-suchen beweglicher Objekte mithilfe von Indexen Der Objekt-Index Der Anfrage-Index Der hierarchische Objekt-Index Laufzeit-Analyse Monitoring der k-nn-suchen beweglicher Objekte mithilfe von CPM Die Ermittlung der k nächsten Nachbarn Die Vorgehensweise des CPM-Algorithmus im Beispiel Die Behandlung einzelner Updates Die Behandlung multipler Updates Laufzeit-Analyse Methodenvergleich Qualitativer Vergleich zwischen CPM und dem one-level-objekt-index Experimtentelle Evaluation Abhängigkeit von der Zellgröße δ Abhängigkeit von der Objektanzahl N Abhängigkeit von der Anzahl der Anfragen n Abhängigkeit von k, der Länge der Liste nächster Nachbarn Abhängigkeit von der Objektgeschwindigkeit Zusammenfassung der Ergebnisse 19

125 2 MONITORING DER K-NN-SUCHEN BEWEGLICHER OBJEKTE MITHILFE VON INDEXEN Seite 3 1 Einleitung Die zunehmende Verbreitung mobiler Kommunikationsmittel (PDA s, Handys, Netbooks) und der Ausbau von drahtlosen Netzwerken im Kontext einer allgemeinen Steigerung der Mobilität führt zu steigenden Anforderungen an Datenbankanwendungen in Bezug auf räumlichzeitliche Daten und sich bewegende Objekte. Die nächste Nachbarn-Suche ist eine Methode, solche Anforderungen anzugehen. In diesem Seminar werden verschiedene Ansätze behandelt, die bezüglich der Genauigkeit, der Dimensionaliät oder der Dynamik unterschiedlich spezialisiert sind. Die vorliegende Arbeit ist eine von vier Seminararbeiten zum Thema Nächste Nachbarn Suche in dynamischen Umgebungen bei beweglichem Anfragepunkt und beweglicher Anfragemenge. Die beiden Arbeiten, die zu diesem Thema vorgestellt werden, befassen sich mit dem Problem einer fortlaufenden, regelmäßigen Bestimmung der k nächsten Nachbarn (k-nn-suche) zu einem beweglichen Anfragepunkt. Dazu werden die Positionsänderungen von den Objekten laufend an einen Server gesendet und in einem Puffer gespeichert. In einem festgelegten Zeitintervall τ wird vom System eine Momentaufnahme der Objektpositionen gemacht. Anschließend wird auf der Grundlage jeder Momentaufnahme ein Objekt-Index aktualisiert mit den Positionen der Objekte zum Zeitpunkt t und die gespeicherten Anfragen werden ausgewertet, so dass die Anfrageergebnisse für diesen Zeitpunkt exakt sind. Die Anforderungen an das Monitoring von k-nn-suchen in dynamischen Umgebungen lassen sich wie folgt zusammenfassen [MHP 05], Kapitel 1: mehrere Anfragen, die wiederholt ausgeführt werden Berechnung und fortlaufende Aktualisierung der Anfrage-Ergebnisse Berechnung im Hauptspeicher, um Positionsupdates zeitnah verarbeiten zu können möglichst geringe Kosten für CPU und Kommunikation Zuerst wird der Ansatz von Yu, Pu und Koudas Monitoring k-nearest Neighbor Queries Over Moving Objects [YPK 05] vorgestellt. Sie benutzen einen one-level Objekt-Index, einen hierarchischen Objekt-Index und einen Anfrage-Index. Anschließend, weil auf [YPK 05] bezugnehmend, wird die Arbeit von Mouratidis, Hadjieleftheriou und Papadias Conceptual Partitioning: An Efficient Method for Continous Nearest Neighbor Monitoring [MHP 05] vorgestellt. Sie benutzen einen Objekt-Index, der in Rechtecke partitioniert wird, um die Anzahl von Zellzugriffen zu minimieren. Im letzten Teil wird die Leistungsfähigkeit beider Ansätze bezüglich spezifischer Anforderungen und Umgebungen beurteilt. 2 Monitoring der k-nn-suchen beweglicher Objekte mithilfe von Indexen 2.1 Der Objekt-Index Von [YPK 05] (wie auch von [MHP 05]) wird die betrachtete Region auf den sogenannten unit square abgebildet (Einheitsquadrat mit Seitenlänge 1), so dass sich alle beweglichen Objekte und Anfragen mit ihren x- und y-koordinaten in diesem Bereich befinden. Dieses Quadrat dient als Objekt-Index. P(t) ist dann eine Menge von Objektpositionen p(t) zu einer bestimmten Zeit t. Jedes Objekt p(t) P(t) ist eindeutig und hat die Koordinaten p(t) x, p(t) y. Das Gitter besteht aus Zellen derselben Größe und jede Zelle läßt sich durch den Zeilen- und Spaltenindex(i,j) bezeichnen. Wenn Rechtecke (zur Annäherung von Kreisen) benutzt werden, bezeichnet R(c 0, l) das Rechteck mit der Zelle c 0 = (i 0, j 0 ) im Zentrum und

126 2 MONITORING DER K-NN-SUCHEN BEWEGLICHER OBJEKTE MITHILFE VON INDEXEN Seite 4 der Größe l, so dass die unterste linke Zelle bei (i 0 l, j 0 l) und die oberste rechte Zelle bei (i 0 + l, j 0 + l) liegt. Die von solch einem Rechteck enthaltene Objekt-Sammlung wird bezeichnet durch R P (t). Zu jeder Zeit t besteht der Index aus allen Zellen (i,j) und den jeweils dazugehörigen Objekt-Listen PL(i,j) mit den Bezeichnern (IDs) derjenigen Objekte, die sich zur Zeit t in dieser Zelle befinden. Die Koordinaten (x,y) der Objekte werden in einem Array der Länge N P gespeichert, wobei die ID eines Objektes für dessen Position im Array steht. Abb. 1 Datenstruktur des Objekt-Index Das Gitter ist ein 2-dimensionaler Array der Größe 1/δ x 1/δ. Jede Zelle (i,j) besitzt eine verkettete Liste, um die Objektliste PL(i,j) aufzunehmen. Beim Aufbau des Index muss dann einmalig ein Scan über die Objekte ausgeführt werden, um sie in die entsprechenden Zellen einzufügen. Jede Anfrage q q x, q y unterhält eine geordnete Liste mit den ID s der k nächsten Nachbarn, angefangen beim nächsten bis zum k-entferntesten. k-nn q (t)ist dann die ID des k-nächsten Nachbarn zu einer Anfrage q zur Zeit t. Für die erstmalige Abarbeitung einer Anfrage wird ein Rechteck R 0 benutzt mit der Zelle c q = ( q x /δ, q y /δ ) im Zentrum und der Größe l, so dass R 0 mindestens k Objekte von P(t) enthält: R 0 P(t) k. Dazu wird l schrittweise vergrößert, bis R 0 mindestens k Objekte enthält. Diese Menge nennen wir P(t) P(t). Damit ist allerdings nicht garantiert, dass sich wirklich alle k nächsten Nachbarn im Rechteck R 0, also in P(t) befinden. Im Beispiel von Abbildung??, einer 3-NN-Suche, liegt das Objekt p3 zwar außerhalb des Rechtecks R 0, jedoch näher an q als das Objekt p1 aus P(t). Um die tatsächlichen 3-NN q (t) zu erfassen, muss das am weitesten vom Anfragepunkt q entfernte Objekt in P(t) ermittelt werden (in diesem Fall Objekt p1). Aus der Entfernung zwischen diesem Objekt und dem Anfragepunkt wird l crit berechnet, im Beispiel l crit = (q - p1). Damit läßt sich das Rechteck R crit = R(c q, l crit /δ) berechnen, in dem sich dann wirklich alle 3-NN q (t) befinden.

127 2 MONITORING DER K-NN-SUCHEN BEWEGLICHER OBJEKTE MITHILFE VON INDEXEN Seite 5 P(t) sind die Positionen der Objekte zur Zeit t und p(t) P(t) die Position eines Objektes. Updates erfolgen in regelmäßigen Zeitabständen t. Für t = t + t sind P(t ) die aktualisierten Positionen der Objekte. Während bei zufälliger Verteilung der Objekte ein Neuaufbau des Index adäquat ist, kann es bei gerichteter Fortbewegung der Objekte von Vorteil sein, inkrementelle Updates auf den Objekt-Index und die Ergebnisliste (knn q (t )) auszuführen. Um die Objektliste PL(i,j) zu aktualisieren wird ein Scan über die Objekte in P(t ) ausgeführt Abb. 4 Vorgehen bei Aktualisierung und nichts unternommen, solange p(t ) = p(t). Hat das Objekt jedoch die Zelle verlassen, wird p von PL( p(t) ) nach PL( p(t ) ) verschoben. Um die Ergebnisliste (knn q (t )) inkrementell zu berechnen, wird über den Vergleich mit dem vorherigen Anfrageergebnis (knn q (t)) direkt R crit berechnet, indem die maximale Entfernung von q zu den vorherigen NN s als Durchmesser des Kreises benutzt wird, in dessen Zellen nach den neuen k-nns gesucht wird: l crit := max{ q p(t ) : p knn q (t)} R crit := R(c q, l crit ) find top k-nn in p(t ) R crit P(t ). Auf diese Weise bestimmen wir zuerst, wie weit die vorherigen k-nns sich entfernt haben und haben dann den Bereich, in dem sich garantiert die neuen k-nns befinden. Im Beispiel in Abbildung 4 hat sich das Objekt p 2 am weitesten von q entfernt, l crit ist also die Entfernung zwischen q und p 2. Das resultierende Rechteck R crit ist in Abbildung 4 dargestellt und enthält alle 3 NN q (t ): p 4, p 5 und p Der Anfrage-Index Bei der Verwendung des Objekt-Index wird ab einer genügend großen Anzahl von Anfragen die Anfragebeantwortung (T query ) zum dominierenden Faktor der Gesamtantwortzeit, während die Unterhaltung des Index (T Index ) unerheblich wird. Dagegen wird bei einer großen Anzahl von Objekten und wenigen Anfragen die Zeit für die Unterhaltung des Index dominant. In diesem Fall scheint es von Vorteil zu sein, die Anfragen in einer Gitterstruktur zu indizieren und den Scan über die Objekte durchzuführen. Dieser Anfrage-Index speichert für jede Query q eine kritische Region R crit. Dieses Rechteck mit dem Zentrum c q enthält sowohl das Anfrageobjekt als auch die k-nns von q. Außerdem hält jede Zelle (i,j) des Gitters eine Anfrageliste QL(i,j), in der alle Anfragen gespeichert werden, deren kritische Region R crit (q) diese Zelle enthält, d.h. QL(i, j) = q Q : (i, j) R crit (q) (Abb. 5).

128 2 MONITORING DER K-NN-SUCHEN BEWEGLICHER OBJEKTE MITHILFE VON INDEXEN Seite 6 Abb. 5 Datenstruktur des Anfrage-Index Abb. 6 Algorithmus zur Berechnung der k-nns mit dem Anfrage-Index Aus diesen Informationen lässt sich R crit (q)(t + t) berechnen wie in Abschnitt 2.1 beschrieben. Anschließend wird q in die QL jeder Zelle in R crit (q)(t + t) eingefügt. Und wiederum stehen wir vor der Wahl, den Anfrage-Index bei jedem Update neu aufzubauen oder ihn inkrementell zu unterhalten. Dazu muss q aus jeder Zelle R crit (q)(t) R crit (q)(t + t) gelöscht und in jede Zelle R crit (q)(t + t) R crit (q)(t) eingefügt werden. Anschließend werden die neuen knns der Anfragen durch einen einfachen Scan über die Objekte berechnet (Abb. 6). 2.3 Der hierarchische Objekt-Index Abb. 7 Ungleichförmig verteilte Objekte und zwei 3-NN-Anfragen Bei einer gleichmäßigen Verteilung der Objekte gewährt der einfache Objekt-Index eine sehr effiziente Berechnung der Nächste- Nachbarn-Anfragen. Die erwartete Antwortzeit ist tatsächlich linear abhängig von der Anzahl der Anfragen N Q, nicht aber von der Anzahl der Objekte N P in der betreffenden Region. Dieses Verhalten gilt allerdings nicht für die Praxis, wo Daten häufig ungleichmäßig verteilt sind wie im Beispiel von Abbildung 7. Dort trifft z.b. die Anfrage q 1 auf eine äußerst dünn besiedelte Region, weshalb die kritische Region sehr groß wird, während q 2 auf eine äußerst dicht besiedelte Region trifft, weshalb die kritische Region sehr klein ist, aber voller Objekte. Dadurch wird im Fall von q 1 ein Scan über viele Zellen notwendig und im Fall von q 2 ein Scan über viele Objekte. Der Hierarchische Objekt-Index wird als Erweiterung des einfachen Objekt-Index eingeführt, um die Performanceeinbußen bei ungleichförmigen Verteilungen abzumildern. Die simple Idee dahinter ist, dicht bevölkerte Zellen in Unterzellen geringerer Größe zu splitten. Um den hierarchischen Objekt-Index aufzubauen, wird gestartet mit einem Level-1 Objekt- Index mit einer initialen Zellgröße von δ 0, wobei δ 0 nicht mehr von der Anzahl der Objekte N P abhängig ist und in der Tat deutlich größer als die für den einfachen Objekt-Index op-

129 2 MONITORING DER K-NN-SUCHEN BEWEGLICHER OBJEKTE MITHILFE VON INDEXEN Seite 7 timale Zellgröße sein sollte. Jedesmal, wenn die Anzahl von Objekten in einer Zelle (i,j) des ersten Levels eine festgelegte maximale Füllung N c überschreitet, wird (i,j) in die durch den Splittungsfaktor m festgelegte Anzahl m x m von Unterzellen geteilt und die Objekte werden in die entsprechenden Unterzellen verschoben. Dieser Prozess wird iterativ wiederholt, bis keine Zelle eines Levels mehr als N c Objekte enthält. Der resultierende hierarchische Objekt-Index verfügt jetzt über indizierende Zellen, die auf Untergitter verweisen und über Blattzellen, die Objekt-ID s der in ihnen gespeicherten Objekte beinhalten (Abb 8). Der hierarchische Objekt-Index ist im Unterhalt teurer als Abb. 8 Hierarchischer Objekt-Index mit 3 Leveln, Splitting-Faktor m = 3 und Maximaler Füllung N c = 3 der nicht hierarchisch organisierte. Angenommen ein Objekt bewegt sich von p(t) nach p(t ). Nach der Lokalisierung der entsprechenden Blattzellen c und c, ist entweder nichts zu unternehmen (c=c ) oder p muss aus c gelöscht und in c eingefügt werden. Falls c daraufhin überläuft, muss die Zelle weiter aufgeteilt werden. Ebenso wird nach einer Löschung kontrolliert, ob die Blattzelle zurückgeführt werden kann in eine Blattzelle höheren Levels. Bei stark ungleichmäßigen Verteilungen müssen mehr Level erstellt werden und die Kosten für die Suche nach c und c steigen an. Ein vollständiger Wiederaufbau des Index kann in diesem Fall günstiger sein als die inkrementelle Unterhaltung. Die hierarchische Struktur bietet eine größere räumliche Auflösung unter Verwendung weniger Zellen. Im Falle der Anfragen q 1 und q 2 in Abbildung 4 wird die große kritische Region R crit (q1) durch wenige große Zellen erfasst, wodurch weniger Zellen aufgesucht werden müssen, während die kritische Region R crit (q2) durch kleinere Zellen erfasst wird, die weniger Objekte enthalten. 2.4 Laufzeit-Analyse Die Laufzeit T zur Berechnung der neuen Anfrageergebnisse setzt sich aus der Zeit zusammen, die für den Aufbau des Objekt-Index notwendig ist (T index ) und der Zeit, die gebraucht wird, die k-nn s mit dem Algorithmus in Abbildung?? zu berechnen (T query ): T = (T index ) + (T query ). Lemma 1 Angenommen, die Objekte sind gleichförmig verteilt. Dann ergibt sich für die Zellgröße δxδ und die Konstanten a 0, a 1 und a 2 : ) (l crit + δ) T = a 0 N P + (a a 2 (l crit + δ) 2 N P N Q δ 2 Theorem 1 Angenommen, die Objekte sind gleichförmig verteilt und die optimale Zellgröße ist δ = 1 NP. Dann ist die erwartete Antwortzeit T query konstant im Hinblick auf die Anzahl der Objekte N P und steigt linear mit der Zahl der Anfragen. Damit ist die totale Rechenzeit T = a 0 N P + a 3 N Q für Konstanten a 0, a 3. Theorem 2 Bei einer Zellgröße von δ = 1 NP und einer ungleichförmigen Verteilung der Objekte ist die Zeit für die Anfrageverarbeitung gegeben durch T query = (b 1 µ N P + b 2 µ 2 N P + b 0 ) N Q,

130 3 MONITORING DER K-NN-SUCHEN BEWEGLICHER OBJEKTE MITHILFE VON CPM Seite 8 wobei 0 µ 1 positiv korreliert mit der Ungleichförmigkeit der Verteilung. Man beachte, dass bei ziemlich gleichförmigen Verteilungen die Zeit für die Anfrageverarbeitung dominiert wird von (O( N P )), während sie im schlimmsten Fall einer extrem ungleichförmigen Verteilung linear wächst mit der Anzahl der Objekte (O(N P )). Theorem 3 Bei der inkrementellen Anfrageverarbeitung, einer Zellgröße von δ = 1 NP und einer Objektgeschwindigkeit µ ist die Zeit für die Anfrageverarbeitung gegeben durch T query = (b 0 + b 1 µ N P + b 2 µ 2 N P +) N Q, wobei µ positiv korreliert mit der Geschwindigkeit der Objekte. Damit gilt für die Mobilität das Gleiche wie für ungleichförmige Verteilung der Objekte, nämlich, dass für kleine µ die Kosten für die Anfrageverarbeitung von der Komplexität O( N P ) sind und für große µ von O(N P ). 3 Monitoring der k-nn-suchen beweglicher Objekte mithilfe von CPM Mouratidis, Hadjeieleftheriou und Papadias stellen in ihrer Arbeit zum Monitoring mithilfe konzeptueller Partitionierung (CPM)[MHP 05] eine effiziente Methode für fortlaufende Nächste-Nachbarn Suchen vor. Mit CPM sollen in hochdynamischen Umgebungen multiple fortlaufende Anfragen effizient und zeitnah verarbeitet werden. Die zugrundeliegende Idee ist, durch die Partitionierung die Anzahl der zur Bestimmung der k-nn s bearbeiteten Zellen zu minimieren und nur Updates auf Objekte durchzuführen, die im Einflußbereich einer Anfrage liegen. Betrachtet werden 2-dimensionale Datenobjekte und Anfragen, die häufig und nicht vorhersagbar ihre Position ändern. Ein zentraler Server verarbeitet die Positions- Updates, indem er kontinuierlich die k-nn s jeder Anfrage q, die sich im System befindet, überwacht. 3.1 Die Ermittlung der k nächsten Nachbarn Als Index-Struktur für Objekte und Anfragen wird wie in Teil 2 ein Gitter verwendet. Die Zellgröße ist δ, so dass die Zelle c i,j alle Objekte enthält, deren x-koordinate im Bereich (iδ, (i + 1)δ) und deren y-koordinate im Bereich (j δ,(j+1)δ) liegt. Abb. 9 a) Ermittlung des 1-NN zu q b) Partitionierung in Rechtecke Für die Berechnung der k nächsten Nachbarn der Anfrage q, wird das NN-Computation Modul (siehe Abb. 11) benutzt. Dabei ist für eine Zelle c und eine Anfrage q mindist(c,q)

131 3 MONITORING DER K-NN-SUCHEN BEWEGLICHER OBJEKTE MITHILFE VON CPM Seite 9 die minimal mögliche Entfernung zwischen irgendeinem Objekt p c und q. Die Liste der identifizierten k nächsten Nachbarn ist best NN und best dist ist die Entfernung des k- ten NN. Also kann, falls mindist(c,q) best dist, die Zelle c übergangen werden, weil sie keinen nähreren Nachbarn zum Anfragepunkt q enthalten kann als die aktuellen NN s in der Liste best dist. Aufbauend auf diese Überlegung wäre der einfachste Weg, eine Anfrage zu verarbeiten, alle Zellen des Gitters nach mindist(c,q) zu sortieren und sie in aufsteigender Reihenfolge zu durchsuchen. Für jede Zelle berechnen wir dann dist(p,q) für alle enthaltenen Objekte und aktualisieren gegebenenfalls die best NN-Liste. Die Suche ist beendet, wenn die betrachtete Zelle c eine min dist(c,q) best dist hat. In Abbildung 9 a) betrachtet der Algorithmus für die 1-NN-Anfrage q nur die grau gezeichneten Zellen und gibt, nachdem p1 und p2 als einzige Objekte gefunden wurden, p2 als 1-NN zurück. Es ist offensichtlich, dass der Algorithmus nur Zellen besucht, die von einem Kreis mit Radius best dist geschnitten werden und diese Zellen müssen jedenfalls betrachtet werden, um keine potentiellen NN s zu übersehen, also ist der Algorithmus in dieser Hinsicht optimal. Jedoch ist es in der Praxis teuer, die mindist für alle Zellen zu bestimmen und die Zellen entsprechend zu sortieren. Deshalb wird an dieser Stelle das Conceptual Space Partitioning eingeführt. Abbildung 9 b) zeigt die Aufteilung des Gitters für den Raum um die Zelle c q der Anfrage q. Jedes Rechteck ist identifiziert durch eine Richtung(U,D,L,R) und eine Ebene (0,1,2), wobei die Ebenen-Nummer der Anzahl der Rechtecke zwischen dem Rechteck und c q entspricht. Lemma Für 2 Rechtecke Dir j und Dir j+1 derselben Richung Dir mit Ebene j bzw. j + 1 gilt, dass mindist(dir j+1, q) = mindist(dir j,q)+δ. Aufbauend auf diesem Lemma wertet der CPM Algorithmus Zellen in aufsteigender Reihenfolge ihrer mindist aus, um die minimale Anzahl Zellen zu verarbeiten. Im Detail initialisiert CPM einen leeren Heap H und fügt die Zelle c q mit Key mindist(c q,q)=0 und das anliegende Rechteck der Ebene 0 jeder Richtung mit Key mindist(dir 0,q) in den Heap ein. Dann werden die Einträge nacheinander vom Heap genommen. Ist der entnommene Eintrag eine Zelle, werden die enthaltenen Objekte untersucht und die best NN von q entsprechend aktualisiert. Ist der Eintrag ein Rechteck (DIR lvl ), werden die Zellen c DIR lvl mit Key mindist(c,q) und das Rechteck DIR lvl+1 mit dem Key mindist(dir lvl+1,q) = mindist(dir l vl,q)+δ in den Heap eingefügt. Der Algorithmus terminiert, wenn der Key des nächsten Eintrags in H (Zelle oder Rechteck) größer oder gleich best dist ist. Diese Informationen werden in einem Query Table gespeichert, um Suchen und Updates darauf ausführen zu können (Abb. 10). Abb. 10 Die Speicherstrukturen von CPM: Query Table (QT) und Objektgitter (G) Koordinaten der Anfrage best dist, der Einflußbereich der Anfrage q, also die Zellen, die von dem Umgebungskreis mit Radius best dist geschnitten werden. visit list enthält alle Zellen, die während der NN-Suche betrachtet worden sind und zwar in der Reihenfolge der Betrachtung.

132 3 MONITORING DER K-NN-SUCHEN BEWEGLICHER OBJEKTE MITHILFE VON CPM Seite 10 search heap H enthält alle Zellen und Rechtecke, die während der NN-Suche auf den Heap gepackt und nicht mehr heruntergenommen wurden. Außerdem speichert CPM für jede Zelle des Gitters folgende Informationen Object list, mit den in der Zelle enthaltenen Objekten Influence list mit den Anfragen aus QT, deren Einflußbereich diese Zelle enthält Abb. 11 Das NN-Berechnungs-Modul von CPM Die Vorgehensweise des CPM-Algorithmus im Beispiel Im Folgenden soll anhand des Beispieles aus Abbildung 12 das Vorgehen des CPM-Algorithmus veranschaulicht werden. Die Tabellen zeigen den Heap, die best NN-Liste, die best dist und die visit list nach jedem Schritt. Anfangs ist die best dist auf gesetzt, die Liste der best NN und die visit list sind noch leer. Der erste Schritt ist in der ersten Tabelle bereits vollzogen, nämlich die, den Anfragepunkt enthaltende Zelle c 4,4 mitsamt ihrer 4 umgebenden Rechtecke DIR 0 in den Heap einzufügen Abb. 12 Beispiel für NN Computation mit CPM mit key mindist, so dass die Zelle c 4,4, die q enthält, an oberster Stelle liegt. Im zweiten Schritt wird c 4,4 vom Heap genommen und, weil keine Objekte darin liegen, lediglich der visit list hinzugefügt. Der nächste Eintrag im Heap ist das Rechteck U 0, also werden die darin enthalten Zellen c 4,5 und c 4,5 dem Heap hinzugefügt. Und das Richtungsrechteck der nächsten Ebene U 1 wird auf den Heap gestellt.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Blatt Nr. 2 Übung zur Vorlesung Grundlagen: Datenbanken im WS3/4 Henrik Mühe (muehe@in.tum.de) http://www-db.in.tum.de/teaching/ws34/dbsys/exercises/

Mehr

Indexstrukturen in Datenbanken

Indexstrukturen in Datenbanken für Zeichendaten und Texte sowie mehrdimensionale Dateiorganisation und Zugriffspfade 3. Juli 2014 Inhaltsverzeichnis 1 Einleitung 2 Präfix B+-Baum 3 Tries 4 k-dimensionale Bäume 5 Grid-File 6 mehrdimensionales

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann Blatt Nr. 9 Übung zur Vorlesung Grundlagen: Datenbanken im WS4/5 Harald Lang (harald.lang@in.tum.de) http://www-db.in.tum.de/teaching/ws45/grundlagen/

Mehr

Mehrdimensionale Zugriffspfade und Dateiorganisation

Mehrdimensionale Zugriffspfade und Dateiorganisation Mehrdimensionale Zugriffspfade und Dateiorganisation Gliederung Begriffe, Anforderungen und Probleme, Anwendungsgebiete Konkrete Techniken Bäume Grid-File Mehrdimensionales Hashing Begriffe Eindimensionale

Mehr

WINTERSEMESTER 2006/2007. Mehrdimensionale Bäume

WINTERSEMESTER 2006/2007. Mehrdimensionale Bäume ALGORITHMISCHE ANWENDUNGEN WINTERSEMESTER 2006/2007 Team: B_blau_Ala0607 Wilhelm Faber 11032935 Ioannis Chouklis 11042438 1 Inhaltsverzeichnis Inhaltsverzeichnis...2 1. Der k-d Baum...3 1.1. Inhomogene

Mehr

Indexe in Dateien. Thomas Behr. 19.November c 2015 FernUniversität in Hagen

Indexe in Dateien. Thomas Behr. 19.November c 2015 FernUniversität in Hagen Indexe in Dateien Fakultät für Mathematik und Informatik Datenbanksysteme für neue Anwendungen FernUniversität in Hagen 19.November 2015 c 2015 FernUniversität in Hagen Indexe ermöglichen schnellen Zugriff

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Blatt Nr. 10 Übung zur Vorlesung Grundlagen: Datenbanken im WS15/16 Harald Lang, Linnea Passing (gdb@in.tum.de)

Mehr

Geometrie 2. Julian Fischer Julian Fischer Geometrie / 30

Geometrie 2. Julian Fischer Julian Fischer Geometrie / 30 Geometrie 2 Julian Fischer 6.7.2009 Julian Fischer Geometrie 2 6.7.2009 1 / 30 Themen 1 Bereichssuche und kd-bäume 1 Bereichssuche 2 kd-bäume 2 Divide and Conquer 1 Closest pair 2 Beispiel: Points (IOI

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen Suchbäume Suchbäume Prinzip Suchbaum Der Wert eines Knotens wird als Schlüssel verstanden Knoten kann auch weitere Daten enthalten, die aber hier nicht weiter betrachtet werden Werte der Schlüssel müssen

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen

{0,1} rekursive Aufteilung des Datenraums in die Quadranten NW, NE, SW und SE feste Auflösung des Datenraums in 2 p 2 p Gitterzellen 4.4 MX-Quadtrees (I) MatriX Quadtree Verwaltung 2-dimensionaler Punkte Punkte als 1-Elemente in einer quadratischen Matrix mit Wertebereich {0,1} rekursive Aufteilung des Datenraums in die Quadranten NW,

Mehr

4.3 R-Bäume (I) Idee. basiert auf der Technik überlappender Seitenregionen verallgemeinert die Idee des B + -Baums auf den 2-dimensionalen Raum

4.3 R-Bäume (I) Idee. basiert auf der Technik überlappender Seitenregionen verallgemeinert die Idee des B + -Baums auf den 2-dimensionalen Raum 4.3 R-Bäume (I) Idee basiert auf der Technik überlappender Seitenregionen verallgemeinert die Idee des B + -Baums auf den 2-dimensionalen Raum Geo-Informationssysteme 98 4.3 R-Bäume (I) Definition Ein

Mehr

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure 7. Dynamische Datenstrukturen Bäume Informatik II für Verkehrsingenieure Übersicht dynamische Datenstrukturen Wozu? Oft weiß man nicht von Beginn an, wieviele Elemente in einer Datenstruktur untergebracht

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Geometrie II. Deniz Neufeld Deniz Neufeld Geometrie II / 39

Geometrie II. Deniz Neufeld Deniz Neufeld Geometrie II / 39 Geometrie II Deniz Neufeld 20.06.2016 Deniz Neufeld Geometrie II 20.06.2016 1 / 39 Ziel Umgehen mit großen, mehrdimensionalen Datenmengen Bereichssuche Nearest-Neighbour-Search Mehrdimensionale Datenverarbeitung

Mehr

Lösungen zu Kapitel 5

Lösungen zu Kapitel 5 Lösungen zu Kapitel 5 Lösung zu Aufgabe : (a) Es gibt derartige Graphen: (b) Offensichtlich besitzen 0 der Graphen einen solchen Teilgraphen. Lösung zu Aufgabe : Es sei G = (V, E) zusammenhängend und V

Mehr

Graphen. Definitionen

Graphen. Definitionen Graphen Graphen werden häufig als Modell für das Lösen eines Problems aus der Praxis verwendet, wie wir im Kapitel 1 gesehen haben. Der Schweizer Mathematiker Euler hat als erster Graphen verwendet, um

Mehr

Isomorphie von Bäumen

Isomorphie von Bäumen Isomorphie von Bäumen Alexandra Weinberger 23. Dezember 2011 Inhaltsverzeichnis 1 Einige Grundlagen und Definitionen 2 1.1 Bäume................................. 3 1.2 Isomorphie..............................

Mehr

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 15. Jan Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 10

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 15. Jan Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 10 Universität Augsburg, Institut für Informatik WS 009/010 Prof. Dr. W. Kießling 15. Jan. 010 Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 10 Aufgabe 1: B-Bäume Datenbanksysteme I a) Abschätzen der Höhe

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

Geometrie. Hallo Welt! für Fortgeschrittene Simon Kuhnle. 11. Juli

Geometrie. Hallo Welt! für Fortgeschrittene Simon Kuhnle. 11. Juli Geometrie Hallo Welt! für Fortgeschrittene 2008 Simon Kuhnle sisikuhn@stud.informatik.uni-erlangen.de 11. Juli 2008 Simon Kuhnle Geometrie 11.07.2008 1 / 33 Übersicht Übersicht 1 Grundlagen 2 ccw 3 Konvexe

Mehr

4.3 Splitstrategien für R-Bäume (I)

4.3 Splitstrategien für R-Bäume (I) 4.3 Splitstrategien für R-Bäume (I) Der Knoten K läuft mit K = M+1 über: Aufteilung auf zwei Knoten K 1 und K 2, sodaß K 1 m und K 2 m Erschöpfender Algorithmus Suche unter den O(2 M ) Möglichkeiten die

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Geometrie II Tiago Joao Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Inhalt Koordinatenkompression Beispiel: SafeJourney Typische compress-funktion Bereichssuche

Mehr

Relationen und Graphentheorie

Relationen und Graphentheorie Seite Graphentheorie- Relationen und Graphentheorie Grundbegriffe. Relationen- und Graphentheorie gehören zu den wichtigsten Hilfsmitteln der Informatik, die aus der diskretenmathematik stammen. Ein Graph

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

Algorithmische Geometrie: Schnittpunkte von Strecken

Algorithmische Geometrie: Schnittpunkte von Strecken Algorithmische Geometrie: Schnittpunkte von Strecken Nico Düvelmeyer WS 2009/2010, 3.11.2009 3 Phasen im Algorithmenentwurf 1. Konzentration auf das Hauptproblem 2. Verallgemeinerung auf entartete Eingaben

Mehr

ADS: Algorithmen und Datenstrukturen

ADS: Algorithmen und Datenstrukturen ADS: Algorithmen und Datenstrukturen Teil X Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 13.

Mehr

Algorithmen & Datenstrukturen 2 Praktikum 3

Algorithmen & Datenstrukturen 2 Praktikum 3 Algorithmen & Datenstrukturen 2 Praktikum 3 Thema: Graphalgorithmen Sommersemester 2016 Prof. Dr. Christoph Karg Hochschule Aalen Dieses Praktikum widmet sich dem Thema Graphalgorithmen. Ziel ist die Implementierung

Mehr

B*-BÄUME. Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records.

B*-BÄUME. Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records. B*-Bäume 1 B*-BÄUME Beobachtung: Ein Index ist seinerseits wieder nichts anderes als eine Datei mit unpinned Records. Es gibt keinen Grund, warum man nicht einen Index über einem Index haben sollte, und

Mehr

Lösungen zu Aufgabenblatt 9

Lösungen zu Aufgabenblatt 9 Fachbereich Informatik Prof. Dr. Peter Becker Objektrelationale Datenbanksysteme Wintersemester 2011/ 14. Januar 2013 Lösungen zu Aufgabenblatt 9 Aufgabe 1 (Einfügen in B-Bäume) In einen leeren B-Baum

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Geometrie II Benjamin Zenke Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Inhalt Closest Pair Divide & Conquer Bereichssuche Gitterverfahren k-d-tree Sweep-Line-Algorithmen

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

Mehr

Universität Trier. Fachbereich IV. Wintersemester 2004/2005. Wavelets made easy. Kapitel 2 Mehrdimensionale Wavelets und Anwendungen

Universität Trier. Fachbereich IV. Wintersemester 2004/2005. Wavelets made easy. Kapitel 2 Mehrdimensionale Wavelets und Anwendungen Universität Trier Fachbereich IV Wintersemester 2004/2005 Wavelets made easy Kapitel 2 Mehrdimensionale Wavelets und Anwendungen Thomas Queckbörner 16.11.2004 Übersicht des Kapitels: 1. Einführung 2. Zweidimensionale

Mehr

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone Was bisher geschah Motivation, Beispiele geometrische Objekte im R 2 : Punkt, Gerade, Halbebene, Strecke, Polygon, ebene Zerlegung in Regionen (planare Graphen) maschinelle Repräsentation geometrischer

Mehr

Mobile Objekte Indexstrukturen

Mobile Objekte Indexstrukturen Verteilung und Integration von Informationen im Verkehrsbereich Mobile Objekte Indexstrukturen Ingo Beutler 07.06.2004 Anfragen: z.b. Welche Transporter befinden sich in der Nähe des HSaF? Wie können räumliche

Mehr

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee AVL-Bäume. Aufgabentyp Fügen Sie in einen anfangs leeren AVL Baum die folgenden Schlüssel ein:... Wenden Sie hierbei konsequent den Einfüge /Balancierungsalgorithmus an und dokumentieren Sie die ausgeführten

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein:

a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: 1 Aufgabe 8.1 (P) (2, 3)-Baum a) Fügen Sie die Zahlen 39, 38, 37 und 36 in folgenden (2, 3)-Baum ein: Zeichnen Sie, was in jedem Schritt passiert. b) Löschen Sie die Zahlen 65, 70 und 100 aus folgendem

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/3, Folie 1 2010 Prof. Steffen Lange - HDa/FbI

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@informatik.uni-leipzig.de aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,

Mehr

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.07.2012 Objekttypen in Bereichsabfragen y0 y0 y x x0 Bisher

Mehr

Parallele Algorithmen in der Bildverarbeitung

Parallele Algorithmen in der Bildverarbeitung Seminar über Algorithmen - SoSe 2009 Parallele Algorithmen in der Bildverarbeitung von Christopher Keiner 1 Allgemeines 1.1 Einleitung Parallele Algorithmen gewinnen immer stärker an Bedeutung. Es existieren

Mehr

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5)

Matchings in Graphen. Praktikum Diskrete Optimierung (Teil 5) Praktikum Diskrete Optimierung (Teil 5) 6.05.009 Matchings in Graphen Es sei ein ungerichteter Graph G = (V, E) gegeben. Ein Matching in G ist eine Teilmenge M E, so dass keine zwei Kanten aus M einen

Mehr

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.07.2012 Objekttypen in Bereichsabfragen y0 y x x0 Bisher

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Datenstrukturen: Anordnung von Daten, z.b. als Liste (d.h. in bestimmter Reihenfolge) Beispiel: alphabetisch sortiertes Wörterbuch... Ei - Eibe - Eidotter... als Baum (d.h.

Mehr

1 DFS-Bäume in ungerichteten Graphen

1 DFS-Bäume in ungerichteten Graphen Praktikum Algorithmen-Entwurf (Teil 3) 06.11.2006 1 1 DFS-Bäume in ungerichteten Graphen Sei ein ungerichteter, zusammenhängender Graph G = (V, E) gegeben. Sei ferner ein Startknoten s V ausgewählt. Startet

Mehr

1 DFS-Bäume in ungerichteten Graphen

1 DFS-Bäume in ungerichteten Graphen Praktikum Algorithmen-Entwurf (Teil 3) 31.10.2005 1 1 DFS-Bäume in ungerichteten Graphen Sei ein ungerichteter, zusammenhängender Graph G = (V, E) gegeben. Sei ferner ein Startknoten s V ausgewählt. Startet

Mehr

Lösungsvorschläge zur Hauptklausur Datenstrukturen

Lösungsvorschläge zur Hauptklausur Datenstrukturen Lösungsvorschläge zur Hauptklausur 9 9 166211663 Datenstrukturen 9. August 2003 Seite 2 Lösungsvorschlage zur Klausur vom 9.08.2003 Kurs 166211663,,Datenstrukturen" Aufgabe 1 Bei jedem rekursiven Aufruf

Mehr

Ausgangspunkt: punktförmige hochdimensionale Feature-Objekte

Ausgangspunkt: punktförmige hochdimensionale Feature-Objekte Baumverfahren Ausgangspunkt: punktförmige hochdimensionale Feature-Objekte B-Baum eindimensional Abbildung eines mehrdimensionalen Raums auf eine Dimension im Allgemeinen nicht distanzerhaltend möglich

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 Bruder-Bäume, B-Bäume) Prof. Dr. Susanne Albers Balancierte Bäume Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei Wörterbuchoperationen

Mehr

Datenbanken. Interne Datenorganisation:

Datenbanken. Interne Datenorganisation: Interne Datenorganisation: Bisher: Konzeptionelle Betrachtungen einer Datenbank aus Sicht der Anwendung: Modellierung, Normalisieren, Sprache zum Einfügen, Ändern, Löschen, Lesen Jetzt: Betrachtung der

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 14. Mai

Mehr

Klasse räumlicher Indexstrukturen, die den Datenraum rekursiv in 4 gleich große Zellen unterteilen (Quadranten NW, NE, SW, SE)

Klasse räumlicher Indexstrukturen, die den Datenraum rekursiv in 4 gleich große Zellen unterteilen (Quadranten NW, NE, SW, SE) 4.4 Quadtrees Überblick Klasse räumlicher Indexstrukturen, die den Datenraum rekursiv in 4 gleich große Zellen unterteilen (Quadranten NW, NE, SW, SE) Verwaltung von Punkten, Kurven, Flächen usw., häufig

Mehr

4.4 Quadtrees. Literatur

4.4 Quadtrees. Literatur 4.4 Quadtrees Überblick Klasse räumlicher Indexstrukturen, die den Datenraum rekursiv in 4 gleich große Zellen unterteilen (Quadranten NW, NE, SW, SE) Verwaltung von Punkten, Kurven, Flächen usw., häufig

Mehr

<is web> Grundidee hierarchischer Indexierungsverfahren: Ausgangspunkt: punktförmige hochdimensionale Feature-Objekte

<is web> Grundidee hierarchischer Indexierungsverfahren: Ausgangspunkt: punktförmige hochdimensionale Feature-Objekte Baumverfahren Baumverfahren (2) Ausgangspunkt: punktförmige hochdimensionale Feature-Objekte B-Baum eindimensional Abbildung eines mehrdimensionalen Raums auf eine Dimension im Allgemeinen nicht distanzerhaltend

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

Mehr

B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme

B / B* - Bäume. Guido Hildebrandt Seminar Datenbanksysteme B / B* - Bäume Guido Hildebrandt Seminar Datenbanksysteme 25.11.2010 Gliederung Einleitung Binärbaum B - Baum B* - Baum Varianten Zusammenfassung Quellen Gliederung Einleitung Binärbaum B - Baum B* - Baum

Mehr

Rolf Wanka Sommersemester Vorlesung

Rolf Wanka Sommersemester Vorlesung Peer-to to-peer-netzwerke Rolf Wanka Sommersemester 2007 7. Vorlesung 05.06.2007 rwanka@cs.fau.de basiert auf einer Vorlesung von Christian Schindelhauer an der Uni Freiburg Lookup in CAN Verbindungsstruktur:

Mehr

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. Datenbankanwendung Wintersemester 2014/15 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern smichel@cs.uni-kl.de Wiederholung: Min-Hashing ˆ Gegeben zwei Mengen A und B von Objekten. ˆ Ein oft benutztes

Mehr

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16 Natürliche Bäume (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 18:16 Natürliche Bäume 1/16 Bäume Begriffe (1/2) Bäume sind verallgemeinerte Listenstrukturen ein

Mehr

Muster. Informatik 3 (Februar 2004) Name: Matrikelnummer: Betrachten Sie den folgenden Suchbaum. A G H J K M N

Muster. Informatik 3 (Februar 2004) Name: Matrikelnummer: Betrachten Sie den folgenden Suchbaum. A G H J K M N 2 von 15 Aufgabe 1: Suchbäume (14 ) Betrachten Sie den folgenden Suchbaum. A B C D E F G H I J K L M N O P R (a) (1 Punkt ) Geben Sie die Höhe des Knotens F an. (b) (1 Punkt ) Geben Sie die Tiefe des Knotens

Mehr

Informatik B Sommersemester Musterlösung zur Klausur am

Informatik B Sommersemester Musterlösung zur Klausur am Informatik B Sommersemester 01 Musterlösung zur Klausur am 1.0.01 Leider wurde der Hinweis, dass alle Lösungen kurz (stichpunktartig), aber inhaltlich ausreichend zu kommentieren sind, nicht immer beachtet.

Mehr

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 29.05.2011 Das Postamt-Problem b(p, q) = {x R 2 : xp = xq } p q h(p, q) h(q, p) = {x :

Mehr

Winter 2011/ Projekt kd- Trees. achsenparallelen Farbwürfel angeordnet. Die beiden schwarz- weiß- Ecken verbindet eine Graulinie.

Winter 2011/ Projekt kd- Trees. achsenparallelen Farbwürfel angeordnet. Die beiden schwarz- weiß- Ecken verbindet eine Graulinie. Praktikum Algorithmik Prof. Dr. Heiner Klocke Winter 2011/2012 12.11.2011 1. Erläuterung des Umfeldes Projekt kd- Trees Bei der Bildanalyse sollen Farbpunkte eines Bildes klassifiziert werden. Die Farbe

Mehr

Indizierung von Geodaten - Raumbezogene Indexstrukturen. Seminar mobile Geoinformationssystem Vortrag von Markus Steger

Indizierung von Geodaten - Raumbezogene Indexstrukturen. Seminar mobile Geoinformationssystem Vortrag von Markus Steger Indizierung von Geodaten - Raumbezogene Indexstrukturen Seminar mobile Geoinformationssystem Vortrag von Markus Steger Index wozu ist er gut? Index allgemein Effizienter Zugriff auf Daten, i.d.r. mit B-Baum

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Elementare Datenstrukturen Array Linked List Stack Queue Tree (Feld) (Verkettete Liste) (Stapel) (Warteschlange) (Baum) 1 Sortierbaum

Mehr

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel Algorithmen und Datenstrukturen Bäume M. Herpers, Y. Jung, P. Klingebiel 1 Lernziele Baumstrukturen und Ihre Verwendung kennen Grundbegriffe zu Bäumen anwenden können Baumstruktur in C anlegen können Suchbäume

Mehr

Algorithmische Techniken für Geometrische Probleme

Algorithmische Techniken für Geometrische Probleme Algorithmische Techniken für Geometrische Probleme Berthold Vöcking 14. Juni 2007 Inhaltsverzeichnis 1 Die Sweepline-Technik 2 1.1 Schnitte orthogonaler Liniensegmente............... 2 1.2 Schnitte beliebiger

Mehr

Seminar. Algorithmische Geometrie

Seminar. Algorithmische Geometrie Seminar Algorithmische Geometrie WS 2000/2001 Thema: Konvexe Hülle Mirko Dennler 21439 Inhaltsverzeichnis Konvexe Hülle 1. Problemstellung 3 2. GRAHAMS SCAN 4-5 3. JARVIS' MARCH 5-6 4. QUICK HULL 6-7 5.

Mehr

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14 Keller, Schlangen und Listen Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14 Listen Listen unterstützen die Operationen Lookup, Insert, Remove. + Listen passen sich der Größe der zu speichernden

Mehr

Datenbanksysteme II Multidimensionale Indizes (Kapitel 14) Felix Naumann

Datenbanksysteme II Multidimensionale Indizes (Kapitel 14) Felix Naumann Datenbanksysteme II Multidimensionale Indizes (Kapitel 14) 14.5.2007 Felix Naumann Motivation 2 Annahme bisher: Eine Dimension Ein einziger Suchschlüssel Suchschlüssel kann auch Kombination von Attributen

Mehr

Vorlesung Geometrische Algorithmen Generierung von Nicht-uniformen Netzen Sven Schuierer

Vorlesung Geometrische Algorithmen Generierung von Nicht-uniformen Netzen Sven Schuierer Vorlesung Geometrische Algorithmen Generierung von Nicht-uniformen Netzen Sven Schuierer Uberblick 1. Anwendung 2. Anforderungen an Netze 3. Quadrantenbaume Quadrantenbaume fur Punktemengen Bestimmung

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 18. März

Mehr

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 20.05.2014 Objekttypen in Bereichsabfragen y0 y0 y x x0 Bisher betrachteter Fall Eingabe:

Mehr

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Graphen Definition: Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten

Mehr

R-Baum eine dynamische Index-Strukur für räumliche Suche

R-Baum eine dynamische Index-Strukur für räumliche Suche Gabriele Wilke-Müller Klufternerstraße 73 88048 Friedrichshafen wilke-mueller@t-online.de Matrikel-Nr. 01/482681 Support for Non-Standard Data Types in DBMSs WS 2003/2004 bei Prof. Dr. Marc H. Scholl Thema:

Mehr

Wie wird ein Graph dargestellt?

Wie wird ein Graph dargestellt? Wie wird ein Graph dargestellt? Für einen Graphen G = (V, E), ob gerichtet oder ungerichtet, verwende eine Adjazenzliste A G : A G [i] zeigt auf eine Liste aller Nachbarn von Knoten i, wenn G ungerichtet

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine

Mehr

Bereichsabfragen. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Bereichsabfragen. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.05.2011 Geometrie in Datenbanken In einer Personaldatenbank

Mehr

Lineare Funktion. Wolfgang Kippels 3. November Inhaltsverzeichnis

Lineare Funktion. Wolfgang Kippels 3. November Inhaltsverzeichnis Lineare Funktion Wolfgang Kippels. November 0 Inhaltsverzeichnis Grundlegende Zusammenhänge. Aufbau der Linearen Funktion......................... Nullstellenbestimmung............................. Schnittpunktbestimmung............................

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Algorithmische Geometrie

Algorithmische Geometrie Algorithmische Geometrie Wladimir Emdin und Martin Dames Skript vom 3.6.2005 1 Wiederholung und Erganzung zu Fortune Sweep Gegeben: eine endliche Menge an Punkten S R 2 Gesucht: Das Voronoi-Diagramm von

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Datenstrukturen und Algorithmen 2. Klausur SS 2001 UNIVERSITÄT PADERBORN FACHBEREICH 7 (MATHEMATIK INFORMATIK) Datenstrukturen und Algorithmen 2. Klausur SS 200 Lösungsansätze Dienstag, 8. September 200 Name, Vorname:...................................................

Mehr

Kapitel 2: Ein abstraktes Geo-Datenmodell

Kapitel 2: Ein abstraktes Geo-Datenmodell LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Kapitel 2: Ein abstraktes Geo-Datenmodell Skript zur Vorlesung Geo-Informationssysteme Wintersemester 2013/14 Ludwig-Maximilians-Universität

Mehr

Organisationsformen der Speicherstrukturen

Organisationsformen der Speicherstrukturen Organisationsformen der Speicherstrukturen Bäume und Hashing 1 Motivation Ablage von Daten soll einfachen, schnellen und inhaltsbezogenen Zugriff ermöglichen (z.b. Zeige alle Schüler des Lehrers X am heutigen

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

Zusatzskript Datenmanagement: physische Strukturen B+- und B*-Baum B+-Baum

Zusatzskript Datenmanagement: physische Strukturen B+- und B*-Baum B+-Baum Seite 1 Zusatzskript Datenmanagement: physische Strukturen B+- und B*-Baum B+-Baum Bild-1 Dargestellt ist die Speicherung der Personentabelle als B+-Baum anhand der Personen-Nummer (PersNr). Die Blattebene

Mehr

Mehrwegbäume Motivation

Mehrwegbäume Motivation Mehrwegbäume Motivation Wir haben gute Strukturen (AVL-Bäume) kennen gelernt, die die Anzahl der Operationen begrenzen Was ist, wenn der Baum zu groß für den Hauptspeicher ist? Externe Datenspeicherung

Mehr

B+-Baum mit Z-Ordnung. B+-Baum mit Z-Ordnung. Anforderungen. 7.3 Räumliche Zugriffsstrukturen

B+-Baum mit Z-Ordnung. B+-Baum mit Z-Ordnung. Anforderungen. 7.3 Räumliche Zugriffsstrukturen B+-Baum mit Z-Ordnung Window Query: 1. Ansatz Benutze den gewöhnlichen Algorithmus für Bereichsanfragen im B + -Baum: Suche mit dem kleinsten Z-Wert des Suchrechtecks (entspricht dem linken unteren Eckpunkt)

Mehr

Gliederung. Algorithmen und Datenstrukturen I. Binäre Bäume: ADT Heap. inäre Bäume: ADT Heap. Abstrakte Datentypen IV. D. Rösner

Gliederung. Algorithmen und Datenstrukturen I. Binäre Bäume: ADT Heap. inäre Bäume: ADT Heap. Abstrakte Datentypen IV. D. Rösner Gliederung Algorithmen und Datenstrukturen I Abstrakte Datentypen IV D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Winter 2009/10,

Mehr

Datenstrukturen und Algorithmen D-INFK. Musterlösung 1

Datenstrukturen und Algorithmen D-INFK. Musterlösung 1 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik Peter Widmayer

Mehr