Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische...

423
Wörterbücher Das Wörterbuch 1 / 74

Transcript of Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische...

Page 1: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wörterbücher

Das Wörterbuch 1 / 74

Page 2: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der abstrakte Datentyp „Wörterbuch“

Ein Wörterbuch für eine gegebene Menge S besteht aus denfolgenden Operationen:

insert(x): Füge x zu S hinzu, d.h. setze S = S ∪ {x}.remove(x): Entferne x aus S, d.h. setze S = S − {x}.lookup(x): Finde heraus, ob x in liegt, und wenn ja, greifegegebenfalls auf den Datensatz von x zu.

In einer Firmendatenbank werden Kundendaten in der Form(Kundenummer, Info) abgespeichert.Die Kundennummer stellt den Schlüssel x dar.

I insert(x): Füge den Datensatz eines neuen Kunden mitKundenummer x ein.

I remove(x): Entferne den Datensatz des entsprechenden Kunden.I lookup(x): Greife auf den Datensatz des Kunden mit

Kundennummer x zu.

Das Wörterbuch 2 / 74

Page 3: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der abstrakte Datentyp „Wörterbuch“

Ein Wörterbuch für eine gegebene Menge S besteht aus denfolgenden Operationen:

insert(x): Füge x zu S hinzu, d.h. setze S = S ∪ {x}.remove(x): Entferne x aus S, d.h. setze S = S − {x}.lookup(x): Finde heraus, ob x in liegt, und wenn ja, greifegegebenfalls auf den Datensatz von x zu.

In einer Firmendatenbank werden Kundendaten in der Form(Kundenummer, Info) abgespeichert.Die Kundennummer stellt den Schlüssel x dar.

I insert(x): Füge den Datensatz eines neuen Kunden mitKundenummer x ein.

I remove(x): Entferne den Datensatz des entsprechenden Kunden.I lookup(x): Greife auf den Datensatz des Kunden mit

Kundennummer x zu.

Das Wörterbuch 2 / 74

Page 4: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der abstrakte Datentyp „Wörterbuch“

Ein Wörterbuch für eine gegebene Menge S besteht aus denfolgenden Operationen:

insert(x): Füge x zu S hinzu, d.h. setze S = S ∪ {x}.remove(x): Entferne x aus S, d.h. setze S = S − {x}.lookup(x): Finde heraus, ob x in liegt, und wenn ja, greifegegebenfalls auf den Datensatz von x zu.

In einer Firmendatenbank werden Kundendaten in der Form(Kundenummer, Info) abgespeichert.

Die Kundennummer stellt den Schlüssel x dar.I insert(x): Füge den Datensatz eines neuen Kunden mit

Kundenummer x ein.I remove(x): Entferne den Datensatz des entsprechenden Kunden.I lookup(x): Greife auf den Datensatz des Kunden mit

Kundennummer x zu.

Das Wörterbuch 2 / 74

Page 5: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der abstrakte Datentyp „Wörterbuch“

Ein Wörterbuch für eine gegebene Menge S besteht aus denfolgenden Operationen:

insert(x): Füge x zu S hinzu, d.h. setze S = S ∪ {x}.remove(x): Entferne x aus S, d.h. setze S = S − {x}.lookup(x): Finde heraus, ob x in liegt, und wenn ja, greifegegebenfalls auf den Datensatz von x zu.

In einer Firmendatenbank werden Kundendaten in der Form(Kundenummer, Info) abgespeichert.Die Kundennummer stellt den Schlüssel x dar.

I insert(x): Füge den Datensatz eines neuen Kunden mitKundenummer x ein.

I remove(x): Entferne den Datensatz des entsprechenden Kunden.I lookup(x): Greife auf den Datensatz des Kunden mit

Kundennummer x zu.

Das Wörterbuch 2 / 74

Page 6: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der abstrakte Datentyp „Wörterbuch“

Ein Wörterbuch für eine gegebene Menge S besteht aus denfolgenden Operationen:

insert(x): Füge x zu S hinzu, d.h. setze S = S ∪ {x}.remove(x): Entferne x aus S, d.h. setze S = S − {x}.lookup(x): Finde heraus, ob x in liegt, und wenn ja, greifegegebenfalls auf den Datensatz von x zu.

In einer Firmendatenbank werden Kundendaten in der Form(Kundenummer, Info) abgespeichert.Die Kundennummer stellt den Schlüssel x dar.

I insert(x): Füge den Datensatz eines neuen Kunden mitKundenummer x ein.

I remove(x): Entferne den Datensatz des entsprechenden Kunden.I lookup(x): Greife auf den Datensatz des Kunden mit

Kundennummer x zu.

Das Wörterbuch 2 / 74

Page 7: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der abstrakte Datentyp „Wörterbuch“

Ein Wörterbuch für eine gegebene Menge S besteht aus denfolgenden Operationen:

insert(x): Füge x zu S hinzu, d.h. setze S = S ∪ {x}.remove(x): Entferne x aus S, d.h. setze S = S − {x}.lookup(x): Finde heraus, ob x in liegt, und wenn ja, greifegegebenfalls auf den Datensatz von x zu.

In einer Firmendatenbank werden Kundendaten in der Form(Kundenummer, Info) abgespeichert.Die Kundennummer stellt den Schlüssel x dar.

I insert(x): Füge den Datensatz eines neuen Kunden mitKundenummer x ein.

I remove(x): Entferne den Datensatz des entsprechenden Kunden.

I lookup(x): Greife auf den Datensatz des Kunden mitKundennummer x zu.

Das Wörterbuch 2 / 74

Page 8: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der abstrakte Datentyp „Wörterbuch“

Ein Wörterbuch für eine gegebene Menge S besteht aus denfolgenden Operationen:

insert(x): Füge x zu S hinzu, d.h. setze S = S ∪ {x}.remove(x): Entferne x aus S, d.h. setze S = S − {x}.lookup(x): Finde heraus, ob x in liegt, und wenn ja, greifegegebenfalls auf den Datensatz von x zu.

In einer Firmendatenbank werden Kundendaten in der Form(Kundenummer, Info) abgespeichert.Die Kundennummer stellt den Schlüssel x dar.

I insert(x): Füge den Datensatz eines neuen Kunden mitKundenummer x ein.

I remove(x): Entferne den Datensatz des entsprechenden Kunden.I lookup(x): Greife auf den Datensatz des Kunden mit

Kundennummer x zu.

Das Wörterbuch 2 / 74

Page 9: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Suchmaschinen

Suchmaschinen müssen Stichworte und Webseiten verwalten und zujedem Stichwort alle relevanten Webseiten auflisten.

Für jedes Stichwort s muss ein Wörterbuch der für s relevantenWebseiten aufgebaut werden.

I Neue Webseiten sind gegebenenfalls einzufügenI und alte, verschwundene Webseiten sind zu entfernen.

Für jede Webseite w müssen die Stichworte gesammelt werden,für die w relevant ist:

I Sollte w entfernt werden,kann w schnell, für jedes seiner Stichworte entfernt werden.

Es gibt mehrere Milliarden Webseiten.

Welche Daten sollten im schnellen Speicher und welche Daten imlangsamen Speicher gehalten werden?

Das Wörterbuch 3 / 74

Page 10: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Suchmaschinen

Suchmaschinen müssen Stichworte und Webseiten verwalten und zujedem Stichwort alle relevanten Webseiten auflisten.

Für jedes Stichwort s muss ein Wörterbuch der für s relevantenWebseiten aufgebaut werden.

I Neue Webseiten sind gegebenenfalls einzufügenI und alte, verschwundene Webseiten sind zu entfernen.

Für jede Webseite w müssen die Stichworte gesammelt werden,für die w relevant ist:

I Sollte w entfernt werden,kann w schnell, für jedes seiner Stichworte entfernt werden.

Es gibt mehrere Milliarden Webseiten.

Welche Daten sollten im schnellen Speicher und welche Daten imlangsamen Speicher gehalten werden?

Das Wörterbuch 3 / 74

Page 11: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Suchmaschinen

Suchmaschinen müssen Stichworte und Webseiten verwalten und zujedem Stichwort alle relevanten Webseiten auflisten.

Für jedes Stichwort s muss ein Wörterbuch der für s relevantenWebseiten aufgebaut werden.

I Neue Webseiten sind gegebenenfalls einzufügenI und alte, verschwundene Webseiten sind zu entfernen.

Für jede Webseite w müssen die Stichworte gesammelt werden,für die w relevant ist:

I Sollte w entfernt werden,kann w schnell, für jedes seiner Stichworte entfernt werden.

Es gibt mehrere Milliarden Webseiten.

Welche Daten sollten im schnellen Speicher und welche Daten imlangsamen Speicher gehalten werden?

Das Wörterbuch 3 / 74

Page 12: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Suchmaschinen

Suchmaschinen müssen Stichworte und Webseiten verwalten und zujedem Stichwort alle relevanten Webseiten auflisten.

Für jedes Stichwort s muss ein Wörterbuch der für s relevantenWebseiten aufgebaut werden.

I Neue Webseiten sind gegebenenfalls einzufügenI und alte, verschwundene Webseiten sind zu entfernen.

Für jede Webseite w müssen die Stichworte gesammelt werden,für die w relevant ist:

I Sollte w entfernt werden,kann w schnell, für jedes seiner Stichworte entfernt werden.

Es gibt mehrere Milliarden Webseiten.

Welche Daten sollten im schnellen Speicher und welche Daten imlangsamen Speicher gehalten werden?

Das Wörterbuch 3 / 74

Page 13: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Suchmaschinen

Suchmaschinen müssen Stichworte und Webseiten verwalten und zujedem Stichwort alle relevanten Webseiten auflisten.

Für jedes Stichwort s muss ein Wörterbuch der für s relevantenWebseiten aufgebaut werden.

I Neue Webseiten sind gegebenenfalls einzufügenI und alte, verschwundene Webseiten sind zu entfernen.

Für jede Webseite w müssen die Stichworte gesammelt werden,für die w relevant ist:

I Sollte w entfernt werden,kann w schnell, für jedes seiner Stichworte entfernt werden.

Es gibt mehrere Milliarden Webseiten.

Welche Daten sollten im schnellen Speicher und welche Daten imlangsamen Speicher gehalten werden?

Das Wörterbuch 3 / 74

Page 14: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

Wie sollten statische Wörterbücher, also Wörterbücher die nurlookup benutzen, implementiert werden?

I Sortiere die gespeicherten Schlüssel und führe einelookup-Operation mit Binärsuche in logarithmischer Zeit durch

I Oder aber wir haben sogar eine schnell berechenbare Namens-funktion, um die Position eines jeden Schlüssels zu bestimmen.

Leider sind die interessanten Wörterbücher dynamisch.Können wir Heaps benutzen?

I Das Einfügen gelingt mühelos,I das Suchen ist aber extrem mühselig. (Warum?)

Im Gegensatz zu „starren“ Arrays benötigen wir Datenstrukturen,die schnell modifiziert werden können.

Das Wörterbuch 4 / 74

Page 15: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

Wie sollten statische Wörterbücher, also Wörterbücher die nurlookup benutzen, implementiert werden?

I Sortiere die gespeicherten Schlüssel und führe einelookup-Operation mit Binärsuche in logarithmischer Zeit durch

I Oder aber wir haben sogar eine schnell berechenbare Namens-funktion, um die Position eines jeden Schlüssels zu bestimmen.

Leider sind die interessanten Wörterbücher dynamisch.Können wir Heaps benutzen?

I Das Einfügen gelingt mühelos,I das Suchen ist aber extrem mühselig. (Warum?)

Im Gegensatz zu „starren“ Arrays benötigen wir Datenstrukturen,die schnell modifiziert werden können.

Das Wörterbuch 4 / 74

Page 16: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

Wie sollten statische Wörterbücher, also Wörterbücher die nurlookup benutzen, implementiert werden?

I Sortiere die gespeicherten Schlüssel und führe einelookup-Operation mit Binärsuche in logarithmischer Zeit durch

I Oder aber wir haben sogar eine schnell berechenbare Namens-funktion, um die Position eines jeden Schlüssels zu bestimmen.

Leider sind die interessanten Wörterbücher dynamisch.Können wir Heaps benutzen?

I Das Einfügen gelingt mühelos,I das Suchen ist aber extrem mühselig. (Warum?)

Im Gegensatz zu „starren“ Arrays benötigen wir Datenstrukturen,die schnell modifiziert werden können.

Das Wörterbuch 4 / 74

Page 17: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

Wie sollten statische Wörterbücher, also Wörterbücher die nurlookup benutzen, implementiert werden?

I Sortiere die gespeicherten Schlüssel und führe einelookup-Operation mit Binärsuche in logarithmischer Zeit durch

I Oder aber wir haben sogar eine schnell berechenbare Namens-funktion, um die Position eines jeden Schlüssels zu bestimmen.

Leider sind die interessanten Wörterbücher dynamisch.

Können wir Heaps benutzen?I Das Einfügen gelingt mühelos,I das Suchen ist aber extrem mühselig. (Warum?)

Im Gegensatz zu „starren“ Arrays benötigen wir Datenstrukturen,die schnell modifiziert werden können.

Das Wörterbuch 4 / 74

Page 18: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

Wie sollten statische Wörterbücher, also Wörterbücher die nurlookup benutzen, implementiert werden?

I Sortiere die gespeicherten Schlüssel und führe einelookup-Operation mit Binärsuche in logarithmischer Zeit durch

I Oder aber wir haben sogar eine schnell berechenbare Namens-funktion, um die Position eines jeden Schlüssels zu bestimmen.

Leider sind die interessanten Wörterbücher dynamisch.Können wir Heaps benutzen?

I Das Einfügen

gelingt mühelos,I das Suchen ist aber extrem mühselig. (Warum?)

Im Gegensatz zu „starren“ Arrays benötigen wir Datenstrukturen,die schnell modifiziert werden können.

Das Wörterbuch 4 / 74

Page 19: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

Wie sollten statische Wörterbücher, also Wörterbücher die nurlookup benutzen, implementiert werden?

I Sortiere die gespeicherten Schlüssel und führe einelookup-Operation mit Binärsuche in logarithmischer Zeit durch

I Oder aber wir haben sogar eine schnell berechenbare Namens-funktion, um die Position eines jeden Schlüssels zu bestimmen.

Leider sind die interessanten Wörterbücher dynamisch.Können wir Heaps benutzen?

I Das Einfügen gelingt mühelos,I das Suchen ist

aber extrem mühselig. (Warum?)

Im Gegensatz zu „starren“ Arrays benötigen wir Datenstrukturen,die schnell modifiziert werden können.

Das Wörterbuch 4 / 74

Page 20: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

Wie sollten statische Wörterbücher, also Wörterbücher die nurlookup benutzen, implementiert werden?

I Sortiere die gespeicherten Schlüssel und führe einelookup-Operation mit Binärsuche in logarithmischer Zeit durch

I Oder aber wir haben sogar eine schnell berechenbare Namens-funktion, um die Position eines jeden Schlüssels zu bestimmen.

Leider sind die interessanten Wörterbücher dynamisch.Können wir Heaps benutzen?

I Das Einfügen gelingt mühelos,I das Suchen ist aber extrem mühselig. (Warum?)

Im Gegensatz zu „starren“ Arrays benötigen wir Datenstrukturen,die schnell modifiziert werden können.

Das Wörterbuch 4 / 74

Page 21: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

Wie sollten statische Wörterbücher, also Wörterbücher die nurlookup benutzen, implementiert werden?

I Sortiere die gespeicherten Schlüssel und führe einelookup-Operation mit Binärsuche in logarithmischer Zeit durch

I Oder aber wir haben sogar eine schnell berechenbare Namens-funktion, um die Position eines jeden Schlüssels zu bestimmen.

Leider sind die interessanten Wörterbücher dynamisch.Können wir Heaps benutzen?

I Das Einfügen gelingt mühelos,I das Suchen ist aber extrem mühselig. (Warum?)

Im Gegensatz zu „starren“ Arrays benötigen wir Datenstrukturen,die schnell modifiziert werden können.

Das Wörterbuch 4 / 74

Page 22: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume

Das Wörterbuch Binäre Suchbäume 5 / 74

Page 23: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume

T sei ein geordneter binärer Baum.

Jeder Knoten v von T speichertein Paar

Daten(v) = (Schlüssel(v), Info(v)).

T heißt binärer Suchbaum, wenn T die folgenden Eigenschaften hat:

(a) Für jeden Schlüsselwert x gibt es höchstens einen Knoten v mitSchlüssel (v) = x .

(b) Für jeden Knoten v, jeden Knoten vlinks im linken Teilbaum von vund jeden Knoten vrechts im rechten Teilbaum von v gilt

Schlüssel(vlinks) < Schlüssel(v) < Schlüssel(vrechts).

Binäre Suchbäume unterstützen die binäre Suche!

Das Wörterbuch Binäre Suchbäume 6 / 74

Page 24: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume

T sei ein geordneter binärer Baum. Jeder Knoten v von T speichertein Paar

Daten(v) = (Schlüssel(v), Info(v)).

T heißt binärer Suchbaum, wenn T die folgenden Eigenschaften hat:

(a) Für jeden Schlüsselwert x gibt es höchstens einen Knoten v mitSchlüssel (v) = x .

(b) Für jeden Knoten v, jeden Knoten vlinks im linken Teilbaum von vund jeden Knoten vrechts im rechten Teilbaum von v gilt

Schlüssel(vlinks) < Schlüssel(v) < Schlüssel(vrechts).

Binäre Suchbäume unterstützen die binäre Suche!

Das Wörterbuch Binäre Suchbäume 6 / 74

Page 25: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume

T sei ein geordneter binärer Baum. Jeder Knoten v von T speichertein Paar

Daten(v) = (Schlüssel(v), Info(v)).

T heißt binärer Suchbaum, wenn T die folgenden Eigenschaften hat:

(a) Für jeden Schlüsselwert x gibt es höchstens einen Knoten v mitSchlüssel (v) = x .

(b) Für jeden Knoten v, jeden Knoten vlinks im linken Teilbaum von vund jeden Knoten vrechts im rechten Teilbaum von v gilt

Schlüssel(vlinks) < Schlüssel(v) < Schlüssel(vrechts).

Binäre Suchbäume unterstützen die binäre Suche!

Das Wörterbuch Binäre Suchbäume 6 / 74

Page 26: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume

T sei ein geordneter binärer Baum. Jeder Knoten v von T speichertein Paar

Daten(v) = (Schlüssel(v), Info(v)).

T heißt binärer Suchbaum, wenn T die folgenden Eigenschaften hat:

(a) Für jeden Schlüsselwert x gibt es höchstens einen Knoten v mitSchlüssel (v) = x .

(b) Für jeden Knoten v, jeden Knoten vlinks im linken Teilbaum von vund jeden Knoten vrechts im rechten Teilbaum von v gilt

Schlüssel(vlinks) < Schlüssel(v) < Schlüssel(vrechts).

Binäre Suchbäume unterstützen die binäre Suche!

Das Wörterbuch Binäre Suchbäume 6 / 74

Page 27: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume

T sei ein geordneter binärer Baum. Jeder Knoten v von T speichertein Paar

Daten(v) = (Schlüssel(v), Info(v)).

T heißt binärer Suchbaum, wenn T die folgenden Eigenschaften hat:

(a) Für jeden Schlüsselwert x gibt es höchstens einen Knoten v mitSchlüssel (v) = x .

(b) Für jeden Knoten v, jeden Knoten vlinks im linken Teilbaum von vund jeden Knoten vrechts im rechten Teilbaum von v gilt

Schlüssel(vlinks) < Schlüssel(v) < Schlüssel(vrechts).

Binäre Suchbäume unterstützen die binäre Suche!

Das Wörterbuch Binäre Suchbäume 6 / 74

Page 28: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume

T sei ein geordneter binärer Baum. Jeder Knoten v von T speichertein Paar

Daten(v) = (Schlüssel(v), Info(v)).

T heißt binärer Suchbaum, wenn T die folgenden Eigenschaften hat:

(a) Für jeden Schlüsselwert x gibt es höchstens einen Knoten v mitSchlüssel (v) = x .

(b) Für jeden Knoten v, jeden Knoten vlinks im linken Teilbaum von vund jeden Knoten vrechts im rechten Teilbaum von v gilt

Schlüssel(vlinks) < Schlüssel(v) < Schlüssel(vrechts).

Binäre Suchbäume unterstützen die binäre Suche!

Das Wörterbuch Binäre Suchbäume 6 / 74

Page 29: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: lookup(x)

(1) Sei r die Wurzel des binären Suchbaums. Setze v = r ./* Wir beginnen die Suche an der Wurzel. */

(2) Wenn wir am Knoten v angelangt sind, vergleichen wirx und Schlüssel (v):

I x = Schlüssel(v): Wir haben den Schlüssel gefunden.

I x < Schlüssel (v): Wir suchen im linken Teilbaum weiter.

I x > Schlüssel (v): Wir suchen im rechten Teilbaum.

Lookup benötigt Zeit Θ(t),wobei t die Tiefe des Knotens ist, der den Schlüssel x speichert.

Das Wörterbuch Binäre Suchbäume 7 / 74

Page 30: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: lookup(x)

(1) Sei r die Wurzel des binären Suchbaums. Setze v = r ./* Wir beginnen die Suche an der Wurzel. */

(2) Wenn wir am Knoten v angelangt sind, vergleichen wirx und Schlüssel (v):

I x = Schlüssel(v):

Wir haben den Schlüssel gefunden.

I x < Schlüssel (v): Wir suchen im linken Teilbaum weiter.

I x > Schlüssel (v): Wir suchen im rechten Teilbaum.

Lookup benötigt Zeit Θ(t),wobei t die Tiefe des Knotens ist, der den Schlüssel x speichert.

Das Wörterbuch Binäre Suchbäume 7 / 74

Page 31: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: lookup(x)

(1) Sei r die Wurzel des binären Suchbaums. Setze v = r ./* Wir beginnen die Suche an der Wurzel. */

(2) Wenn wir am Knoten v angelangt sind, vergleichen wirx und Schlüssel (v):

I x = Schlüssel(v): Wir haben den Schlüssel gefunden.

I x < Schlüssel (v): Wir suchen im linken Teilbaum weiter.

I x > Schlüssel (v): Wir suchen im rechten Teilbaum.

Lookup benötigt Zeit Θ(t),wobei t die Tiefe des Knotens ist, der den Schlüssel x speichert.

Das Wörterbuch Binäre Suchbäume 7 / 74

Page 32: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: lookup(x)

(1) Sei r die Wurzel des binären Suchbaums. Setze v = r ./* Wir beginnen die Suche an der Wurzel. */

(2) Wenn wir am Knoten v angelangt sind, vergleichen wirx und Schlüssel (v):

I x = Schlüssel(v): Wir haben den Schlüssel gefunden.

I x < Schlüssel (v):

Wir suchen im linken Teilbaum weiter.

I x > Schlüssel (v): Wir suchen im rechten Teilbaum.

Lookup benötigt Zeit Θ(t),wobei t die Tiefe des Knotens ist, der den Schlüssel x speichert.

Das Wörterbuch Binäre Suchbäume 7 / 74

Page 33: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: lookup(x)

(1) Sei r die Wurzel des binären Suchbaums. Setze v = r ./* Wir beginnen die Suche an der Wurzel. */

(2) Wenn wir am Knoten v angelangt sind, vergleichen wirx und Schlüssel (v):

I x = Schlüssel(v): Wir haben den Schlüssel gefunden.

I x < Schlüssel (v): Wir suchen im linken Teilbaum weiter.

I x > Schlüssel (v): Wir suchen im rechten Teilbaum.

Lookup benötigt Zeit Θ(t),wobei t die Tiefe des Knotens ist, der den Schlüssel x speichert.

Das Wörterbuch Binäre Suchbäume 7 / 74

Page 34: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: lookup(x)

(1) Sei r die Wurzel des binären Suchbaums. Setze v = r ./* Wir beginnen die Suche an der Wurzel. */

(2) Wenn wir am Knoten v angelangt sind, vergleichen wirx und Schlüssel (v):

I x = Schlüssel(v): Wir haben den Schlüssel gefunden.

I x < Schlüssel (v): Wir suchen im linken Teilbaum weiter.

I x > Schlüssel (v): Wir suchen im rechten Teilbaum.

Lookup benötigt Zeit Θ(t),wobei t die Tiefe des Knotens ist, der den Schlüssel x speichert.

Das Wörterbuch Binäre Suchbäume 7 / 74

Page 35: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: lookup(x)

(1) Sei r die Wurzel des binären Suchbaums. Setze v = r ./* Wir beginnen die Suche an der Wurzel. */

(2) Wenn wir am Knoten v angelangt sind, vergleichen wirx und Schlüssel (v):

I x = Schlüssel(v): Wir haben den Schlüssel gefunden.

I x < Schlüssel (v): Wir suchen im linken Teilbaum weiter.

I x > Schlüssel (v): Wir suchen im rechten Teilbaum.

Lookup benötigt Zeit Θ(t),wobei t die Tiefe des Knotens ist, der den Schlüssel x speichert.

Das Wörterbuch Binäre Suchbäume 7 / 74

Page 36: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Struktur Knoten

typedef struct Knoten

{ schluesseltyp schluessel; infotyp info;//schluesseltyp und infotyp sind vorher spezifizierte Typen.

Knoten *links, *rechts;

Knoten (schluesseltyp s, infotyp i, Knoten *l, Knoten *r){ schluessel = s; info = i; links = l; rechts = r; }//Konstruktor. };

Das Wörterbuch Binäre Suchbäume 8 / 74

Page 37: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Struktur Knoten

typedef struct Knoten{ schluesseltyp schluessel; infotyp info;//schluesseltyp und infotyp sind vorher spezifizierte Typen.

Knoten *links, *rechts;

Knoten (schluesseltyp s, infotyp i, Knoten *l, Knoten *r){ schluessel = s; info = i; links = l; rechts = r; }//Konstruktor. };

Das Wörterbuch Binäre Suchbäume 8 / 74

Page 38: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Struktur Knoten

typedef struct Knoten{ schluesseltyp schluessel; infotyp info;//schluesseltyp und infotyp sind vorher spezifizierte Typen.

Knoten *links, *rechts;

Knoten (schluesseltyp s, infotyp i, Knoten *l, Knoten *r){ schluessel = s; info = i; links = l; rechts = r; }//Konstruktor. };

Das Wörterbuch Binäre Suchbäume 8 / 74

Page 39: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Struktur Knoten

typedef struct Knoten{ schluesseltyp schluessel; infotyp info;//schluesseltyp und infotyp sind vorher spezifizierte Typen.

Knoten *links, *rechts;

Knoten (schluesseltyp s, infotyp i, Knoten *l, Knoten *r){ schluessel = s; info = i; links = l; rechts = r; }//Konstruktor. };

Das Wörterbuch Binäre Suchbäume 8 / 74

Page 40: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:Knoten *Kopf;

public:bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.Knoten *lookup (schluesseltyp x);void insert (schluesseltyp x, infotyp info);void remove (schluesseltyp x);void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 41: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:

Knoten *Kopf;

public:bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.Knoten *lookup (schluesseltyp x);void insert (schluesseltyp x, infotyp info);void remove (schluesseltyp x);void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 42: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:Knoten *Kopf;

public:bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.Knoten *lookup (schluesseltyp x);void insert (schluesseltyp x, infotyp info);void remove (schluesseltyp x);void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 43: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:Knoten *Kopf;

public:

bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.Knoten *lookup (schluesseltyp x);void insert (schluesseltyp x, infotyp info);void remove (schluesseltyp x);void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 44: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:Knoten *Kopf;

public:bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }

// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.Knoten *lookup (schluesseltyp x);void insert (schluesseltyp x, infotyp info);void remove (schluesseltyp x);void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 45: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:Knoten *Kopf;

public:bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.

Knoten *lookup (schluesseltyp x);void insert (schluesseltyp x, infotyp info);void remove (schluesseltyp x);void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 46: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:Knoten *Kopf;

public:bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.Knoten *lookup (schluesseltyp x);

void insert (schluesseltyp x, infotyp info);void remove (schluesseltyp x);void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 47: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:Knoten *Kopf;

public:bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.Knoten *lookup (schluesseltyp x);void insert (schluesseltyp x, infotyp info);

void remove (schluesseltyp x);void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 48: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:Knoten *Kopf;

public:bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.Knoten *lookup (schluesseltyp x);void insert (schluesseltyp x, infotyp info);void remove (schluesseltyp x);

void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 49: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Klasse Binärbaum

class bsbaum

{private:Knoten *Kopf;

public:bsbaum ( ) { Kopf = new Knoten (0,0,0,0); }// Konstruktor.// Kopf->rechts wird stets auf die Wurzel zeigen.Knoten *lookup (schluesseltyp x);void insert (schluesseltyp x, infotyp info);void remove (schluesseltyp x);void inorder ( ); };

Das Wörterbuch Binäre Suchbäume 9 / 74

Page 50: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Funktion lookup

Knoten *bsbaum::lookup (schluesseltyp x)

{ Knoten *Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel))

Zeiger = (x < Zeiger->schluessel) ? Zeiger->links : Zeiger->rechts;

return Zeiger; };

Das Wörterbuch Binäre Suchbäume 10 / 74

Page 51: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Funktion lookup

Knoten *bsbaum::lookup (schluesseltyp x)

{ Knoten *Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel))

Zeiger = (x < Zeiger->schluessel) ? Zeiger->links : Zeiger->rechts;

return Zeiger; };

Das Wörterbuch Binäre Suchbäume 10 / 74

Page 52: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Funktion lookup

Knoten *bsbaum::lookup (schluesseltyp x)

{ Knoten *Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel))

Zeiger = (x < Zeiger->schluessel) ? Zeiger->links : Zeiger->rechts;

return Zeiger; };

Das Wörterbuch Binäre Suchbäume 10 / 74

Page 53: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Funktion lookup

Knoten *bsbaum::lookup (schluesseltyp x)

{ Knoten *Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel))

Zeiger = (x < Zeiger->schluessel) ? Zeiger->links : Zeiger->rechts;

return Zeiger; };

Das Wörterbuch Binäre Suchbäume 10 / 74

Page 54: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Funktion lookup

Knoten *bsbaum::lookup (schluesseltyp x)

{ Knoten *Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel))

Zeiger = (x < Zeiger->schluessel) ? Zeiger->links : Zeiger->rechts;

return Zeiger; };

Das Wörterbuch Binäre Suchbäume 10 / 74

Page 55: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .

- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 56: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 57: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info)

{Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 58: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;

Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 59: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 60: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel))

{Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 61: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;

Zeiger = (x < Zeiger->schluessel) ?Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 62: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 63: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0)

{Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 64: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);

if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 65: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }

Das Wörterbuch Binäre Suchbäume 11 / 74

Page 66: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Insert

Zuerst suche nach x .- Sollten wir x finden, überschreibe den alten Info-Teil,- sonst füge den Schlüssel dort ein, wo die Suche scheitert.

void bsbaum::insert (schluesseltyp x, infotyp info){Knoten *Eltern, *Zeiger;Eltern = Kopf; Zeiger = Kopf->rechts;

while ((Zeiger != 0) && (x != Zeiger->schluessel)){Eltern = Zeiger;Zeiger = (x < Zeiger->schluessel) ?

Zeiger->links : Zeiger->rechts; }

if (Zeiger == 0){Zeiger = new Knoten (x, info, 0, 0);if (x < Eltern->schluessel) Eltern->links = Zeiger;else Eltern->rechts = Zeiger; }

else Zeiger->info = info; }Das Wörterbuch Binäre Suchbäume 11 / 74

Page 67: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist:

Entferne v .Wenn v genau ein Kind w hat: Entferne v und mache denElternknoten von v zum Elternknoten von w .Wenn v zwei Kinder hat: Ersetze v durch den kleinsten Schlüssels im rechten Teilbaum von v .

I Der Knoten u speichere den Schlüssel s.I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 68: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist: Entferne v .

Wenn v genau ein Kind w hat: Entferne v und mache denElternknoten von v zum Elternknoten von w .Wenn v zwei Kinder hat: Ersetze v durch den kleinsten Schlüssels im rechten Teilbaum von v .

I Der Knoten u speichere den Schlüssel s.I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 69: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist: Entferne v .Wenn v genau ein Kind w hat:

Entferne v und mache denElternknoten von v zum Elternknoten von w .Wenn v zwei Kinder hat: Ersetze v durch den kleinsten Schlüssels im rechten Teilbaum von v .

I Der Knoten u speichere den Schlüssel s.I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 70: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist: Entferne v .Wenn v genau ein Kind w hat: Entferne v und mache denElternknoten von v zum Elternknoten von w .

Wenn v zwei Kinder hat: Ersetze v durch den kleinsten Schlüssels im rechten Teilbaum von v .

I Der Knoten u speichere den Schlüssel s.I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 71: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist: Entferne v .Wenn v genau ein Kind w hat: Entferne v und mache denElternknoten von v zum Elternknoten von w .Wenn v zwei Kinder hat:

Ersetze v durch den kleinsten Schlüssels im rechten Teilbaum von v .

I Der Knoten u speichere den Schlüssel s.I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 72: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist: Entferne v .Wenn v genau ein Kind w hat: Entferne v und mache denElternknoten von v zum Elternknoten von w .Wenn v zwei Kinder hat: Ersetze v durch den kleinsten Schlüssels im

rechten Teilbaum von v .I Der Knoten u speichere den Schlüssel s.I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 73: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist: Entferne v .Wenn v genau ein Kind w hat: Entferne v und mache denElternknoten von v zum Elternknoten von w .Wenn v zwei Kinder hat: Ersetze v durch den kleinsten Schlüssels im rechten Teilbaum von v .

I Der Knoten u speichere den Schlüssel s.I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 74: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist: Entferne v .Wenn v genau ein Kind w hat: Entferne v und mache denElternknoten von v zum Elternknoten von w .Wenn v zwei Kinder hat: Ersetze v durch den kleinsten Schlüssels im rechten Teilbaum von v .

I Der Knoten u speichere den Schlüssel s.

I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 75: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist: Entferne v .Wenn v genau ein Kind w hat: Entferne v und mache denElternknoten von v zum Elternknoten von w .Wenn v zwei Kinder hat: Ersetze v durch den kleinsten Schlüssels im rechten Teilbaum von v .

I Der Knoten u speichere den Schlüssel s.I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.

I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 76: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Remove

Zuerst suche den Schlüssel x .

Wenn die Suche im Knoten v endet undwenn v ein Blatt ist: Entferne v .Wenn v genau ein Kind w hat: Entferne v und mache denElternknoten von v zum Elternknoten von w .Wenn v zwei Kinder hat: Ersetze v durch den kleinsten Schlüssels im rechten Teilbaum von v .

I Der Knoten u speichere den Schlüssel s.I u ist als linkester Knoten im rechten Teilbaum leicht zu finden.I u hat kein linkes Kind und kann damit sofort entfernt werden.

Das Wörterbuch Binäre Suchbäume 12 / 74

Page 77: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Sortieren

Wir können mit binären Suchbäumen auch sortieren:

Zuerst füge alle Schlüssel in einen leeren Suchbaum ein.Danach bestimme die sortierte Reihenfolge durch einenInorder-Durchlauf.

Das Wörterbuch Binäre Suchbäume 13 / 74

Page 78: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Binäre Suchbäume: Sortieren

Wir können mit binären Suchbäumen auch sortieren:Zuerst füge alle Schlüssel in einen leeren Suchbaum ein.Danach bestimme die sortierte Reihenfolge durch einenInorder-Durchlauf.

Das Wörterbuch Binäre Suchbäume 13 / 74

Page 79: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Operationen eines binären Suchbaums

Die Operationen insert und remove beginnen mit einer Suche nachdem Schlüssel.

remove setzt den Suchprozess mit einer Suche nach demkleinsten Schlüssel im rechten Teilbaum fort.

(a) lookup, insert und remove benötigen Zeit proportional zur Tiefedes Baums.

(b) Die Folge insert(1, info), insert(2, info), ... insert(n, info)erzeugt einen Baum der (maximalen) Tiefe n − 1.

(c) Die minimale Tiefe ist blog2 nc, die maximale Tiefe n − 1.Wie groß ist die erwartete Tiefe?

Das Wörterbuch Binäre Suchbäume 14 / 74

Page 80: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Operationen eines binären Suchbaums

Die Operationen insert und remove beginnen mit einer Suche nachdem Schlüssel.

remove setzt den Suchprozess mit einer Suche nach demkleinsten Schlüssel im rechten Teilbaum fort.

(a) lookup, insert und remove benötigen Zeit proportional zur Tiefedes Baums.

(b) Die Folge insert(1, info), insert(2, info), ... insert(n, info)erzeugt einen Baum der (maximalen) Tiefe n − 1.

(c) Die minimale Tiefe ist blog2 nc, die maximale Tiefe n − 1.Wie groß ist die erwartete Tiefe?

Das Wörterbuch Binäre Suchbäume 14 / 74

Page 81: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Operationen eines binären Suchbaums

Die Operationen insert und remove beginnen mit einer Suche nachdem Schlüssel.

remove setzt den Suchprozess mit einer Suche nach demkleinsten Schlüssel im rechten Teilbaum fort.

(a) lookup, insert und remove benötigen Zeit proportional zur Tiefedes Baums.

(b) Die Folge insert(1, info), insert(2, info), ... insert(n, info)erzeugt einen Baum der (maximalen) Tiefe n − 1.

(c) Die minimale Tiefe ist blog2 nc, die maximale Tiefe n − 1.Wie groß ist die erwartete Tiefe?

Das Wörterbuch Binäre Suchbäume 14 / 74

Page 82: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Operationen eines binären Suchbaums

Die Operationen insert und remove beginnen mit einer Suche nachdem Schlüssel.

remove setzt den Suchprozess mit einer Suche nach demkleinsten Schlüssel im rechten Teilbaum fort.

(a) lookup, insert und remove benötigen Zeit proportional zur Tiefedes Baums.

(b) Die Folge insert(1, info),

insert(2, info), ... insert(n, info)erzeugt einen Baum der (maximalen) Tiefe n − 1.

(c) Die minimale Tiefe ist blog2 nc, die maximale Tiefe n − 1.Wie groß ist die erwartete Tiefe?

Das Wörterbuch Binäre Suchbäume 14 / 74

Page 83: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Operationen eines binären Suchbaums

Die Operationen insert und remove beginnen mit einer Suche nachdem Schlüssel.

remove setzt den Suchprozess mit einer Suche nach demkleinsten Schlüssel im rechten Teilbaum fort.

(a) lookup, insert und remove benötigen Zeit proportional zur Tiefedes Baums.

(b) Die Folge insert(1, info), insert(2, info),

... insert(n, info)erzeugt einen Baum der (maximalen) Tiefe n − 1.

(c) Die minimale Tiefe ist blog2 nc, die maximale Tiefe n − 1.Wie groß ist die erwartete Tiefe?

Das Wörterbuch Binäre Suchbäume 14 / 74

Page 84: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Operationen eines binären Suchbaums

Die Operationen insert und remove beginnen mit einer Suche nachdem Schlüssel.

remove setzt den Suchprozess mit einer Suche nach demkleinsten Schlüssel im rechten Teilbaum fort.

(a) lookup, insert und remove benötigen Zeit proportional zur Tiefedes Baums.

(b) Die Folge insert(1, info), insert(2, info), ... insert(n, info)erzeugt einen Baum der (maximalen) Tiefe n − 1.

(c) Die minimale Tiefe ist blog2 nc, die maximale Tiefe n − 1.Wie groß ist die erwartete Tiefe?

Das Wörterbuch Binäre Suchbäume 14 / 74

Page 85: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Operationen eines binären Suchbaums

Die Operationen insert und remove beginnen mit einer Suche nachdem Schlüssel.

remove setzt den Suchprozess mit einer Suche nach demkleinsten Schlüssel im rechten Teilbaum fort.

(a) lookup, insert und remove benötigen Zeit proportional zur Tiefedes Baums.

(b) Die Folge insert(1, info), insert(2, info), ... insert(n, info)erzeugt einen Baum der (maximalen) Tiefe n − 1.

(c) Die minimale Tiefe ist blog2 nc, die maximale Tiefe n − 1.Wie groß ist die erwartete Tiefe?

Das Wörterbuch Binäre Suchbäume 14 / 74

Page 86: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Im worst-case große Tiefe, trotzdem, ....

Die erwartete Tiefe und damit die erwartete Zeit für eineerfolgreiche Suche ist logarithmisch.

Also ist die erwartete Zeit für lookup, insert und removelogarithmisch.

Trotzdem ist die worst-case Laufzeit intolerabel.

Und die Konsequenz?

Wir arbeiten weiter mit binären Suchbäumen,

garantieren aber durch zusätzliche Operationen, dass der Baum

tiefen-balanciert

bleibt.

Das Wörterbuch Binäre Suchbäume 15 / 74

Page 87: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Im worst-case große Tiefe, trotzdem, ....

Die erwartete Tiefe und damit die erwartete Zeit für eineerfolgreiche Suche ist logarithmisch.

Also ist die erwartete Zeit für lookup, insert und removelogarithmisch.

Trotzdem ist die worst-case Laufzeit intolerabel.

Und die Konsequenz?

Wir arbeiten weiter mit binären Suchbäumen,

garantieren aber durch zusätzliche Operationen, dass der Baum

tiefen-balanciert

bleibt.

Das Wörterbuch Binäre Suchbäume 15 / 74

Page 88: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Im worst-case große Tiefe, trotzdem, ....

Die erwartete Tiefe und damit die erwartete Zeit für eineerfolgreiche Suche ist logarithmisch.

Also ist die erwartete Zeit für lookup, insert und removelogarithmisch.

Trotzdem ist die worst-case Laufzeit intolerabel.

Und die Konsequenz?

Wir arbeiten weiter mit binären Suchbäumen,

garantieren aber durch zusätzliche Operationen, dass der Baum

tiefen-balanciert

bleibt.

Das Wörterbuch Binäre Suchbäume 15 / 74

Page 89: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

AVL-Bäume

Das Wörterbuch AVL-Bäume 16 / 74

Page 90: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

AVL-Bäume

Ein binärer Suchbaum heißt AVL-Baum, wenn für jeden Knoten v mitlinkem Teilbaum TL(v) und rechtem Teilbaum TR(v)

| Tiefe(TL(v))− Tiefe(TR(v)) |6 1

gilt.

b(v) := Tiefe(TL(v))− Tiefe(TR(v)) ist der Balance-Grad von v .Definiere die Tiefe des leeren Baums als -1.

Für AVL-Bäume ist stets b(v) ∈ {−1,0,1}.

Die zentralen Fragen:Können wir stets Schlüssel so einfügen, dass der Absolutbetragdes Balance-Grads höchstens Eins ist?Wie tief kann ein AVL-Baum mit n Knoten werden?

Das Wörterbuch AVL-Bäume 17 / 74

Page 91: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

AVL-Bäume

Ein binärer Suchbaum heißt AVL-Baum, wenn für jeden Knoten v mitlinkem Teilbaum TL(v) und rechtem Teilbaum TR(v)

| Tiefe(TL(v))− Tiefe(TR(v)) |6 1

gilt. b(v) := Tiefe(TL(v))− Tiefe(TR(v)) ist der Balance-Grad von v .Definiere die Tiefe des leeren Baums als -1.

Für AVL-Bäume ist stets b(v) ∈ {−1,0,1}.

Die zentralen Fragen:Können wir stets Schlüssel so einfügen, dass der Absolutbetragdes Balance-Grads höchstens Eins ist?Wie tief kann ein AVL-Baum mit n Knoten werden?

Das Wörterbuch AVL-Bäume 17 / 74

Page 92: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

AVL-Bäume

Ein binärer Suchbaum heißt AVL-Baum, wenn für jeden Knoten v mitlinkem Teilbaum TL(v) und rechtem Teilbaum TR(v)

| Tiefe(TL(v))− Tiefe(TR(v)) |6 1

gilt. b(v) := Tiefe(TL(v))− Tiefe(TR(v)) ist der Balance-Grad von v .Definiere die Tiefe des leeren Baums als -1.

Für AVL-Bäume ist stets b(v) ∈ {−1,0,1}.

Die zentralen Fragen:Können wir stets Schlüssel so einfügen, dass der Absolutbetragdes Balance-Grads höchstens Eins ist?Wie tief kann ein AVL-Baum mit n Knoten werden?

Das Wörterbuch AVL-Bäume 17 / 74

Page 93: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

AVL-Bäume

Ein binärer Suchbaum heißt AVL-Baum, wenn für jeden Knoten v mitlinkem Teilbaum TL(v) und rechtem Teilbaum TR(v)

| Tiefe(TL(v))− Tiefe(TR(v)) |6 1

gilt. b(v) := Tiefe(TL(v))− Tiefe(TR(v)) ist der Balance-Grad von v .Definiere die Tiefe des leeren Baums als -1.

Für AVL-Bäume ist stets b(v) ∈ {−1,0,1}.

Die zentralen Fragen:Können wir stets Schlüssel so einfügen, dass der Absolutbetragdes Balance-Grads höchstens Eins ist?

Wie tief kann ein AVL-Baum mit n Knoten werden?

Das Wörterbuch AVL-Bäume 17 / 74

Page 94: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

AVL-Bäume

Ein binärer Suchbaum heißt AVL-Baum, wenn für jeden Knoten v mitlinkem Teilbaum TL(v) und rechtem Teilbaum TR(v)

| Tiefe(TL(v))− Tiefe(TR(v)) |6 1

gilt. b(v) := Tiefe(TL(v))− Tiefe(TR(v)) ist der Balance-Grad von v .Definiere die Tiefe des leeren Baums als -1.

Für AVL-Bäume ist stets b(v) ∈ {−1,0,1}.

Die zentralen Fragen:Können wir stets Schlüssel so einfügen, dass der Absolutbetragdes Balance-Grads höchstens Eins ist?Wie tief kann ein AVL-Baum mit n Knoten werden?

Das Wörterbuch AVL-Bäume 17 / 74

Page 95: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Beispiele und Gegenbeispiele für AVL-Bäume

T0 ≡n

T1 ≡nn

��T2 ≡

nn

n��

�� n@@

und T3 ≡

n n n�� ��@@

n n����

PPPP

nsind AVL-Bäume.

n n n�� @@ @@

n nlhea����

PPPP

n

n��ist kein AVL-Baum.

Das Wörterbuch AVL-Bäume 18 / 74

Page 96: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Beispiele und Gegenbeispiele für AVL-Bäume

T0 ≡n T1 ≡n

n��

T2 ≡

nn

n��

�� n@@

und T3 ≡

n n n�� ��@@

n n����

PPPP

nsind AVL-Bäume.

n n n�� @@ @@

n nlhea����

PPPP

n

n��ist kein AVL-Baum.

Das Wörterbuch AVL-Bäume 18 / 74

Page 97: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Beispiele und Gegenbeispiele für AVL-Bäume

T0 ≡n T1 ≡n

n��

T2 ≡

nn

n��

�� n@@

und T3 ≡

n n n�� ��@@

n n����

PPPP

nsind AVL-Bäume.

n n n�� @@ @@

n nlhea����

PPPP

n

n��ist kein AVL-Baum.

Das Wörterbuch AVL-Bäume 18 / 74

Page 98: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Beispiele und Gegenbeispiele für AVL-Bäume

T0 ≡n T1 ≡n

n��

T2 ≡

nn

n��

�� n@@

und T3 ≡

n n n�� ��@@

n n����

PPPP

nsind AVL-Bäume.

n n n�� @@ @@

n nlhea����

PPPP

n

n��ist kein AVL-Baum.

Das Wörterbuch AVL-Bäume 18 / 74

Page 99: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Beispiele und Gegenbeispiele für AVL-Bäume

T0 ≡n T1 ≡n

n��

T2 ≡

nn

n��

�� n@@

und T3 ≡

n n n�� ��@@

n n����

PPPP

nsind AVL-Bäume.

n n n�� @@ @@

n nlhea����

PPPP

n

n��ist kein AVL-Baum.

Das Wörterbuch AVL-Bäume 18 / 74

Page 100: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 101: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) =

1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 102: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1

und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 103: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) =

2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 104: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.

Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaum

die Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitzt

deshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 105: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) =

min(t− 1) + min(t− 2) + 1.I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaum

die Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitzt

deshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 106: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) +

min(t− 2) + 1.I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaum

die Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitzt

deshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 107: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2)

+ 1.I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaum

die Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitzt

deshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 108: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 109: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 110: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 111: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.

min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 112: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1

> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 113: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1

> 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 114: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2

= 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 115: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens

2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 116: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von AVL-Bäumen

min(t) sei die minimale Knotenzahl,die ein AVL-Baum der Tiefe t mindestens besitzen muss.

min(0) = 1 und min(1) = 2.Und es gilt die Rekursion min(t) = min(t− 1) + min(t− 2) + 1.

I Wenn ein AVL-Baum die Tiefe t besitzt, dann muss ein Teilbaumdie Tiefe t − 1 besitzen und hat mindestens min(t− 1) Knoten.

I Der andere Teilbaum hat mindestens Tiefe t − 2 und besitztdeshalb mindestens min(t− 2) Knoten.

Mit induktivem Argument folgt min(t) > 2t/2.

Die Behauptung ist richtig für t = 0 und t = 1.min(t + 1) = min(t) + min(t− 1) + 1> 2t/2 + 2(t−1)/2 + 1 > 2 · 2(t−1)/2 = 2(t+1)/2.

Die Tiefe eines AVL-Baums mit n Knoten ist höchstens 2 · log2 n.

Das Wörterbuch AVL-Bäume 19 / 74

Page 117: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup, Remove und Insert

Da AVL-Bäume logarithmische Tiefe haben, ist die Laufzeit einerLookup-Operation höchstens logarithmisch.

Wir drücken uns um die remove-Operation herum:I Wir führen nur eine lazy remove Operation aus: Markiere einen

gelöschten Knoten als entfernt ohne ihn tatsächlich zu entfernen.I Wenn allerdings mehr als 50 % aller Knoten markiert sind, dann

beginnt ein Großreinemachen:F Ein neuer AVL-Baum wird aus den nicht markierten Knoten des alten

Baumes durch Insert-Operationen aufgebaut.

Die Laufzeit für den Neuaufbaus ist groß, aber gegen die vielenblitzschnellen remove-Operationen amortisiert.

Kritisch ist die Implementierung der insert-Operation.

Das Wörterbuch AVL-Bäume 20 / 74

Page 118: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup, Remove und Insert

Da AVL-Bäume logarithmische Tiefe haben, ist die Laufzeit einerLookup-Operation höchstens logarithmisch.Wir drücken uns um die remove-Operation herum:

I Wir führen nur eine lazy remove Operation aus: Markiere einengelöschten Knoten als entfernt ohne ihn tatsächlich zu entfernen.

I Wenn allerdings mehr als 50 % aller Knoten markiert sind, dannbeginnt ein Großreinemachen:

F Ein neuer AVL-Baum wird aus den nicht markierten Knoten des altenBaumes durch Insert-Operationen aufgebaut.

Die Laufzeit für den Neuaufbaus ist groß, aber gegen die vielenblitzschnellen remove-Operationen amortisiert.

Kritisch ist die Implementierung der insert-Operation.

Das Wörterbuch AVL-Bäume 20 / 74

Page 119: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup, Remove und Insert

Da AVL-Bäume logarithmische Tiefe haben, ist die Laufzeit einerLookup-Operation höchstens logarithmisch.Wir drücken uns um die remove-Operation herum:

I Wir führen nur eine lazy remove Operation aus: Markiere einengelöschten Knoten als entfernt ohne ihn tatsächlich zu entfernen.

I Wenn allerdings mehr als 50 % aller Knoten markiert sind, dannbeginnt ein Großreinemachen:

F Ein neuer AVL-Baum wird aus den nicht markierten Knoten des altenBaumes durch Insert-Operationen aufgebaut.

Die Laufzeit für den Neuaufbaus ist groß, aber gegen die vielenblitzschnellen remove-Operationen amortisiert.

Kritisch ist die Implementierung der insert-Operation.

Das Wörterbuch AVL-Bäume 20 / 74

Page 120: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup, Remove und Insert

Da AVL-Bäume logarithmische Tiefe haben, ist die Laufzeit einerLookup-Operation höchstens logarithmisch.Wir drücken uns um die remove-Operation herum:

I Wir führen nur eine lazy remove Operation aus: Markiere einengelöschten Knoten als entfernt ohne ihn tatsächlich zu entfernen.

I Wenn allerdings mehr als 50 % aller Knoten markiert sind, dannbeginnt ein Großreinemachen:

F Ein neuer AVL-Baum wird aus den nicht markierten Knoten des altenBaumes durch Insert-Operationen aufgebaut.

Die Laufzeit für den Neuaufbaus ist groß, aber gegen die vielenblitzschnellen remove-Operationen amortisiert.

Kritisch ist die Implementierung der insert-Operation.

Das Wörterbuch AVL-Bäume 20 / 74

Page 121: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup, Remove und Insert

Da AVL-Bäume logarithmische Tiefe haben, ist die Laufzeit einerLookup-Operation höchstens logarithmisch.Wir drücken uns um die remove-Operation herum:

I Wir führen nur eine lazy remove Operation aus: Markiere einengelöschten Knoten als entfernt ohne ihn tatsächlich zu entfernen.

I Wenn allerdings mehr als 50 % aller Knoten markiert sind, dannbeginnt ein Großreinemachen:

F Ein neuer AVL-Baum wird aus den nicht markierten Knoten des altenBaumes durch Insert-Operationen aufgebaut.

Die Laufzeit für den Neuaufbaus ist groß, aber gegen die vielenblitzschnellen remove-Operationen amortisiert.

Kritisch ist die Implementierung der insert-Operation.

Das Wörterbuch AVL-Bäume 20 / 74

Page 122: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup, Remove und Insert

Da AVL-Bäume logarithmische Tiefe haben, ist die Laufzeit einerLookup-Operation höchstens logarithmisch.Wir drücken uns um die remove-Operation herum:

I Wir führen nur eine lazy remove Operation aus: Markiere einengelöschten Knoten als entfernt ohne ihn tatsächlich zu entfernen.

I Wenn allerdings mehr als 50 % aller Knoten markiert sind, dannbeginnt ein Großreinemachen:

F Ein neuer AVL-Baum wird aus den nicht markierten Knoten des altenBaumes durch Insert-Operationen aufgebaut.

Die Laufzeit für den Neuaufbaus ist groß, aber gegen die vielenblitzschnellen remove-Operationen amortisiert.

Kritisch ist die Implementierung der insert-Operation.

Das Wörterbuch AVL-Bäume 20 / 74

Page 123: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup, Remove und Insert

Da AVL-Bäume logarithmische Tiefe haben, ist die Laufzeit einerLookup-Operation höchstens logarithmisch.Wir drücken uns um die remove-Operation herum:

I Wir führen nur eine lazy remove Operation aus: Markiere einengelöschten Knoten als entfernt ohne ihn tatsächlich zu entfernen.

I Wenn allerdings mehr als 50 % aller Knoten markiert sind, dannbeginnt ein Großreinemachen:

F Ein neuer AVL-Baum wird aus den nicht markierten Knoten des altenBaumes durch Insert-Operationen aufgebaut.

Die Laufzeit für den Neuaufbaus ist groß, aber gegen die vielenblitzschnellen remove-Operationen amortisiert.

Kritisch ist die Implementierung der insert-Operation.

Das Wörterbuch AVL-Bäume 20 / 74

Page 124: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Rotationen

In einer Linksrotation ersetzt ein rechtes Kind den Elternknoten.Der Elternknoten wird zum linken Kind.

��AA��

lvw

HH l�� @@��

��

AA

AA

T1

T2 T3

AA��HH

lwv��l@@��AA

AA

��

��

=⇒ T3

T2T1

Rechtsrotationen sind entsprechend definiert.

v

wAA��HH

l��l@@��AA

AA

��

��

=⇒T3

T2T1

w

v��AA��

lHH l�� @@��

��

AA

AA

T1

T2 T3

Das Wörterbuch AVL-Bäume 21 / 74

Page 125: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Rotationen

In einer Linksrotation ersetzt ein rechtes Kind den Elternknoten.Der Elternknoten wird zum linken Kind.

��AA��

lvw

HH l�� @@��

��

AA

AA

T1

T2 T3

AA��HH

lwv��l@@��AA

AA

��

��

=⇒ T3

T2T1

Rechtsrotationen sind entsprechend definiert.

v

wAA��HH

l��l@@��AA

AA

��

��

=⇒T3

T2T1

w

v��AA��

lHH l�� @@��

��

AA

AA

T1

T2 T3

Das Wörterbuch AVL-Bäume 21 / 74

Page 126: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Rotationen

In einer Linksrotation ersetzt ein rechtes Kind den Elternknoten.Der Elternknoten wird zum linken Kind.

��AA��

lvw

HH l�� @@��

��

AA

AA

T1

T2 T3

AA��HH

lwv��l@@��AA

AA

��

��

=⇒ T3

T2T1

Rechtsrotationen sind entsprechend definiert.

v

wAA��HH

l��l@@��AA

AA

��

��

=⇒T3

T2T1

w

v��AA��

lHH l�� @@��

��

AA

AA

T1

T2 T3

Das Wörterbuch AVL-Bäume 21 / 74

Page 127: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Rotationen

In einer Linksrotation ersetzt ein rechtes Kind den Elternknoten.Der Elternknoten wird zum linken Kind.

��AA��

lvw

HH l�� @@��

��

AA

AA

T1

T2 T3

AA��HH

lwv��l@@��AA

AA

��

��

=⇒ T3

T2T1

Rechtsrotationen sind entsprechend definiert.

v

wAA��HH

l��l@@��AA

AA

��

��

=⇒T3

T2T1

w

v��AA��

lHH l�� @@��

��

AA

AA

T1

T2 T3

Das Wörterbuch AVL-Bäume 21 / 74

Page 128: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Insert-Operation

Um den Schlüssel x einzufügen, suche zuerst nach x undfüge x am Ende einer erfolglosen Suche ein.

An welchen Knoten ist jetzt möglicherweise die AVL-Eigenschaftverletzt?

I Nur Knoten des Suchpfads, also des Pfads von der Wurzel zumfrisch eingefügten Blatt, können betroffen sein!

I Wir laufen deshalb den Suchpfad möglicherweise ganz zurück, umdie Balance-Eigenschaft zu reparieren.

Die Situation:Wir sind bis zum Knoten u zurückgelaufen. Die AVL-Eigenschaftgilt für u und alle Nachfahren von u.Wenn wir die Reparatur fortsetzen müssen, müssen wir uns alsNächstes um den Elternknoten v von u kümmern.w bezeichne den Großelternknoten von u.

Das Wörterbuch AVL-Bäume 22 / 74

Page 129: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Insert-Operation

Um den Schlüssel x einzufügen, suche zuerst nach x undfüge x am Ende einer erfolglosen Suche ein.

An welchen Knoten ist jetzt möglicherweise die AVL-Eigenschaftverletzt?

I Nur Knoten des Suchpfads, also des Pfads von der Wurzel zumfrisch eingefügten Blatt, können betroffen sein!

I Wir laufen deshalb den Suchpfad möglicherweise ganz zurück, umdie Balance-Eigenschaft zu reparieren.

Die Situation:Wir sind bis zum Knoten u zurückgelaufen. Die AVL-Eigenschaftgilt für u und alle Nachfahren von u.Wenn wir die Reparatur fortsetzen müssen, müssen wir uns alsNächstes um den Elternknoten v von u kümmern.w bezeichne den Großelternknoten von u.

Das Wörterbuch AVL-Bäume 22 / 74

Page 130: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Insert-Operation

Um den Schlüssel x einzufügen, suche zuerst nach x undfüge x am Ende einer erfolglosen Suche ein.

An welchen Knoten ist jetzt möglicherweise die AVL-Eigenschaftverletzt?

I Nur Knoten des Suchpfads, also des Pfads von der Wurzel zumfrisch eingefügten Blatt, können betroffen sein!

I Wir laufen deshalb den Suchpfad möglicherweise ganz zurück, umdie Balance-Eigenschaft zu reparieren.

Die Situation:Wir sind bis zum Knoten u zurückgelaufen. Die AVL-Eigenschaftgilt für u und alle Nachfahren von u.Wenn wir die Reparatur fortsetzen müssen, müssen wir uns alsNächstes um den Elternknoten v von u kümmern.w bezeichne den Großelternknoten von u.

Das Wörterbuch AVL-Bäume 22 / 74

Page 131: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Insert-Operation

Um den Schlüssel x einzufügen, suche zuerst nach x undfüge x am Ende einer erfolglosen Suche ein.

An welchen Knoten ist jetzt möglicherweise die AVL-Eigenschaftverletzt?

I Nur Knoten des Suchpfads, also des Pfads von der Wurzel zumfrisch eingefügten Blatt, können betroffen sein!

I Wir laufen deshalb den Suchpfad möglicherweise ganz zurück, umdie Balance-Eigenschaft zu reparieren.

Die Situation:Wir sind bis zum Knoten u zurückgelaufen. Die AVL-Eigenschaftgilt für u und alle Nachfahren von u.Wenn wir die Reparatur fortsetzen müssen, müssen wir uns alsNächstes um den Elternknoten v von u kümmern.w bezeichne den Großelternknoten von u.

Das Wörterbuch AVL-Bäume 22 / 74

Page 132: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Insert-Operation

Um den Schlüssel x einzufügen, suche zuerst nach x undfüge x am Ende einer erfolglosen Suche ein.

An welchen Knoten ist jetzt möglicherweise die AVL-Eigenschaftverletzt?

I Nur Knoten des Suchpfads, also des Pfads von der Wurzel zumfrisch eingefügten Blatt, können betroffen sein!

I Wir laufen deshalb den Suchpfad möglicherweise ganz zurück, umdie Balance-Eigenschaft zu reparieren.

Die Situation:Wir sind bis zum Knoten u zurückgelaufen. Die AVL-Eigenschaftgilt für u und alle Nachfahren von u.

Wenn wir die Reparatur fortsetzen müssen, müssen wir uns alsNächstes um den Elternknoten v von u kümmern.w bezeichne den Großelternknoten von u.

Das Wörterbuch AVL-Bäume 22 / 74

Page 133: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Insert-Operation

Um den Schlüssel x einzufügen, suche zuerst nach x undfüge x am Ende einer erfolglosen Suche ein.

An welchen Knoten ist jetzt möglicherweise die AVL-Eigenschaftverletzt?

I Nur Knoten des Suchpfads, also des Pfads von der Wurzel zumfrisch eingefügten Blatt, können betroffen sein!

I Wir laufen deshalb den Suchpfad möglicherweise ganz zurück, umdie Balance-Eigenschaft zu reparieren.

Die Situation:Wir sind bis zum Knoten u zurückgelaufen. Die AVL-Eigenschaftgilt für u und alle Nachfahren von u.Wenn wir die Reparatur fortsetzen müssen, müssen wir uns alsNächstes um den Elternknoten v von u kümmern.

w bezeichne den Großelternknoten von u.

Das Wörterbuch AVL-Bäume 22 / 74

Page 134: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Insert-Operation

Um den Schlüssel x einzufügen, suche zuerst nach x undfüge x am Ende einer erfolglosen Suche ein.

An welchen Knoten ist jetzt möglicherweise die AVL-Eigenschaftverletzt?

I Nur Knoten des Suchpfads, also des Pfads von der Wurzel zumfrisch eingefügten Blatt, können betroffen sein!

I Wir laufen deshalb den Suchpfad möglicherweise ganz zurück, umdie Balance-Eigenschaft zu reparieren.

Die Situation:Wir sind bis zum Knoten u zurückgelaufen. Die AVL-Eigenschaftgilt für u und alle Nachfahren von u.Wenn wir die Reparatur fortsetzen müssen, müssen wir uns alsNächstes um den Elternknoten v von u kümmern.w bezeichne den Großelternknoten von u.

Das Wörterbuch AVL-Bäume 22 / 74

Page 135: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zick Fall (1/2)

���

AAA���

n���nw

v

uHHHHHH n��

@@@@

���

���

AAA

AAA

A

B C

Fallannahme: Ein neues Blatt wurde im Teilbaum von u eingefügt undes gilt Tiefe(C) > Tiefe(B) nach Einfügung.

Die Tiefe des Teilbaums von u muss um 1 angewachsen sein,denn ansonsten können wir die Reparatur beenden.Sei d die neue, um 1 größere Tiefe des Teilbaums von u.

AVL-Bäume Zick-Zick 23 / 74

Page 136: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zick Fall (1/2)

���

AAA���

n���nw

v

uHHHHHH n��

@@@@

���

���

AAA

AAA

A

B C

Fallannahme: Ein neues Blatt wurde im Teilbaum von u eingefügt undes gilt Tiefe(C) > Tiefe(B) nach Einfügung.

Die Tiefe des Teilbaums von u muss um 1 angewachsen sein,denn ansonsten können wir die Reparatur beenden.

Sei d die neue, um 1 größere Tiefe des Teilbaums von u.

AVL-Bäume Zick-Zick 23 / 74

Page 137: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zick Fall (1/2)

���

AAA���

n���nw

v

uHHHHHH n��

@@@@

���

���

AAA

AAA

A

B C

Fallannahme: Ein neues Blatt wurde im Teilbaum von u eingefügt undes gilt Tiefe(C) > Tiefe(B) nach Einfügung.

Die Tiefe des Teilbaums von u muss um 1 angewachsen sein,denn ansonsten können wir die Reparatur beenden.Sei d die neue, um 1 größere Tiefe des Teilbaums von u.

AVL-Bäume Zick-Zick 23 / 74

Page 138: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zick Fall (2/2)

Tiefe(A) > d + 1 ist unmöglich, da sonst b(v) > 2 vor Einfügendes neuen Blatt gilt.

Wenn Tiefe(A) = d , dann brauchen wir nur den Balance-Gradb(v) = 0 neu zu setzen.

I Die Reparatur kann abgebrochen werden, da der Teilbaum mitWurzel v seine Tiefe nicht verändert hat.

Wenn Tiefe(A) = d − 1, dann setze b(v) = −1.Diesmal müssen wir die Reparatur in w fortsetzen:Die Tiefe des Teilbaums mit Wurzel v ist um 1 angestiegen.

Der Fall Tiefe(A) 6 d − 3 kann nicht auftreten, da sonstb(v) 6 −2 vor Einfügen des neuen Blatts gilt.

Der Fall Tiefe(A) = d − 2 ist kritisch.

AVL-Bäume Zick-Zick 24 / 74

Page 139: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zick Fall (2/2)

Tiefe(A) > d + 1 ist unmöglich, da sonst b(v) > 2 vor Einfügendes neuen Blatt gilt.Wenn Tiefe(A) = d , dann brauchen wir nur den Balance-Gradb(v) = 0 neu zu setzen.

I Die Reparatur kann abgebrochen werden, da der Teilbaum mitWurzel v seine Tiefe nicht verändert hat.

Wenn Tiefe(A) = d − 1, dann setze b(v) = −1.Diesmal müssen wir die Reparatur in w fortsetzen:Die Tiefe des Teilbaums mit Wurzel v ist um 1 angestiegen.

Der Fall Tiefe(A) 6 d − 3 kann nicht auftreten, da sonstb(v) 6 −2 vor Einfügen des neuen Blatts gilt.

Der Fall Tiefe(A) = d − 2 ist kritisch.

AVL-Bäume Zick-Zick 24 / 74

Page 140: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zick Fall (2/2)

Tiefe(A) > d + 1 ist unmöglich, da sonst b(v) > 2 vor Einfügendes neuen Blatt gilt.Wenn Tiefe(A) = d , dann brauchen wir nur den Balance-Gradb(v) = 0 neu zu setzen.

I Die Reparatur kann abgebrochen werden, da der Teilbaum mitWurzel v seine Tiefe nicht verändert hat.

Wenn Tiefe(A) = d − 1, dann setze b(v) = −1.Diesmal müssen wir die Reparatur in w fortsetzen:Die Tiefe des Teilbaums mit Wurzel v ist um 1 angestiegen.

Der Fall Tiefe(A) 6 d − 3 kann nicht auftreten, da sonstb(v) 6 −2 vor Einfügen des neuen Blatts gilt.

Der Fall Tiefe(A) = d − 2 ist kritisch.

AVL-Bäume Zick-Zick 24 / 74

Page 141: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zick Fall (2/2)

Tiefe(A) > d + 1 ist unmöglich, da sonst b(v) > 2 vor Einfügendes neuen Blatt gilt.Wenn Tiefe(A) = d , dann brauchen wir nur den Balance-Gradb(v) = 0 neu zu setzen.

I Die Reparatur kann abgebrochen werden, da der Teilbaum mitWurzel v seine Tiefe nicht verändert hat.

Wenn Tiefe(A) = d − 1, dann setze b(v) = −1.Diesmal müssen wir die Reparatur in w fortsetzen:Die Tiefe des Teilbaums mit Wurzel v ist um 1 angestiegen.

Der Fall Tiefe(A) 6 d − 3 kann nicht auftreten, da sonstb(v) 6 −2 vor Einfügen des neuen Blatts gilt.

Der Fall Tiefe(A) = d − 2 ist kritisch.

AVL-Bäume Zick-Zick 24 / 74

Page 142: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zick Fall (2/2)

Tiefe(A) > d + 1 ist unmöglich, da sonst b(v) > 2 vor Einfügendes neuen Blatt gilt.Wenn Tiefe(A) = d , dann brauchen wir nur den Balance-Gradb(v) = 0 neu zu setzen.

I Die Reparatur kann abgebrochen werden, da der Teilbaum mitWurzel v seine Tiefe nicht verändert hat.

Wenn Tiefe(A) = d − 1, dann setze b(v) = −1.Diesmal müssen wir die Reparatur in w fortsetzen:Die Tiefe des Teilbaums mit Wurzel v ist um 1 angestiegen.

Der Fall Tiefe(A) 6 d − 3 kann nicht auftreten, da sonstb(v) 6 −2 vor Einfügen des neuen Blatts gilt.

Der Fall Tiefe(A) = d − 2 ist kritisch.

AVL-Bäume Zick-Zick 24 / 74

Page 143: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Führe eine Linksrotation in v durch.

��AA��

l�� lwv

uHH l�� @@��

��

AA

AA

A

B C

AA��HH

l�� lwu

v��l@@��AA

AA

��

��

C

BA

Tiefe(B) 6 Tiefe(C) gilt nach Fallannahme: Tiefe(C) = d − 1 folgt.Da die AVL-Eigenschaft in u gilt, folgt

d − 2 = Tiefe(C)− 1 6 Tiefe(B) 6 TiefeC) = d − 1.Die AVL-Eigenschaft gilt somit nach der Rotation für u und v .

Setze b(u) und b(v) entsprechend und fahre fort, wenn der neueTeilbaum von u tiefer ist als der alte Teilbaum von v .

AVL-Bäume Zick-Zick 25 / 74

Page 144: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Führe eine Linksrotation in v durch.

��AA��

l�� lwv

uHH l�� @@��

��

AA

AA

A

B C

AA��HH

l�� lwu

v��l@@��AA

AA

��

��

C

BA

Tiefe(B) 6 Tiefe(C) gilt nach Fallannahme: Tiefe(C) = d − 1 folgt.Da die AVL-Eigenschaft in u gilt, folgt

d − 2 = Tiefe(C)− 1 6 Tiefe(B) 6 TiefeC) = d − 1.Die AVL-Eigenschaft gilt somit nach der Rotation für u und v .

Setze b(u) und b(v) entsprechend und fahre fort, wenn der neueTeilbaum von u tiefer ist als der alte Teilbaum von v .

AVL-Bäume Zick-Zick 25 / 74

Page 145: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Führe eine Linksrotation in v durch.

��AA��

l�� lwv

uHH l�� @@��

��

AA

AA

A

B C

AA��HH

l�� lwu

v��l@@��AA

AA

��

��

C

BA

Tiefe(B) 6 Tiefe(C) gilt nach Fallannahme: Tiefe(C) = d − 1 folgt.

Da die AVL-Eigenschaft in u gilt, folgtd − 2 = Tiefe(C)− 1 6 Tiefe(B) 6 TiefeC) = d − 1.

Die AVL-Eigenschaft gilt somit nach der Rotation für u und v .Setze b(u) und b(v) entsprechend und fahre fort, wenn der neueTeilbaum von u tiefer ist als der alte Teilbaum von v .

AVL-Bäume Zick-Zick 25 / 74

Page 146: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Führe eine Linksrotation in v durch.

��AA��

l�� lwv

uHH l�� @@��

��

AA

AA

A

B C

AA��HH

l�� lwu

v��l@@��AA

AA

��

��

C

BA

Tiefe(B) 6 Tiefe(C) gilt nach Fallannahme: Tiefe(C) = d − 1 folgt.Da die AVL-Eigenschaft in u gilt, folgt

d − 2 = Tiefe(C)− 1 6 Tiefe(B) 6 TiefeC) = d − 1.

Die AVL-Eigenschaft gilt somit nach der Rotation für u und v .Setze b(u) und b(v) entsprechend und fahre fort, wenn der neueTeilbaum von u tiefer ist als der alte Teilbaum von v .

AVL-Bäume Zick-Zick 25 / 74

Page 147: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Führe eine Linksrotation in v durch.

��AA��

l�� lwv

uHH l�� @@��

��

AA

AA

A

B C

AA��HH

l�� lwu

v��l@@��AA

AA

��

��

C

BA

Tiefe(B) 6 Tiefe(C) gilt nach Fallannahme: Tiefe(C) = d − 1 folgt.Da die AVL-Eigenschaft in u gilt, folgt

d − 2 = Tiefe(C)− 1 6 Tiefe(B) 6 TiefeC) = d − 1.Die AVL-Eigenschaft gilt somit nach der Rotation für u und v .

Setze b(u) und b(v) entsprechend und fahre fort, wenn der neueTeilbaum von u tiefer ist als der alte Teilbaum von v .

AVL-Bäume Zick-Zick 25 / 74

Page 148: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Führe eine Linksrotation in v durch.

��AA��

l�� lwv

uHH l�� @@��

��

AA

AA

A

B C

AA��HH

l�� lwu

v��l@@��AA

AA

��

��

C

BA

Tiefe(B) 6 Tiefe(C) gilt nach Fallannahme: Tiefe(C) = d − 1 folgt.Da die AVL-Eigenschaft in u gilt, folgt

d − 2 = Tiefe(C)− 1 6 Tiefe(B) 6 TiefeC) = d − 1.Die AVL-Eigenschaft gilt somit nach der Rotation für u und v .

Setze b(u) und b(v) entsprechend und fahre fort, wenn der neueTeilbaum von u tiefer ist als der alte Teilbaum von v .

AVL-Bäume Zick-Zick 25 / 74

Page 149: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zack-Zack Fall

AAA

���HH

Hn���

nwv

u������n

@@

����

AAA

AAA

���

���

C

BA

Fallannahme: Ein neues Blatt wurde im Teilbaumvon u eingefügt undTiefe(A) > Tiefe(B) gilt nach Einfügung.

Der Zack-Zack Fall wird wie der Zick-Zick Fall behandelt.

AVL-Bäume Zack-Zack 26 / 74

Page 150: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zack-Zack Fall

AAA

���HH

Hn���

nwv

u������n

@@

����

AAA

AAA

���

���

C

BA

Fallannahme: Ein neues Blatt wurde im Teilbaumvon u eingefügt undTiefe(A) > Tiefe(B) gilt nach Einfügung.

Der Zack-Zack Fall wird wie der Zick-Zick Fall behandelt.

AVL-Bäume Zack-Zack 26 / 74

Page 151: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zack-Zack Fall

AAA

���HH

Hn���

nwv

u������n

@@

����

AAA

AAA

���

���

C

BA

Fallannahme: Ein neues Blatt wurde im Teilbaumvon u eingefügt undTiefe(A) > Tiefe(B) gilt nach Einfügung.

Der Zack-Zack Fall wird wie der Zick-Zick Fall behandelt.

AVL-Bäume Zack-Zack 26 / 74

Page 152: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zack Fall

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

Fallannahme: Ein neues Blatt wurde im Teilbaum mit Wurzel ueingefügt und Tiefe(B) > Tiefe(C) gilt nach Einfügung.

Die Reparatur muss nur dann fortgesetzt werden, wenn die Tiefedes Teilbaums von u um 1 angestiegen ist.Sei d die neue Tiefe des Teilbaums von u.Wie im Zick-Zick Fall ist nur der Fall Tiefe(A) = d − 2 kritisch.

AVL-Bäume Zick-Zack 27 / 74

Page 153: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zack Fall

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

Fallannahme: Ein neues Blatt wurde im Teilbaum mit Wurzel ueingefügt und Tiefe(B) > Tiefe(C) gilt nach Einfügung.

Die Reparatur muss nur dann fortgesetzt werden, wenn die Tiefedes Teilbaums von u um 1 angestiegen ist.Sei d die neue Tiefe des Teilbaums von u.Wie im Zick-Zick Fall ist nur der Fall Tiefe(A) = d − 2 kritisch.

AVL-Bäume Zick-Zack 27 / 74

Page 154: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zack Fall

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

Fallannahme: Ein neues Blatt wurde im Teilbaum mit Wurzel ueingefügt und Tiefe(B) > Tiefe(C) gilt nach Einfügung.

Die Reparatur muss nur dann fortgesetzt werden, wenn die Tiefedes Teilbaums von u um 1 angestiegen ist.

Sei d die neue Tiefe des Teilbaums von u.Wie im Zick-Zick Fall ist nur der Fall Tiefe(A) = d − 2 kritisch.

AVL-Bäume Zick-Zack 27 / 74

Page 155: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Der Zick-Zack Fall

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

Fallannahme: Ein neues Blatt wurde im Teilbaum mit Wurzel ueingefügt und Tiefe(B) > Tiefe(C) gilt nach Einfügung.

Die Reparatur muss nur dann fortgesetzt werden, wenn die Tiefedes Teilbaums von u um 1 angestiegen ist.Sei d die neue Tiefe des Teilbaums von u.Wie im Zick-Zick Fall ist nur der Fall Tiefe(A) = d − 2 kritisch.

AVL-Bäume Zick-Zack 27 / 74

Page 156: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Da d − 1 =Tiefe(B) > Tiefe(C)

= d − 2, folgt

Tiefe(A) = Tiefe(C) = d − 2 und Tiefe(B) = d − 1.

Eine Linksrotation in v ist keine Reparatur:

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

B wandert vom rechten zum linken Teilbaum und dieAVL-Eigenschaft bleibt verletzt, da Tiefe (A) = Tiefe(C).

AVL-Bäume Zick-Zack 28 / 74

Page 157: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Da d − 1 =Tiefe(B) > Tiefe(C) = d − 2,

folgt

Tiefe(A) = Tiefe(C) = d − 2 und Tiefe(B) = d − 1.

Eine Linksrotation in v ist keine Reparatur:

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

B wandert vom rechten zum linken Teilbaum und dieAVL-Eigenschaft bleibt verletzt, da Tiefe (A) = Tiefe(C).

AVL-Bäume Zick-Zack 28 / 74

Page 158: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Da d − 1 =Tiefe(B) > Tiefe(C) = d − 2, folgt

Tiefe(A) = Tiefe(C) = d − 2

und Tiefe(B) = d − 1.

Eine Linksrotation in v ist keine Reparatur:

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

B wandert vom rechten zum linken Teilbaum und dieAVL-Eigenschaft bleibt verletzt, da Tiefe (A) = Tiefe(C).

AVL-Bäume Zick-Zack 28 / 74

Page 159: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Da d − 1 =Tiefe(B) > Tiefe(C) = d − 2, folgt

Tiefe(A) = Tiefe(C) = d − 2 und Tiefe(B) = d − 1.

Eine Linksrotation in v ist keine Reparatur:

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

B wandert vom rechten zum linken Teilbaum und dieAVL-Eigenschaft bleibt verletzt, da Tiefe (A) = Tiefe(C).

AVL-Bäume Zick-Zack 28 / 74

Page 160: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Da d − 1 =Tiefe(B) > Tiefe(C) = d − 2, folgt

Tiefe(A) = Tiefe(C) = d − 2 und Tiefe(B) = d − 1.

Eine Linksrotation in v ist keine Reparatur:

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

B wandert vom rechten zum linken Teilbaum und dieAVL-Eigenschaft bleibt verletzt, da Tiefe (A) = Tiefe(C).

AVL-Bäume Zick-Zack 28 / 74

Page 161: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Da d − 1 =Tiefe(B) > Tiefe(C) = d − 2, folgt

Tiefe(A) = Tiefe(C) = d − 2 und Tiefe(B) = d − 1.

Eine Linksrotation in v ist keine Reparatur:

���AAA���

l���lw

v

uHHHHHH l����

@@

���

���

AAA

AAA

A

B C

B wandert vom rechten zum linken Teilbaum und dieAVL-Eigenschaft bleibt verletzt, da Tiefe (A) = Tiefe(C).

AVL-Bäume Zick-Zack 28 / 74

Page 162: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Zuerst eine Rechtsrotation in u

���AAA ���AAA

�� @@

|���lHHH

���AAA

HHH

l���

���AAA

���

lwv

u

B1 B2

A

Cd − 1

���AAA ���AAA

�� @@

lHHH

|���

���AAA

HHH

l���

���AAA

���

lwv

u

B2 C

A

B1

und dann

eine Linksrotation in v

lwuv

���|

���HHHl l

�� ��@@ @@

���AAA ���AAA ���AAA ���AAAA B1 B2 C

AVL-Bäume Zick-Zack 29 / 74

Page 163: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Zuerst eine Rechtsrotation in u

���AAA ���AAA

�� @@

|���lHHH

���AAA

HHH

l���

���AAA

���

lwv

u

B1 B2

A

Cd − 1

���AAA ���AAA

�� @@

lHHH

|���

���AAA

HHH

l���

���AAA

���

lwv

u

B2 C

A

B1

und dann

eine Linksrotation in v

lwuv

���|

���HHHl l

�� ��@@ @@

���AAA ���AAA ���AAA ���AAAA B1 B2 C

AVL-Bäume Zick-Zack 29 / 74

Page 164: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Zuerst eine Rechtsrotation in u

���AAA ���AAA

�� @@

|���lHHH

���AAA

HHH

l���

���AAA

���

lwv

u

B1 B2

A

Cd − 1

���AAA ���AAA

�� @@

lHHH

|���

���AAA

HHH

l���

���AAA

���

lwv

u

B2 C

A

B1

und dann

eine Linksrotation in v

lwuv

���|

���HHHl l

�� ��@@ @@

���AAA ���AAA ���AAA ���AAAA B1 B2 C

AVL-Bäume Zick-Zack 29 / 74

Page 165: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Tiefe(A) = d − 2

Zuerst eine Rechtsrotation in u

���AAA ���AAA

�� @@

|���lHHH

���AAA

HHH

l���

���AAA

���

lwv

u

B1 B2

A

Cd − 1

���AAA ���AAA

�� @@

lHHH

|���

���AAA

HHH

l���

���AAA

���

lwv

u

B2 C

A

B1

und dann

eine Linksrotation in v

lwuv

���|

���HHHl l

�� ��@@ @@

���AAA ���AAA ���AAA ���AAAA B1 B2 C

AVL-Bäume Zick-Zack 29 / 74

Page 166: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Nach der Doppelrotation

nwuv

���~

���HHHn n

�� ��@@ @@

���AAA �

��AAA �

��AAA �

��AAAA B1 B2 C

Die Tiefe ist um 1 gesunken, denn Tiefe (A) = Tiefe(C) = d − 2und d − 3 6 Tiefe(B1), Tiefe(B2) 6 d − 2.Die Tiefe des schwarzen Knotens stimmt jetzt mit der Tiefe d vonv vor dem Einfügen des neuen Blatts überein.Nach Setzen der neuen Balance-Grade kann die Reparaturabgebrochen werden.

AVL-Bäume Zick-Zack 30 / 74

Page 167: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Nach der Doppelrotation

nwuv

���~

���HHHn n

�� ��@@ @@

���AAA �

��AAA �

��AAA �

��AAAA B1 B2 C

Die Tiefe ist um 1 gesunken,

denn Tiefe (A) = Tiefe(C) = d − 2und d − 3 6 Tiefe(B1), Tiefe(B2) 6 d − 2.Die Tiefe des schwarzen Knotens stimmt jetzt mit der Tiefe d vonv vor dem Einfügen des neuen Blatts überein.Nach Setzen der neuen Balance-Grade kann die Reparaturabgebrochen werden.

AVL-Bäume Zick-Zack 30 / 74

Page 168: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Nach der Doppelrotation

nwuv

���~

���HHHn n

�� ��@@ @@

���AAA �

��AAA �

��AAA �

��AAAA B1 B2 C

Die Tiefe ist um 1 gesunken, denn Tiefe (A) = Tiefe(C) = d − 2

und d − 3 6 Tiefe(B1), Tiefe(B2) 6 d − 2.Die Tiefe des schwarzen Knotens stimmt jetzt mit der Tiefe d vonv vor dem Einfügen des neuen Blatts überein.Nach Setzen der neuen Balance-Grade kann die Reparaturabgebrochen werden.

AVL-Bäume Zick-Zack 30 / 74

Page 169: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Nach der Doppelrotation

nwuv

���~

���HHHn n

�� ��@@ @@

���AAA �

��AAA �

��AAA �

��AAAA B1 B2 C

Die Tiefe ist um 1 gesunken, denn Tiefe (A) = Tiefe(C) = d − 2und d − 3 6 Tiefe(B1), Tiefe(B2) 6 d − 2.

Die Tiefe des schwarzen Knotens stimmt jetzt mit der Tiefe d vonv vor dem Einfügen des neuen Blatts überein.Nach Setzen der neuen Balance-Grade kann die Reparaturabgebrochen werden.

AVL-Bäume Zick-Zack 30 / 74

Page 170: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Nach der Doppelrotation

nwuv

���~

���HHHn n

�� ��@@ @@

���AAA �

��AAA �

��AAA �

��AAAA B1 B2 C

Die Tiefe ist um 1 gesunken, denn Tiefe (A) = Tiefe(C) = d − 2und d − 3 6 Tiefe(B1), Tiefe(B2) 6 d − 2.Die Tiefe des schwarzen Knotens stimmt jetzt mit der Tiefe d vonv vor dem Einfügen des neuen Blatts überein.

Nach Setzen der neuen Balance-Grade kann die Reparaturabgebrochen werden.

AVL-Bäume Zick-Zack 30 / 74

Page 171: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Nach der Doppelrotation

nwuv

���~

���HHHn n

�� ��@@ @@

���AAA �

��AAA �

��AAA �

��AAAA B1 B2 C

Die Tiefe ist um 1 gesunken, denn Tiefe (A) = Tiefe(C) = d − 2und d − 3 6 Tiefe(B1), Tiefe(B2) 6 d − 2.Die Tiefe des schwarzen Knotens stimmt jetzt mit der Tiefe d vonv vor dem Einfügen des neuen Blatts überein.Nach Setzen der neuen Balance-Grade kann die Reparaturabgebrochen werden.

AVL-Bäume Zick-Zack 30 / 74

Page 172: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung

Die Operationen lookup und insert haben worst-case LaufzeitO(log2 n) für AVL-Bäume mit n Knoten.

Wir haben nur den Zack-Zick Fall ausgelassen, der analog zumZick-Zack Fall zu behandeln ist.

Mit AVL-Bäumen können wir schnell sortieren:I Füge n Schlüssel in Zeit O(n · log2 n) einI und führe dann einen Inorder-Traversal in linearer Zeit aus.

AVL-Bäume Zack-Zick 31 / 74

Page 173: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung

Die Operationen lookup und insert haben worst-case LaufzeitO(log2 n) für AVL-Bäume mit n Knoten.

Wir haben nur den Zack-Zick Fall ausgelassen, der analog zumZick-Zack Fall zu behandeln ist.

Mit AVL-Bäumen können wir schnell sortieren:I Füge n Schlüssel in Zeit O(n · log2 n) einI und führe dann einen Inorder-Traversal in linearer Zeit aus.

AVL-Bäume Zack-Zick 31 / 74

Page 174: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung

Die Operationen lookup und insert haben worst-case LaufzeitO(log2 n) für AVL-Bäume mit n Knoten.

Wir haben nur den Zack-Zick Fall ausgelassen, der analog zumZick-Zack Fall zu behandeln ist.

Mit AVL-Bäumen können wir schnell sortieren:

I Füge n Schlüssel in Zeit O(n · log2 n) einI und führe dann einen Inorder-Traversal in linearer Zeit aus.

AVL-Bäume Zack-Zick 31 / 74

Page 175: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung

Die Operationen lookup und insert haben worst-case LaufzeitO(log2 n) für AVL-Bäume mit n Knoten.

Wir haben nur den Zack-Zick Fall ausgelassen, der analog zumZick-Zack Fall zu behandeln ist.

Mit AVL-Bäumen können wir schnell sortieren:I Füge n Schlüssel in Zeit O(n · log2 n) einI und führe dann einen Inorder-Traversal in linearer Zeit aus.

AVL-Bäume Zack-Zick 31 / 74

Page 176: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

(a,b)-Bäume:

Wörterbücher für Externspeicher

AVL-Bäume Zack-Zick 32 / 74

Page 177: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die (a,b)-Eigenschaft

Es gelte a > 2 und b > 2a− 1.

Ein Baum T hat die (a,b)-Eigenschaft, falls

alle Blätter von T die gleiche Tiefe haben,

alle Knoten höchstens b Kinder besitzen unddie Wurzel mindestens zwei Kinder hat,während alle sonstigen Knoten mindestens a Kinder haben.

Interessant sind Bäume mit der (a,b)-Eigenschaft für große Wertevon a und b, wenn Daten auf einem Externspeicher abgelegt sind:

I Die Tiefe wird dementsprechend klein sein undI wenige der sehr langsamen Zugriffe auf den Externspeicher

genügen.

AVL-Bäume (a, b)-Bäume 33 / 74

Page 178: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die (a,b)-Eigenschaft

Es gelte a > 2 und b > 2a− 1.

Ein Baum T hat die (a,b)-Eigenschaft, falls

alle Blätter von T die gleiche Tiefe haben,alle Knoten höchstens b Kinder besitzen

unddie Wurzel mindestens zwei Kinder hat,während alle sonstigen Knoten mindestens a Kinder haben.

Interessant sind Bäume mit der (a,b)-Eigenschaft für große Wertevon a und b, wenn Daten auf einem Externspeicher abgelegt sind:

I Die Tiefe wird dementsprechend klein sein undI wenige der sehr langsamen Zugriffe auf den Externspeicher

genügen.

AVL-Bäume (a, b)-Bäume 33 / 74

Page 179: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die (a,b)-Eigenschaft

Es gelte a > 2 und b > 2a− 1.

Ein Baum T hat die (a,b)-Eigenschaft, falls

alle Blätter von T die gleiche Tiefe haben,alle Knoten höchstens b Kinder besitzen unddie Wurzel mindestens zwei Kinder hat,während alle sonstigen Knoten mindestens a Kinder haben.

Interessant sind Bäume mit der (a,b)-Eigenschaft für große Wertevon a und b, wenn Daten auf einem Externspeicher abgelegt sind:

I Die Tiefe wird dementsprechend klein sein undI wenige der sehr langsamen Zugriffe auf den Externspeicher

genügen.

AVL-Bäume (a, b)-Bäume 33 / 74

Page 180: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die (a,b)-Eigenschaft

Es gelte a > 2 und b > 2a− 1.

Ein Baum T hat die (a,b)-Eigenschaft, falls

alle Blätter von T die gleiche Tiefe haben,alle Knoten höchstens b Kinder besitzen unddie Wurzel mindestens zwei Kinder hat,während alle sonstigen Knoten mindestens a Kinder haben.

Interessant sind Bäume mit der (a,b)-Eigenschaft für große Wertevon a und b, wenn Daten auf einem Externspeicher abgelegt sind:

I Die Tiefe wird dementsprechend klein sein undI wenige der sehr langsamen Zugriffe auf den Externspeicher

genügen.

AVL-Bäume (a, b)-Bäume 33 / 74

Page 181: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Suchstruktur von (a,b)-Bäumen

T ist ein (a,b)-Baum für die Schlüsselmenge S,bzw. ein B-Baum für b = 2a− 1, falls gilt:

T hat die (a,b)-Eigenschaft.Jeder Schlüssel in S wird in genau einem Knoten von Tgespeichert und jeder Knoten speichert die ihm zugewiesenenSchlüssel in aufsteigender Reihenfolge.

I Jeder Knoten mit k Kindern speichert genau k − 1 Schlüssel.I Ein Blatt speichert höchstens b− 1 Schlüssel und mindestens a− 1

Schlüssel.Falls der innere Knoten v die Schlüssel x1, ..., xc (mitx1 < x2 < · · · < xc und c 6 b − 1) speichert, dann

I speichert der linkeste (bzw. rechteste) Teilbaum nur Schlüssel ausdem Intervall (−∞, x1) (bzw. (xc ,∞)).

I Der i .te Teilbaum (für 2 6 i 6 c) speichert nur Schlüssel aus demIntervall (xi−1, xi ).

AVL-Bäume (a, b)-Bäume 34 / 74

Page 182: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Suchstruktur von (a,b)-Bäumen

T ist ein (a,b)-Baum für die Schlüsselmenge S,bzw. ein B-Baum für b = 2a− 1, falls gilt:

T hat die (a,b)-Eigenschaft.

Jeder Schlüssel in S wird in genau einem Knoten von Tgespeichert und jeder Knoten speichert die ihm zugewiesenenSchlüssel in aufsteigender Reihenfolge.

I Jeder Knoten mit k Kindern speichert genau k − 1 Schlüssel.I Ein Blatt speichert höchstens b− 1 Schlüssel und mindestens a− 1

Schlüssel.Falls der innere Knoten v die Schlüssel x1, ..., xc (mitx1 < x2 < · · · < xc und c 6 b − 1) speichert, dann

I speichert der linkeste (bzw. rechteste) Teilbaum nur Schlüssel ausdem Intervall (−∞, x1) (bzw. (xc ,∞)).

I Der i .te Teilbaum (für 2 6 i 6 c) speichert nur Schlüssel aus demIntervall (xi−1, xi ).

AVL-Bäume (a, b)-Bäume 34 / 74

Page 183: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Suchstruktur von (a,b)-Bäumen

T ist ein (a,b)-Baum für die Schlüsselmenge S,bzw. ein B-Baum für b = 2a− 1, falls gilt:

T hat die (a,b)-Eigenschaft.Jeder Schlüssel in S wird in genau einem Knoten von Tgespeichert und jeder Knoten speichert die ihm zugewiesenenSchlüssel in aufsteigender Reihenfolge.

I Jeder Knoten mit k Kindern speichert genau k − 1 Schlüssel.I Ein Blatt speichert höchstens b− 1 Schlüssel und mindestens a− 1

Schlüssel.Falls der innere Knoten v die Schlüssel x1, ..., xc (mitx1 < x2 < · · · < xc und c 6 b − 1) speichert, dann

I speichert der linkeste (bzw. rechteste) Teilbaum nur Schlüssel ausdem Intervall (−∞, x1) (bzw. (xc ,∞)).

I Der i .te Teilbaum (für 2 6 i 6 c) speichert nur Schlüssel aus demIntervall (xi−1, xi ).

AVL-Bäume (a, b)-Bäume 34 / 74

Page 184: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Suchstruktur von (a,b)-Bäumen

T ist ein (a,b)-Baum für die Schlüsselmenge S,bzw. ein B-Baum für b = 2a− 1, falls gilt:

T hat die (a,b)-Eigenschaft.Jeder Schlüssel in S wird in genau einem Knoten von Tgespeichert und jeder Knoten speichert die ihm zugewiesenenSchlüssel in aufsteigender Reihenfolge.

I Jeder Knoten mit k Kindern speichert genau k − 1 Schlüssel.

I Ein Blatt speichert höchstens b− 1 Schlüssel und mindestens a− 1Schlüssel.

Falls der innere Knoten v die Schlüssel x1, ..., xc (mitx1 < x2 < · · · < xc und c 6 b − 1) speichert, dann

I speichert der linkeste (bzw. rechteste) Teilbaum nur Schlüssel ausdem Intervall (−∞, x1) (bzw. (xc ,∞)).

I Der i .te Teilbaum (für 2 6 i 6 c) speichert nur Schlüssel aus demIntervall (xi−1, xi ).

AVL-Bäume (a, b)-Bäume 34 / 74

Page 185: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Suchstruktur von (a,b)-Bäumen

T ist ein (a,b)-Baum für die Schlüsselmenge S,bzw. ein B-Baum für b = 2a− 1, falls gilt:

T hat die (a,b)-Eigenschaft.Jeder Schlüssel in S wird in genau einem Knoten von Tgespeichert und jeder Knoten speichert die ihm zugewiesenenSchlüssel in aufsteigender Reihenfolge.

I Jeder Knoten mit k Kindern speichert genau k − 1 Schlüssel.I Ein Blatt speichert höchstens b− 1 Schlüssel und mindestens a− 1

Schlüssel.

Falls der innere Knoten v die Schlüssel x1, ..., xc (mitx1 < x2 < · · · < xc und c 6 b − 1) speichert, dann

I speichert der linkeste (bzw. rechteste) Teilbaum nur Schlüssel ausdem Intervall (−∞, x1) (bzw. (xc ,∞)).

I Der i .te Teilbaum (für 2 6 i 6 c) speichert nur Schlüssel aus demIntervall (xi−1, xi ).

AVL-Bäume (a, b)-Bäume 34 / 74

Page 186: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Suchstruktur von (a,b)-Bäumen

T ist ein (a,b)-Baum für die Schlüsselmenge S,bzw. ein B-Baum für b = 2a− 1, falls gilt:

T hat die (a,b)-Eigenschaft.Jeder Schlüssel in S wird in genau einem Knoten von Tgespeichert und jeder Knoten speichert die ihm zugewiesenenSchlüssel in aufsteigender Reihenfolge.

I Jeder Knoten mit k Kindern speichert genau k − 1 Schlüssel.I Ein Blatt speichert höchstens b− 1 Schlüssel und mindestens a− 1

Schlüssel.Falls der innere Knoten v die Schlüssel x1, ..., xc (mitx1 < x2 < · · · < xc und c 6 b − 1) speichert,

dannI speichert der linkeste (bzw. rechteste) Teilbaum nur Schlüssel aus

dem Intervall (−∞, x1) (bzw. (xc ,∞)).I Der i .te Teilbaum (für 2 6 i 6 c) speichert nur Schlüssel aus dem

Intervall (xi−1, xi ).

AVL-Bäume (a, b)-Bäume 34 / 74

Page 187: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Suchstruktur von (a,b)-Bäumen

T ist ein (a,b)-Baum für die Schlüsselmenge S,bzw. ein B-Baum für b = 2a− 1, falls gilt:

T hat die (a,b)-Eigenschaft.Jeder Schlüssel in S wird in genau einem Knoten von Tgespeichert und jeder Knoten speichert die ihm zugewiesenenSchlüssel in aufsteigender Reihenfolge.

I Jeder Knoten mit k Kindern speichert genau k − 1 Schlüssel.I Ein Blatt speichert höchstens b− 1 Schlüssel und mindestens a− 1

Schlüssel.Falls der innere Knoten v die Schlüssel x1, ..., xc (mitx1 < x2 < · · · < xc und c 6 b − 1) speichert, dann

I speichert der linkeste (bzw. rechteste) Teilbaum nur Schlüssel ausdem Intervall (−∞, x1) (bzw. (xc ,∞)).

I Der i .te Teilbaum (für 2 6 i 6 c) speichert nur Schlüssel aus demIntervall (xi−1, xi ).

AVL-Bäume (a, b)-Bäume 34 / 74

Page 188: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Suchstruktur von (a,b)-Bäumen

T ist ein (a,b)-Baum für die Schlüsselmenge S,bzw. ein B-Baum für b = 2a− 1, falls gilt:

T hat die (a,b)-Eigenschaft.Jeder Schlüssel in S wird in genau einem Knoten von Tgespeichert und jeder Knoten speichert die ihm zugewiesenenSchlüssel in aufsteigender Reihenfolge.

I Jeder Knoten mit k Kindern speichert genau k − 1 Schlüssel.I Ein Blatt speichert höchstens b− 1 Schlüssel und mindestens a− 1

Schlüssel.Falls der innere Knoten v die Schlüssel x1, ..., xc (mitx1 < x2 < · · · < xc und c 6 b − 1) speichert, dann

I speichert der linkeste (bzw. rechteste) Teilbaum nur Schlüssel ausdem Intervall (−∞, x1) (bzw. (xc ,∞)).

I Der i .te Teilbaum (für 2 6 i 6 c) speichert nur Schlüssel aus demIntervall (xi−1, xi ).

AVL-Bäume (a, b)-Bäume 34 / 74

Page 189: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Ein Beispiel

Für a = 2 und b = 3 erhalten wir 2-3 Bäume:

A D

B

E

F ,G

H,M

K ,L P�� @

@ �� @

@

����

�� PPPPPP

Die Schlüssel der inneren Knoten helfen in der Suche:I Auf der Suche nach Schlüssel K suche im rechten Teilbaum weiter,

denn E < K .I Da H < K < M muss das mittlere Blatt aufgesucht werden.

AVL-Bäume (a, b)-Bäume 35 / 74

Page 190: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Ein Beispiel

Für a = 2 und b = 3 erhalten wir 2-3 Bäume:

A D

B

E

F ,G

H,M

K ,L P�� @

@ �� @

@

����

�� PPPPPP

Die Schlüssel der inneren Knoten helfen in der Suche:

I Auf der Suche nach Schlüssel K suche im rechten Teilbaum weiter,denn E < K .

I Da H < K < M muss das mittlere Blatt aufgesucht werden.

AVL-Bäume (a, b)-Bäume 35 / 74

Page 191: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Ein Beispiel

Für a = 2 und b = 3 erhalten wir 2-3 Bäume:

A D

B

E

F ,G

H,M

K ,L P�� @

@ �� @

@

����

�� PPPPPP

Die Schlüssel der inneren Knoten helfen in der Suche:I Auf der Suche nach Schlüssel K suche im rechten Teilbaum weiter,

denn E < K .

I Da H < K < M muss das mittlere Blatt aufgesucht werden.

AVL-Bäume (a, b)-Bäume 35 / 74

Page 192: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Ein Beispiel

Für a = 2 und b = 3 erhalten wir 2-3 Bäume:

A D

B

E

F ,G

H,M

K ,L P�� @

@ �� @

@

����

�� PPPPPP

Die Schlüssel der inneren Knoten helfen in der Suche:I Auf der Suche nach Schlüssel K suche im rechten Teilbaum weiter,

denn E < K .I Da H < K < M muss das mittlere Blatt aufgesucht werden.

AVL-Bäume (a, b)-Bäume 35 / 74

Page 193: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 194: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.

I In Tiefe t können wir damit höchstensn 6 1 + b + ...+ bt = bt+1−1

b−1 < bt+1 Knoten erreichen.I Also folgt bt+1 > n und damit t > logb n − 1.

Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 195: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt

= bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 196: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1

< bt+1 Knoten erreichen.I Also folgt bt+1 > n und damit t > logb n − 1.

Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 197: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 198: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.

Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 199: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 200: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1)

= 1 + 2 · at−1a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 201: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 202: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 ,

beziehungsweise at−1a−1 6 n−1

2 .Aber at−1 < at−1

a−1 gilt für t > 2 und deshalb t < loga(n−1

2

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 203: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 204: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2

und deshalb t < loga(n−1

2

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 205: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Tiefe von (a,b)-Bäumen

T sei ein (a,b)-Baum mit n Knoten. Dann gilt für Tiefe(T ) > 2:

logb(n)− 1 < Tiefe(T ) < loga(n − 1

2) + 1.

Die Tiefe ist minimal, wenn jeder Knoten genau b Kinder hat.I In Tiefe t können wir damit höchstens

n 6 1 + b + ...+ bt = bt+1−1b−1 < bt+1 Knoten erreichen.

I Also folgt bt+1 > n und damit t > logb n − 1.Die Tiefe ist am größten, wenn die Wurzel zwei Kinder und jederinnere Knoten a Kinder besitzt.

I Wir erhalten also in Tiefe t mindestensn > 1 + 2(1 + ...+ at−1) = 1 + 2 · at−1

a−1 Knoten.

Also folgt n > 1 + 2 · at−1a−1 , beziehungsweise at−1

a−1 6 n−12 .

Aber at−1 < at−1a−1 gilt für t > 2 und deshalb t < loga

(n−12

)+ 1.

AVL-Bäume (a, b)-Bäume 36 / 74

Page 206: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup(x)

Benutze die den inneren Knoten zugeordneten Schlüssel, um denSchlüssel x zu lokalisieren.

Es genügen Tiefe(T ) + 1 < logan−1

2 + 2 Speicherzugriffe.I Zum Beispiel: Wähle a als ein Megabyte und n als ein Terabyte.

Also

a = 106 und n = 1012.

I Dann genügen weniger als log106 1012 + 2 Zugriffe und damitreichen drei Speicherzugriffe.

I Wenn n ein Petabyte (n = 1015) ist, dann reichen vier Zugriffe.Dasselbe gilt sogar für ein Exabyte (n = 1018).

Für die lookup Operation in einem (a,b)-Baum mit n Schlüsselngenügen weniger als loga

n−12 + 2 Speicherzugriffe.

(a, b)-Bäume Lookup 37 / 74

Page 207: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup(x)

Benutze die den inneren Knoten zugeordneten Schlüssel, um denSchlüssel x zu lokalisieren.

Es genügen Tiefe(T ) + 1 < logan−1

2 + 2 Speicherzugriffe.

I Zum Beispiel: Wähle a als ein Megabyte und n als ein Terabyte.Also

a = 106 und n = 1012.

I Dann genügen weniger als log106 1012 + 2 Zugriffe und damitreichen drei Speicherzugriffe.

I Wenn n ein Petabyte (n = 1015) ist, dann reichen vier Zugriffe.Dasselbe gilt sogar für ein Exabyte (n = 1018).

Für die lookup Operation in einem (a,b)-Baum mit n Schlüsselngenügen weniger als loga

n−12 + 2 Speicherzugriffe.

(a, b)-Bäume Lookup 37 / 74

Page 208: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup(x)

Benutze die den inneren Knoten zugeordneten Schlüssel, um denSchlüssel x zu lokalisieren.

Es genügen Tiefe(T ) + 1 < logan−1

2 + 2 Speicherzugriffe.I Zum Beispiel: Wähle a als ein Megabyte und n als ein Terabyte.

Also

a = 106 und n = 1012.

I Dann genügen weniger als log106 1012 + 2 Zugriffe und damitreichen drei Speicherzugriffe.

I Wenn n ein Petabyte (n = 1015) ist, dann reichen vier Zugriffe.Dasselbe gilt sogar für ein Exabyte (n = 1018).

Für die lookup Operation in einem (a,b)-Baum mit n Schlüsselngenügen weniger als loga

n−12 + 2 Speicherzugriffe.

(a, b)-Bäume Lookup 37 / 74

Page 209: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup(x)

Benutze die den inneren Knoten zugeordneten Schlüssel, um denSchlüssel x zu lokalisieren.

Es genügen Tiefe(T ) + 1 < logan−1

2 + 2 Speicherzugriffe.I Zum Beispiel: Wähle a als ein Megabyte und n als ein Terabyte.

Also

a = 106 und n = 1012.

I Dann genügen weniger als log106 1012 + 2 Zugriffe und damitreichen

drei Speicherzugriffe.I Wenn n ein Petabyte (n = 1015) ist, dann reichen vier Zugriffe.

Dasselbe gilt sogar für ein Exabyte (n = 1018).

Für die lookup Operation in einem (a,b)-Baum mit n Schlüsselngenügen weniger als loga

n−12 + 2 Speicherzugriffe.

(a, b)-Bäume Lookup 37 / 74

Page 210: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup(x)

Benutze die den inneren Knoten zugeordneten Schlüssel, um denSchlüssel x zu lokalisieren.

Es genügen Tiefe(T ) + 1 < logan−1

2 + 2 Speicherzugriffe.I Zum Beispiel: Wähle a als ein Megabyte und n als ein Terabyte.

Also

a = 106 und n = 1012.

I Dann genügen weniger als log106 1012 + 2 Zugriffe und damitreichen drei Speicherzugriffe.

I Wenn n ein Petabyte (n = 1015) ist, dann reichen vier Zugriffe.Dasselbe gilt sogar für ein Exabyte (n = 1018).

Für die lookup Operation in einem (a,b)-Baum mit n Schlüsselngenügen weniger als loga

n−12 + 2 Speicherzugriffe.

(a, b)-Bäume Lookup 37 / 74

Page 211: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup(x)

Benutze die den inneren Knoten zugeordneten Schlüssel, um denSchlüssel x zu lokalisieren.

Es genügen Tiefe(T ) + 1 < logan−1

2 + 2 Speicherzugriffe.I Zum Beispiel: Wähle a als ein Megabyte und n als ein Terabyte.

Also

a = 106 und n = 1012.

I Dann genügen weniger als log106 1012 + 2 Zugriffe und damitreichen drei Speicherzugriffe.

I Wenn n ein Petabyte (n = 1015) ist, dann reichen

vier Zugriffe.Dasselbe gilt sogar für ein Exabyte (n = 1018).

Für die lookup Operation in einem (a,b)-Baum mit n Schlüsselngenügen weniger als loga

n−12 + 2 Speicherzugriffe.

(a, b)-Bäume Lookup 37 / 74

Page 212: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup(x)

Benutze die den inneren Knoten zugeordneten Schlüssel, um denSchlüssel x zu lokalisieren.

Es genügen Tiefe(T ) + 1 < logan−1

2 + 2 Speicherzugriffe.I Zum Beispiel: Wähle a als ein Megabyte und n als ein Terabyte.

Also

a = 106 und n = 1012.

I Dann genügen weniger als log106 1012 + 2 Zugriffe und damitreichen drei Speicherzugriffe.

I Wenn n ein Petabyte (n = 1015) ist, dann reichen vier Zugriffe.

Dasselbe gilt sogar für ein Exabyte (n = 1018).

Für die lookup Operation in einem (a,b)-Baum mit n Schlüsselngenügen weniger als loga

n−12 + 2 Speicherzugriffe.

(a, b)-Bäume Lookup 37 / 74

Page 213: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup(x)

Benutze die den inneren Knoten zugeordneten Schlüssel, um denSchlüssel x zu lokalisieren.

Es genügen Tiefe(T ) + 1 < logan−1

2 + 2 Speicherzugriffe.I Zum Beispiel: Wähle a als ein Megabyte und n als ein Terabyte.

Also

a = 106 und n = 1012.

I Dann genügen weniger als log106 1012 + 2 Zugriffe und damitreichen drei Speicherzugriffe.

I Wenn n ein Petabyte (n = 1015) ist, dann reichen vier Zugriffe.Dasselbe gilt sogar für ein Exabyte (n = 1018).

Für die lookup Operation in einem (a,b)-Baum mit n Schlüsselngenügen weniger als loga

n−12 + 2 Speicherzugriffe.

(a, b)-Bäume Lookup 37 / 74

Page 214: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lookup(x)

Benutze die den inneren Knoten zugeordneten Schlüssel, um denSchlüssel x zu lokalisieren.

Es genügen Tiefe(T ) + 1 < logan−1

2 + 2 Speicherzugriffe.I Zum Beispiel: Wähle a als ein Megabyte und n als ein Terabyte.

Also

a = 106 und n = 1012.

I Dann genügen weniger als log106 1012 + 2 Zugriffe und damitreichen drei Speicherzugriffe.

I Wenn n ein Petabyte (n = 1015) ist, dann reichen vier Zugriffe.Dasselbe gilt sogar für ein Exabyte (n = 1018).

Für die lookup Operation in einem (a,b)-Baum mit n Schlüsselngenügen weniger als loga

n−12 + 2 Speicherzugriffe.

(a, b)-Bäume Lookup 37 / 74

Page 215: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .

2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1 = d b

2e − 1 6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.

Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 216: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1 = d b

2e − 1 6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.

Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 217: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.

Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1 = d b

2e − 1 6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.

Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 218: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1 = d b

2e − 1 6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.

Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 219: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1 = d b

2e − 1 6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.

Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 220: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b.

Also a− 1 6 b b+12 c − 1 = d b

2e − 1 6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.

Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 221: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1

= d b2e − 1 6 b b

2c:vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.

I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 222: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1 = d b

2e − 1

6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.

Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 223: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1 = d b

2e − 1 6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.

Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 224: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1 = d b

2e − 1 6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.

I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 225: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Insert(x)

Zuerst suche nach x .1 Wenn x gefunden wird, dann überschreibe den Info-Teil,

ansonsten endet die Suche in einem Blatt v .2 Füge x in die sortierte Folge der Schlüssel von v ein.

Fall 1: v hat jetzt höchstens b − 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt b Schlüssel x1 < ... < xb:Die (a,b)-Eigenschaft ist verletzt.

I Ersetze v durch zwei Knoten vlinks (mit den Schlüsselnx1, . . . , xdb/2e−1) und vrechts (mit den Schlüsseln xdb/2e+1, . . . , xb).

I Es ist 2a− 1 6 b. Also a− 1 6 b b+12 c − 1 = d b

2e − 1 6 b b2c:

vlinks, vrechts besitzen die notwendige Mindestzahl von Schlüsseln.I Der Schlüssel xdb/2e unterscheidet zwischen vlinks und vrechts.

Füge xdb/2e rekursiv im Elternknoten von v ein.

(a, b)-Bäume Insert 38 / 74

Page 226: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wann erhöht sich die Tiefe des (a,b)-Baums?

Wir fügen zuerst in einem Blatt ein,I spalten dann ggf. die Schlüssel unter zwei neuen Knoten auf undI fügen rekursiv einen trennenden Knoten beim Elternknoten ein.

Wenn die Wurzel bereits b − 1 Schlüssel speichert und einentrennenden Schlüssel zusätzlich erhält, dann

I muss sie in zwei Knoten aufgespalten werden.I Der trennende Schlüssel der beiden neuen Knoten wird zum

einzigen Schlüssel der neuen Wurzel.F Wir haben erlaubt, dass die Wurzel zwei oder mehr Kinder hat,

um diesen Fall abzufangen.

Auch der Grund für die Bedingung 2 · a− 1 6 b ist klar:I Die Aufspaltung eines Knotens mit b Schlüsseln

in zwei Knoten mit legaler Schlüsselzahl muss möglich sein.

(a, b)-Bäume Insert 39 / 74

Page 227: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wann erhöht sich die Tiefe des (a,b)-Baums?

Wir fügen zuerst in einem Blatt ein,I spalten dann ggf. die Schlüssel unter zwei neuen Knoten auf undI fügen rekursiv einen trennenden Knoten beim Elternknoten ein.

Wenn die Wurzel bereits b − 1 Schlüssel speichert und einentrennenden Schlüssel zusätzlich erhält, dann

I muss sie in zwei Knoten aufgespalten werden.I Der trennende Schlüssel der beiden neuen Knoten wird zum

einzigen Schlüssel der neuen Wurzel.F Wir haben erlaubt, dass die Wurzel zwei oder mehr Kinder hat,

um diesen Fall abzufangen.

Auch der Grund für die Bedingung 2 · a− 1 6 b ist klar:I Die Aufspaltung eines Knotens mit b Schlüsseln

in zwei Knoten mit legaler Schlüsselzahl muss möglich sein.

(a, b)-Bäume Insert 39 / 74

Page 228: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wann erhöht sich die Tiefe des (a,b)-Baums?

Wir fügen zuerst in einem Blatt ein,I spalten dann ggf. die Schlüssel unter zwei neuen Knoten auf undI fügen rekursiv einen trennenden Knoten beim Elternknoten ein.

Wenn die Wurzel bereits b − 1 Schlüssel speichert und einentrennenden Schlüssel zusätzlich erhält, dann

I muss sie in zwei Knoten aufgespalten werden.I Der trennende Schlüssel der beiden neuen Knoten wird zum

einzigen Schlüssel der neuen Wurzel.

F Wir haben erlaubt, dass die Wurzel zwei oder mehr Kinder hat,um diesen Fall abzufangen.

Auch der Grund für die Bedingung 2 · a− 1 6 b ist klar:I Die Aufspaltung eines Knotens mit b Schlüsseln

in zwei Knoten mit legaler Schlüsselzahl muss möglich sein.

(a, b)-Bäume Insert 39 / 74

Page 229: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wann erhöht sich die Tiefe des (a,b)-Baums?

Wir fügen zuerst in einem Blatt ein,I spalten dann ggf. die Schlüssel unter zwei neuen Knoten auf undI fügen rekursiv einen trennenden Knoten beim Elternknoten ein.

Wenn die Wurzel bereits b − 1 Schlüssel speichert und einentrennenden Schlüssel zusätzlich erhält, dann

I muss sie in zwei Knoten aufgespalten werden.I Der trennende Schlüssel der beiden neuen Knoten wird zum

einzigen Schlüssel der neuen Wurzel.F Wir haben erlaubt, dass die Wurzel zwei oder mehr Kinder hat,

um diesen Fall abzufangen.

Auch der Grund für die Bedingung 2 · a− 1 6 b ist klar:I Die Aufspaltung eines Knotens mit b Schlüsseln

in zwei Knoten mit legaler Schlüsselzahl muss möglich sein.

(a, b)-Bäume Insert 39 / 74

Page 230: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wann erhöht sich die Tiefe des (a,b)-Baums?

Wir fügen zuerst in einem Blatt ein,I spalten dann ggf. die Schlüssel unter zwei neuen Knoten auf undI fügen rekursiv einen trennenden Knoten beim Elternknoten ein.

Wenn die Wurzel bereits b − 1 Schlüssel speichert und einentrennenden Schlüssel zusätzlich erhält, dann

I muss sie in zwei Knoten aufgespalten werden.I Der trennende Schlüssel der beiden neuen Knoten wird zum

einzigen Schlüssel der neuen Wurzel.F Wir haben erlaubt, dass die Wurzel zwei oder mehr Kinder hat,

um diesen Fall abzufangen.

Auch der Grund für die Bedingung 2 · a− 1 6 b ist klar:

I Die Aufspaltung eines Knotens mit b Schlüsselnin zwei Knoten mit legaler Schlüsselzahl muss möglich sein.

(a, b)-Bäume Insert 39 / 74

Page 231: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wann erhöht sich die Tiefe des (a,b)-Baums?

Wir fügen zuerst in einem Blatt ein,I spalten dann ggf. die Schlüssel unter zwei neuen Knoten auf undI fügen rekursiv einen trennenden Knoten beim Elternknoten ein.

Wenn die Wurzel bereits b − 1 Schlüssel speichert und einentrennenden Schlüssel zusätzlich erhält, dann

I muss sie in zwei Knoten aufgespalten werden.I Der trennende Schlüssel der beiden neuen Knoten wird zum

einzigen Schlüssel der neuen Wurzel.F Wir haben erlaubt, dass die Wurzel zwei oder mehr Kinder hat,

um diesen Fall abzufangen.

Auch der Grund für die Bedingung 2 · a− 1 6 b ist klar:I Die Aufspaltung eines Knotens mit b Schlüsseln

in zwei Knoten mit legaler Schlüsselzahl muss möglich sein.

(a, b)-Bäume Insert 39 / 74

Page 232: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Remove(x)

Zuerst müssen wir nach x suchen.Angenommen wir finden x in dem inneren Knoten v :

I Wir suchen den kleinsten Schlüssel y mit x 6 y .I y befindet sich im linkesten Blatt b des entsprechenden Teilbaums

von v . Wir ersetzen den Schlüssel x in v durch y .

Setze v = b und entferne x : Das Blatt v verliert einen Schlüssel.

Fall 1: v hat jetzt mindestens a− 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt a− 2 Schlüssel.

1 Zuerst begibt sich Knoten v auf „Schlüsselklau“ und stiebitzt,wenn möglich, einen Schlüssel von seinem Elternknoten.

2 Sollte dies nicht möglich sein,wird v mit einem Geschwisterknoten fusioniert.

(a, b)-Bäume Remove 40 / 74

Page 233: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Remove(x)

Zuerst müssen wir nach x suchen.Angenommen wir finden x in dem inneren Knoten v :

I Wir suchen den kleinsten Schlüssel y mit x 6 y .I y befindet sich

im linkesten Blatt b des entsprechenden Teilbaumsvon v . Wir ersetzen den Schlüssel x in v durch y .

Setze v = b und entferne x : Das Blatt v verliert einen Schlüssel.

Fall 1: v hat jetzt mindestens a− 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt a− 2 Schlüssel.

1 Zuerst begibt sich Knoten v auf „Schlüsselklau“ und stiebitzt,wenn möglich, einen Schlüssel von seinem Elternknoten.

2 Sollte dies nicht möglich sein,wird v mit einem Geschwisterknoten fusioniert.

(a, b)-Bäume Remove 40 / 74

Page 234: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Remove(x)

Zuerst müssen wir nach x suchen.Angenommen wir finden x in dem inneren Knoten v :

I Wir suchen den kleinsten Schlüssel y mit x 6 y .I y befindet sich im linkesten Blatt b des entsprechenden Teilbaums

von v . Wir ersetzen den Schlüssel x in v durch y .

Setze v = b und entferne x : Das Blatt v verliert einen Schlüssel.

Fall 1: v hat jetzt mindestens a− 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt a− 2 Schlüssel.

1 Zuerst begibt sich Knoten v auf „Schlüsselklau“ und stiebitzt,wenn möglich, einen Schlüssel von seinem Elternknoten.

2 Sollte dies nicht möglich sein,wird v mit einem Geschwisterknoten fusioniert.

(a, b)-Bäume Remove 40 / 74

Page 235: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Remove(x)

Zuerst müssen wir nach x suchen.Angenommen wir finden x in dem inneren Knoten v :

I Wir suchen den kleinsten Schlüssel y mit x 6 y .I y befindet sich im linkesten Blatt b des entsprechenden Teilbaums

von v . Wir ersetzen den Schlüssel x in v durch y .

Setze v = b und entferne x : Das Blatt v verliert einen Schlüssel.

Fall 1: v hat jetzt mindestens a− 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt a− 2 Schlüssel.

1 Zuerst begibt sich Knoten v auf „Schlüsselklau“ und stiebitzt,wenn möglich, einen Schlüssel von seinem Elternknoten.

2 Sollte dies nicht möglich sein,wird v mit einem Geschwisterknoten fusioniert.

(a, b)-Bäume Remove 40 / 74

Page 236: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Remove(x)

Zuerst müssen wir nach x suchen.Angenommen wir finden x in dem inneren Knoten v :

I Wir suchen den kleinsten Schlüssel y mit x 6 y .I y befindet sich im linkesten Blatt b des entsprechenden Teilbaums

von v . Wir ersetzen den Schlüssel x in v durch y .

Setze v = b und entferne x : Das Blatt v verliert einen Schlüssel.

Fall 1: v hat jetzt mindestens a− 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.

Fall 2: v hat jetzt a− 2 Schlüssel.1 Zuerst begibt sich Knoten v auf „Schlüsselklau“ und stiebitzt,

wenn möglich, einen Schlüssel von seinem Elternknoten.2 Sollte dies nicht möglich sein,

wird v mit einem Geschwisterknoten fusioniert.

(a, b)-Bäume Remove 40 / 74

Page 237: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Remove(x)

Zuerst müssen wir nach x suchen.Angenommen wir finden x in dem inneren Knoten v :

I Wir suchen den kleinsten Schlüssel y mit x 6 y .I y befindet sich im linkesten Blatt b des entsprechenden Teilbaums

von v . Wir ersetzen den Schlüssel x in v durch y .

Setze v = b und entferne x : Das Blatt v verliert einen Schlüssel.

Fall 1: v hat jetzt mindestens a− 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt a− 2 Schlüssel.

1 Zuerst begibt sich Knoten v auf „Schlüsselklau“ und stiebitzt,wenn möglich, einen Schlüssel von seinem Elternknoten.

2 Sollte dies nicht möglich sein,wird v mit einem Geschwisterknoten fusioniert.

(a, b)-Bäume Remove 40 / 74

Page 238: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Remove(x)

Zuerst müssen wir nach x suchen.Angenommen wir finden x in dem inneren Knoten v :

I Wir suchen den kleinsten Schlüssel y mit x 6 y .I y befindet sich im linkesten Blatt b des entsprechenden Teilbaums

von v . Wir ersetzen den Schlüssel x in v durch y .

Setze v = b und entferne x : Das Blatt v verliert einen Schlüssel.

Fall 1: v hat jetzt mindestens a− 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt a− 2 Schlüssel.

1 Zuerst begibt sich Knoten v auf „Schlüsselklau“ und stiebitzt,wenn möglich, einen Schlüssel von seinem Elternknoten.

2 Sollte dies nicht möglich sein,wird v mit einem Geschwisterknoten fusioniert.

(a, b)-Bäume Remove 40 / 74

Page 239: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Remove(x)

Zuerst müssen wir nach x suchen.Angenommen wir finden x in dem inneren Knoten v :

I Wir suchen den kleinsten Schlüssel y mit x 6 y .I y befindet sich im linkesten Blatt b des entsprechenden Teilbaums

von v . Wir ersetzen den Schlüssel x in v durch y .

Setze v = b und entferne x : Das Blatt v verliert einen Schlüssel.

Fall 1: v hat jetzt mindestens a− 1 Schlüssel.Wir sind fertig, da die (a,b)-Eigenschaft erfüllt ist.Fall 2: v hat jetzt a− 2 Schlüssel.

1 Zuerst begibt sich Knoten v auf „Schlüsselklau“ und stiebitzt,wenn möglich, einen Schlüssel von seinem Elternknoten.

2 Sollte dies nicht möglich sein,wird v mit einem Geschwisterknoten fusioniert.

(a, b)-Bäume Remove 40 / 74

Page 240: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 241: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 242: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 243: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 244: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.

2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 245: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 246: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.

I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssely1 < · · · < ya−1. Verschmelze v ′ und v .

I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1

Schlüssel und die Höchstanzahl wird nicht überschritten.2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 247: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1.

Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 248: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .

I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1

Schlüssel und die Höchstanzahl wird nicht überschritten.2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 249: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 250: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1

+ a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 251: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2

+ 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 252: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1

= 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 253: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2

6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 254: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 255: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau und Fusion

Der Knoten v habe die Schlüssel x1 < · · · < xa−2.

Fall 2.1: Der linke oder rechte Geschwisterknoten hat mindestensa Schlüssel.

I Der linke Geschwisterknoten v ′ habe z.B. die Schlüssely1 < · · · < ya < · · · < yk ′ .

I Der Schlüssel z des Elternknotens trenne v ′ und v , alsoyk ′ < z < x1.

1 v klaut z und hat damit a − 1 Schlüssel.2 Schlüssel z wird durch Schlüssel yk′ ersetzt. Fertig!

Fall 2.2: Beide Geschwisterknoten besitzen nur a− 1 Schlüssel.I Der linke Geschwisterknoten v ′ hat die a− 1 Schlüssel

y1 < · · · < ya−1. Verschmelze v ′ und v .I Der bisher trennende Schlüssel z des Elternknotens ist einzufügen

1 Der fusionierte Knoten hat a − 1 + a − 2 + 1 = 2a − 2 6 b − 1Schlüssel und die Höchstanzahl wird nicht überschritten.

2 Der Schlüssel z ist rekursiv aus dem Elternknoten zu entfernen.

(a, b)-Bäume Remove 41 / 74

Page 256: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau für innere Knoten

Angenommen wir haben die Remove-Operation rekursiv ausgeführtund haben einen inneren Knoten v erreicht.

v habe einen Schlüssel durch Verschmelzung zweier Kinderverloren.Ein Geschwisterknoten von v speichere mindestens a Kinder.

Das Ergebnis des Schlüsselklaus für 2-3 Bäume:

X

Y, Z

A B C D

v

Y

X Z

A B C D

v

(a, b)-Bäume Remove 42 / 74

Page 257: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau für innere Knoten

Angenommen wir haben die Remove-Operation rekursiv ausgeführtund haben einen inneren Knoten v erreicht.

v habe einen Schlüssel durch Verschmelzung zweier Kinderverloren.

Ein Geschwisterknoten von v speichere mindestens a Kinder.

Das Ergebnis des Schlüsselklaus für 2-3 Bäume:

X

Y, Z

A B C D

v

Y

X Z

A B C D

v

(a, b)-Bäume Remove 42 / 74

Page 258: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau für innere Knoten

Angenommen wir haben die Remove-Operation rekursiv ausgeführtund haben einen inneren Knoten v erreicht.

v habe einen Schlüssel durch Verschmelzung zweier Kinderverloren.Ein Geschwisterknoten von v speichere mindestens a Kinder.

Das Ergebnis des Schlüsselklaus für 2-3 Bäume:

X

Y, Z

A B C D

v

Y

X Z

A B C D

v

(a, b)-Bäume Remove 42 / 74

Page 259: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau für innere Knoten

Angenommen wir haben die Remove-Operation rekursiv ausgeführtund haben einen inneren Knoten v erreicht.

v habe einen Schlüssel durch Verschmelzung zweier Kinderverloren.Ein Geschwisterknoten von v speichere mindestens a Kinder.

Das Ergebnis des Schlüsselklaus für 2-3 Bäume:

X

Y, Z

A B C D

v

Y

X Z

A B C D

v

(a, b)-Bäume Remove 42 / 74

Page 260: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Schlüsselklau für innere Knoten

Angenommen wir haben die Remove-Operation rekursiv ausgeführtund haben einen inneren Knoten v erreicht.

v habe einen Schlüssel durch Verschmelzung zweier Kinderverloren.Ein Geschwisterknoten von v speichere mindestens a Kinder.

Das Ergebnis des Schlüsselklaus für 2-3 Bäume:

X

Y, Z

A B C D

v

Y

X Z

A B C D

v

(a, b)-Bäume Remove 42 / 74

Page 261: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen

∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 262: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,

∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 263: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation

∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.Beachte, dass Tiefe (T ) < loga(n−1

2 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 264: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 265: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 266: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup:

Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 267: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.

Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 268: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert:

Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 269: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.

Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 270: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove:

Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 271: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach unten

und bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 272: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 273: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Zusammenfassung für (a,b)-Bäume

Sei T ein (a,b)-Baum. Dann genügen∗ Tiefe(T ) + 1 Speicherzugriffe für eine lookup-Operation,∗ 2· (Tiefe(T ) + 1) Speicherzugriffe für eine insert-Operation∗ und 4·(Tiefe(T ) + 1) Speicherzugriffe für eine remove-Operation.

Beachte, dass Tiefe (T ) < loga(n−12 ) + 1 für Bäume mit n Knoten gilt.

Lookup: Der Weg von der Wurzel zu einem Blatt besteht ausTiefe(T ) + 1 Knoten.Insert: Die Knoten des Suchpfads werden zuerst gelesen und,wenn zu groß, aufgespalten.Remove: Tiefe(T ) + 1 Zugriffe genügen auf dem Weg nach untenund bis zu 3 Tiefe(T ) + 1 Zugriffe zurück auf dem Weg nach oben,

I nämlich das Schreiben des Knotens undI das Lesen/Schreiben eines Geschwisterknotens.

(a, b)-Bäume Remove 43 / 74

Page 274: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing

Hashing 44 / 74

Page 275: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Bitvektor-Datenstruktur

Das Wörterbuchproblem wird einfacher, wenn die Menge U dermöglicherweise einzufügenden Daten in den Hauptspeicher passt.

Benutze die Bitvektor-Datenstruktur:

In einem booleschen Array wird für jedes Element u ∈ U in derZelle f (u) vermerkt, ob u präsent ist.

Bis auf die Berechnung von f (u) gelingt damit die Ausführungeiner lookup-, insert- oder remove-Operation in konstanter Zeit!Selbst bei einem kleinen Universum U ist aber die Bestimmungeiner geeigneten Funktion f möglicherweise schwierig.Zudem ist in praktischen Anwendungen im Allgemeinen dasUniversum der möglichen Schlüssel zu groß:

Wenn Nachnamen als Schlüssel verwandt werden, und selbstwenn nur Nachnamen der Länge höchstens 10 auftreten, gibt es2610 > 210 · 1010 > 103 · 1010 = 1013, also mehr als 10 Billionenmögliche Schlüssel!

Hashing 45 / 74

Page 276: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Bitvektor-Datenstruktur

Das Wörterbuchproblem wird einfacher, wenn die Menge U dermöglicherweise einzufügenden Daten in den Hauptspeicher passt.

Benutze die Bitvektor-Datenstruktur:In einem booleschen Array wird für jedes Element u ∈ U in derZelle f (u) vermerkt, ob u präsent ist.

Bis auf die Berechnung von f (u) gelingt damit die Ausführungeiner lookup-, insert- oder remove-Operation in konstanter Zeit!

Selbst bei einem kleinen Universum U ist aber die Bestimmungeiner geeigneten Funktion f möglicherweise schwierig.Zudem ist in praktischen Anwendungen im Allgemeinen dasUniversum der möglichen Schlüssel zu groß:

Wenn Nachnamen als Schlüssel verwandt werden, und selbstwenn nur Nachnamen der Länge höchstens 10 auftreten, gibt es2610 > 210 · 1010 > 103 · 1010 = 1013, also mehr als 10 Billionenmögliche Schlüssel!

Hashing 45 / 74

Page 277: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Bitvektor-Datenstruktur

Das Wörterbuchproblem wird einfacher, wenn die Menge U dermöglicherweise einzufügenden Daten in den Hauptspeicher passt.

Benutze die Bitvektor-Datenstruktur:In einem booleschen Array wird für jedes Element u ∈ U in derZelle f (u) vermerkt, ob u präsent ist.

Bis auf die Berechnung von f (u) gelingt damit die Ausführungeiner lookup-, insert- oder remove-Operation in konstanter Zeit!Selbst bei einem kleinen Universum U ist aber die Bestimmungeiner geeigneten Funktion f möglicherweise schwierig.

Zudem ist in praktischen Anwendungen im Allgemeinen dasUniversum der möglichen Schlüssel zu groß:

Wenn Nachnamen als Schlüssel verwandt werden, und selbstwenn nur Nachnamen der Länge höchstens 10 auftreten, gibt es2610 > 210 · 1010 > 103 · 1010 = 1013, also mehr als 10 Billionenmögliche Schlüssel!

Hashing 45 / 74

Page 278: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Bitvektor-Datenstruktur

Das Wörterbuchproblem wird einfacher, wenn die Menge U dermöglicherweise einzufügenden Daten in den Hauptspeicher passt.

Benutze die Bitvektor-Datenstruktur:In einem booleschen Array wird für jedes Element u ∈ U in derZelle f (u) vermerkt, ob u präsent ist.

Bis auf die Berechnung von f (u) gelingt damit die Ausführungeiner lookup-, insert- oder remove-Operation in konstanter Zeit!Selbst bei einem kleinen Universum U ist aber die Bestimmungeiner geeigneten Funktion f möglicherweise schwierig.Zudem ist in praktischen Anwendungen im Allgemeinen dasUniversum der möglichen Schlüssel zu groß:

Wenn Nachnamen als Schlüssel verwandt werden, und selbstwenn nur Nachnamen der Länge höchstens 10 auftreten,

gibt es2610 > 210 · 1010 > 103 · 1010 = 1013, also mehr als 10 Billionenmögliche Schlüssel!

Hashing 45 / 74

Page 279: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Bitvektor-Datenstruktur

Das Wörterbuchproblem wird einfacher, wenn die Menge U dermöglicherweise einzufügenden Daten in den Hauptspeicher passt.

Benutze die Bitvektor-Datenstruktur:In einem booleschen Array wird für jedes Element u ∈ U in derZelle f (u) vermerkt, ob u präsent ist.

Bis auf die Berechnung von f (u) gelingt damit die Ausführungeiner lookup-, insert- oder remove-Operation in konstanter Zeit!Selbst bei einem kleinen Universum U ist aber die Bestimmungeiner geeigneten Funktion f möglicherweise schwierig.Zudem ist in praktischen Anwendungen im Allgemeinen dasUniversum der möglichen Schlüssel zu groß:

Wenn Nachnamen als Schlüssel verwandt werden, und selbstwenn nur Nachnamen der Länge höchstens 10 auftreten, gibt es2610

> 210 · 1010 > 103 · 1010 = 1013, also mehr als 10 Billionenmögliche Schlüssel!

Hashing 45 / 74

Page 280: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Bitvektor-Datenstruktur

Das Wörterbuchproblem wird einfacher, wenn die Menge U dermöglicherweise einzufügenden Daten in den Hauptspeicher passt.

Benutze die Bitvektor-Datenstruktur:In einem booleschen Array wird für jedes Element u ∈ U in derZelle f (u) vermerkt, ob u präsent ist.

Bis auf die Berechnung von f (u) gelingt damit die Ausführungeiner lookup-, insert- oder remove-Operation in konstanter Zeit!Selbst bei einem kleinen Universum U ist aber die Bestimmungeiner geeigneten Funktion f möglicherweise schwierig.Zudem ist in praktischen Anwendungen im Allgemeinen dasUniversum der möglichen Schlüssel zu groß:

Wenn Nachnamen als Schlüssel verwandt werden, und selbstwenn nur Nachnamen der Länge höchstens 10 auftreten, gibt es2610 > 210 · 1010

> 103 · 1010 = 1013, also mehr als 10 Billionenmögliche Schlüssel!

Hashing 45 / 74

Page 281: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Bitvektor-Datenstruktur

Das Wörterbuchproblem wird einfacher, wenn die Menge U dermöglicherweise einzufügenden Daten in den Hauptspeicher passt.

Benutze die Bitvektor-Datenstruktur:In einem booleschen Array wird für jedes Element u ∈ U in derZelle f (u) vermerkt, ob u präsent ist.

Bis auf die Berechnung von f (u) gelingt damit die Ausführungeiner lookup-, insert- oder remove-Operation in konstanter Zeit!Selbst bei einem kleinen Universum U ist aber die Bestimmungeiner geeigneten Funktion f möglicherweise schwierig.Zudem ist in praktischen Anwendungen im Allgemeinen dasUniversum der möglichen Schlüssel zu groß:

Wenn Nachnamen als Schlüssel verwandt werden, und selbstwenn nur Nachnamen der Länge höchstens 10 auftreten, gibt es2610 > 210 · 1010 > 103 · 1010

= 1013, also mehr als 10 Billionenmögliche Schlüssel!

Hashing 45 / 74

Page 282: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Bitvektor-Datenstruktur

Das Wörterbuchproblem wird einfacher, wenn die Menge U dermöglicherweise einzufügenden Daten in den Hauptspeicher passt.

Benutze die Bitvektor-Datenstruktur:In einem booleschen Array wird für jedes Element u ∈ U in derZelle f (u) vermerkt, ob u präsent ist.

Bis auf die Berechnung von f (u) gelingt damit die Ausführungeiner lookup-, insert- oder remove-Operation in konstanter Zeit!Selbst bei einem kleinen Universum U ist aber die Bestimmungeiner geeigneten Funktion f möglicherweise schwierig.Zudem ist in praktischen Anwendungen im Allgemeinen dasUniversum der möglichen Schlüssel zu groß:

Wenn Nachnamen als Schlüssel verwandt werden, und selbstwenn nur Nachnamen der Länge höchstens 10 auftreten, gibt es2610 > 210 · 1010 > 103 · 1010 = 1013, also mehr als 10 Billionenmögliche Schlüssel!

Hashing 45 / 74

Page 283: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing

Hashing gehört zu den Datenstrukturen mit der schnellsten erwartetenLaufzeit.

Sei U die Menge aller möglichen Schlüssel und sei m die Größeeiner im Hauptspeicher abgespeichernten Hashtabelle.Eine Funktion

h : U → {0,1, ...,m − 1}

heißt eine Hashfunktion.Zum Beispiel können wir insert (x, info) implementieren, indem wir

I h(x) = i berechnen undI (x , info) in Zelle i der Tabelle eintragen.

Aber was passiert bei einer Kollision, wenn also Zelle i bereitsbesetzt ist?

Wir beschreiben zwei Hashing-Verfahren,Hashing mit Verkettung und Hashing mit offener Adressierung.

Hashing 46 / 74

Page 284: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing

Hashing gehört zu den Datenstrukturen mit der schnellsten erwartetenLaufzeit.

Sei U die Menge aller möglichen Schlüssel und sei m die Größeeiner im Hauptspeicher abgespeichernten Hashtabelle.

Eine Funktionh : U → {0,1, ...,m − 1}

heißt eine Hashfunktion.Zum Beispiel können wir insert (x, info) implementieren, indem wir

I h(x) = i berechnen undI (x , info) in Zelle i der Tabelle eintragen.

Aber was passiert bei einer Kollision, wenn also Zelle i bereitsbesetzt ist?

Wir beschreiben zwei Hashing-Verfahren,Hashing mit Verkettung und Hashing mit offener Adressierung.

Hashing 46 / 74

Page 285: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing

Hashing gehört zu den Datenstrukturen mit der schnellsten erwartetenLaufzeit.

Sei U die Menge aller möglichen Schlüssel und sei m die Größeeiner im Hauptspeicher abgespeichernten Hashtabelle.Eine Funktion

h : U → {0,1, ...,m − 1}

heißt eine Hashfunktion.

Zum Beispiel können wir insert (x, info) implementieren, indem wirI h(x) = i berechnen undI (x , info) in Zelle i der Tabelle eintragen.

Aber was passiert bei einer Kollision, wenn also Zelle i bereitsbesetzt ist?

Wir beschreiben zwei Hashing-Verfahren,Hashing mit Verkettung und Hashing mit offener Adressierung.

Hashing 46 / 74

Page 286: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing

Hashing gehört zu den Datenstrukturen mit der schnellsten erwartetenLaufzeit.

Sei U die Menge aller möglichen Schlüssel und sei m die Größeeiner im Hauptspeicher abgespeichernten Hashtabelle.Eine Funktion

h : U → {0,1, ...,m − 1}

heißt eine Hashfunktion.Zum Beispiel können wir insert (x, info) implementieren, indem wir

I h(x) = i berechnen und

I (x , info) in Zelle i der Tabelle eintragen.Aber was passiert bei einer Kollision, wenn also Zelle i bereitsbesetzt ist?

Wir beschreiben zwei Hashing-Verfahren,Hashing mit Verkettung und Hashing mit offener Adressierung.

Hashing 46 / 74

Page 287: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing

Hashing gehört zu den Datenstrukturen mit der schnellsten erwartetenLaufzeit.

Sei U die Menge aller möglichen Schlüssel und sei m die Größeeiner im Hauptspeicher abgespeichernten Hashtabelle.Eine Funktion

h : U → {0,1, ...,m − 1}

heißt eine Hashfunktion.Zum Beispiel können wir insert (x, info) implementieren, indem wir

I h(x) = i berechnen undI (x , info) in Zelle i der Tabelle eintragen.

Aber was passiert bei einer Kollision, wenn also Zelle i bereitsbesetzt ist?

Wir beschreiben zwei Hashing-Verfahren,Hashing mit Verkettung und Hashing mit offener Adressierung.

Hashing 46 / 74

Page 288: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing

Hashing gehört zu den Datenstrukturen mit der schnellsten erwartetenLaufzeit.

Sei U die Menge aller möglichen Schlüssel und sei m die Größeeiner im Hauptspeicher abgespeichernten Hashtabelle.Eine Funktion

h : U → {0,1, ...,m − 1}

heißt eine Hashfunktion.Zum Beispiel können wir insert (x, info) implementieren, indem wir

I h(x) = i berechnen undI (x , info) in Zelle i der Tabelle eintragen.

Aber was passiert bei einer Kollision, wenn also Zelle i bereitsbesetzt ist?

Wir beschreiben zwei Hashing-Verfahren,Hashing mit Verkettung und Hashing mit offener Adressierung.

Hashing 46 / 74

Page 289: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing

Hashing gehört zu den Datenstrukturen mit der schnellsten erwartetenLaufzeit.

Sei U die Menge aller möglichen Schlüssel und sei m die Größeeiner im Hauptspeicher abgespeichernten Hashtabelle.Eine Funktion

h : U → {0,1, ...,m − 1}

heißt eine Hashfunktion.Zum Beispiel können wir insert (x, info) implementieren, indem wir

I h(x) = i berechnen undI (x , info) in Zelle i der Tabelle eintragen.

Aber was passiert bei einer Kollision, wenn also Zelle i bereitsbesetzt ist?

Wir beschreiben zwei Hashing-Verfahren,Hashing mit Verkettung und Hashing mit offener Adressierung.

Hashing 46 / 74

Page 290: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Hashing Hashing mit Verkettung 47 / 74

Page 291: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Für jede Zelle i wird eine anfänglich leere Liste angelegt.Jede Liste wird sortiert gehalten.

Für lookup(x): Durchlaufe die Liste von h(x).Für insert(x) und remove(x): Führe die insert- undremove-Operation für einfach-verkettete Listen aus.

Beispiel: Wähle h(x) = (x mod 11) als Hashfunktion. Die Operationeninsert(59), insert(18) und insert(125) führen auf die Tabelle

7

4 - - -59 125

- -18

lookup (26) benötigt nur einen Suchschritt: Schlüssel 59 wird gefundenund es wird geschlossen, dass 26 nicht präsent ist.

Hashing Hashing mit Verkettung 48 / 74

Page 292: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Für jede Zelle i wird eine anfänglich leere Liste angelegt.Jede Liste wird sortiert gehalten.Für lookup(x):

Durchlaufe die Liste von h(x).Für insert(x) und remove(x): Führe die insert- undremove-Operation für einfach-verkettete Listen aus.

Beispiel: Wähle h(x) = (x mod 11) als Hashfunktion. Die Operationeninsert(59), insert(18) und insert(125) führen auf die Tabelle

7

4 - - -59 125

- -18

lookup (26) benötigt nur einen Suchschritt: Schlüssel 59 wird gefundenund es wird geschlossen, dass 26 nicht präsent ist.

Hashing Hashing mit Verkettung 48 / 74

Page 293: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Für jede Zelle i wird eine anfänglich leere Liste angelegt.Jede Liste wird sortiert gehalten.Für lookup(x): Durchlaufe die Liste von h(x).

Für insert(x) und remove(x): Führe die insert- undremove-Operation für einfach-verkettete Listen aus.

Beispiel: Wähle h(x) = (x mod 11) als Hashfunktion. Die Operationeninsert(59), insert(18) und insert(125) führen auf die Tabelle

7

4 - - -59 125

- -18

lookup (26) benötigt nur einen Suchschritt: Schlüssel 59 wird gefundenund es wird geschlossen, dass 26 nicht präsent ist.

Hashing Hashing mit Verkettung 48 / 74

Page 294: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Für jede Zelle i wird eine anfänglich leere Liste angelegt.Jede Liste wird sortiert gehalten.Für lookup(x): Durchlaufe die Liste von h(x).Für insert(x) und remove(x):

Führe die insert- undremove-Operation für einfach-verkettete Listen aus.

Beispiel: Wähle h(x) = (x mod 11) als Hashfunktion. Die Operationeninsert(59), insert(18) und insert(125) führen auf die Tabelle

7

4 - - -59 125

- -18

lookup (26) benötigt nur einen Suchschritt: Schlüssel 59 wird gefundenund es wird geschlossen, dass 26 nicht präsent ist.

Hashing Hashing mit Verkettung 48 / 74

Page 295: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Für jede Zelle i wird eine anfänglich leere Liste angelegt.Jede Liste wird sortiert gehalten.Für lookup(x): Durchlaufe die Liste von h(x).Für insert(x) und remove(x): Führe die insert- undremove-Operation für einfach-verkettete Listen aus.

Beispiel: Wähle h(x) = (x mod 11) als Hashfunktion. Die Operationeninsert(59), insert(18) und insert(125) führen auf die Tabelle

7

4 - - -59 125

- -18

lookup (26) benötigt nur einen Suchschritt: Schlüssel 59 wird gefundenund es wird geschlossen, dass 26 nicht präsent ist.

Hashing Hashing mit Verkettung 48 / 74

Page 296: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Für jede Zelle i wird eine anfänglich leere Liste angelegt.Jede Liste wird sortiert gehalten.Für lookup(x): Durchlaufe die Liste von h(x).Für insert(x) und remove(x): Führe die insert- undremove-Operation für einfach-verkettete Listen aus.

Beispiel: Wähle h(x) = (x mod 11) als Hashfunktion. Die Operationeninsert(59), insert(18) und insert(125) führen auf die Tabelle

7

4 - - -59 125

- -18

lookup (26) benötigt nur einen Suchschritt: Schlüssel 59 wird gefundenund es wird geschlossen, dass 26 nicht präsent ist.

Hashing Hashing mit Verkettung 48 / 74

Page 297: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Für jede Zelle i wird eine anfänglich leere Liste angelegt.Jede Liste wird sortiert gehalten.Für lookup(x): Durchlaufe die Liste von h(x).Für insert(x) und remove(x): Führe die insert- undremove-Operation für einfach-verkettete Listen aus.

Beispiel: Wähle h(x) = (x mod 11) als Hashfunktion. Die Operationeninsert(59), insert(18) und insert(125) führen auf die Tabelle

7

4 - - -59 125

- -18

lookup (26) benötigt nur einen Suchschritt: Schlüssel 59 wird gefundenund es wird geschlossen, dass 26 nicht präsent ist.

Hashing Hashing mit Verkettung 48 / 74

Page 298: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Für jede Zelle i wird eine anfänglich leere Liste angelegt.Jede Liste wird sortiert gehalten.Für lookup(x): Durchlaufe die Liste von h(x).Für insert(x) und remove(x): Führe die insert- undremove-Operation für einfach-verkettete Listen aus.

Beispiel: Wähle h(x) = (x mod 11) als Hashfunktion. Die Operationeninsert(59), insert(18) und insert(125) führen auf die Tabelle

7

4 - - -59 125

- -18

lookup (26) benötigt nur einen Suchschritt:

Schlüssel 59 wird gefundenund es wird geschlossen, dass 26 nicht präsent ist.

Hashing Hashing mit Verkettung 48 / 74

Page 299: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung

Für jede Zelle i wird eine anfänglich leere Liste angelegt.Jede Liste wird sortiert gehalten.Für lookup(x): Durchlaufe die Liste von h(x).Für insert(x) und remove(x): Führe die insert- undremove-Operation für einfach-verkettete Listen aus.

Beispiel: Wähle h(x) = (x mod 11) als Hashfunktion. Die Operationeninsert(59), insert(18) und insert(125) führen auf die Tabelle

7

4 - - -59 125

- -18

lookup (26) benötigt nur einen Suchschritt: Schlüssel 59 wird gefundenund es wird geschlossen, dass 26 nicht präsent ist.

Hashing Hashing mit Verkettung 48 / 74

Page 300: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashfunktionen

Hashing Hashing mit Verkettung 49 / 74

Page 301: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Wahl der Hashfunktion

Jeder Schlüssel x wird als Binärzahl dargestellt.Wir können also annehmen, dass x eine natürliche Zahl ist.

Eine beliebte und gute Wahl ist h(x) = x mod m.I h(x) kann schnell berechnet werden,I aber die Wahl von m ist kritisch!

Wenn m eine Zweierpotenz ist und wenn die SchlüsselCharakter-Strings sind, dann werden alle Character-Strings mitgleicher Endung auf dieselbe Zelle gehasht.

I Häufig auftretende Endungen provozieren viele Kollisionen unddamit lange Listen.

I Die Bearbeitungszeit der einzelnen Operationen wächst!

Wähle stattdessen Primzahlen mit großem Abstand zur nächstenZweierpotenz.

Hashing Hashing mit Verkettung 50 / 74

Page 302: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Wahl der Hashfunktion

Jeder Schlüssel x wird als Binärzahl dargestellt.Wir können also annehmen, dass x eine natürliche Zahl ist.

Eine beliebte und gute Wahl ist h(x) = x mod m.

I h(x) kann schnell berechnet werden,I aber die Wahl von m ist kritisch!

Wenn m eine Zweierpotenz ist und wenn die SchlüsselCharakter-Strings sind, dann werden alle Character-Strings mitgleicher Endung auf dieselbe Zelle gehasht.

I Häufig auftretende Endungen provozieren viele Kollisionen unddamit lange Listen.

I Die Bearbeitungszeit der einzelnen Operationen wächst!

Wähle stattdessen Primzahlen mit großem Abstand zur nächstenZweierpotenz.

Hashing Hashing mit Verkettung 50 / 74

Page 303: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Wahl der Hashfunktion

Jeder Schlüssel x wird als Binärzahl dargestellt.Wir können also annehmen, dass x eine natürliche Zahl ist.

Eine beliebte und gute Wahl ist h(x) = x mod m.I h(x) kann schnell berechnet werden,I aber die Wahl von m ist kritisch!

Wenn m eine Zweierpotenz ist und wenn die SchlüsselCharakter-Strings sind, dann werden alle Character-Strings mitgleicher Endung auf dieselbe Zelle gehasht.

I Häufig auftretende Endungen provozieren viele Kollisionen unddamit lange Listen.

I Die Bearbeitungszeit der einzelnen Operationen wächst!

Wähle stattdessen Primzahlen mit großem Abstand zur nächstenZweierpotenz.

Hashing Hashing mit Verkettung 50 / 74

Page 304: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Wahl der Hashfunktion

Jeder Schlüssel x wird als Binärzahl dargestellt.Wir können also annehmen, dass x eine natürliche Zahl ist.

Eine beliebte und gute Wahl ist h(x) = x mod m.I h(x) kann schnell berechnet werden,I aber die Wahl von m ist kritisch!

Wenn m eine Zweierpotenz ist und wenn die SchlüsselCharakter-Strings sind, dann

werden alle Character-Strings mitgleicher Endung auf dieselbe Zelle gehasht.

I Häufig auftretende Endungen provozieren viele Kollisionen unddamit lange Listen.

I Die Bearbeitungszeit der einzelnen Operationen wächst!

Wähle stattdessen Primzahlen mit großem Abstand zur nächstenZweierpotenz.

Hashing Hashing mit Verkettung 50 / 74

Page 305: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Wahl der Hashfunktion

Jeder Schlüssel x wird als Binärzahl dargestellt.Wir können also annehmen, dass x eine natürliche Zahl ist.

Eine beliebte und gute Wahl ist h(x) = x mod m.I h(x) kann schnell berechnet werden,I aber die Wahl von m ist kritisch!

Wenn m eine Zweierpotenz ist und wenn die SchlüsselCharakter-Strings sind, dann werden alle Character-Strings mitgleicher Endung auf dieselbe Zelle gehasht.

I Häufig auftretende Endungen provozieren viele Kollisionen unddamit lange Listen.

I Die Bearbeitungszeit der einzelnen Operationen wächst!

Wähle stattdessen Primzahlen mit großem Abstand zur nächstenZweierpotenz.

Hashing Hashing mit Verkettung 50 / 74

Page 306: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Wahl der Hashfunktion

Jeder Schlüssel x wird als Binärzahl dargestellt.Wir können also annehmen, dass x eine natürliche Zahl ist.

Eine beliebte und gute Wahl ist h(x) = x mod m.I h(x) kann schnell berechnet werden,I aber die Wahl von m ist kritisch!

Wenn m eine Zweierpotenz ist und wenn die SchlüsselCharakter-Strings sind, dann werden alle Character-Strings mitgleicher Endung auf dieselbe Zelle gehasht.

I Häufig auftretende Endungen provozieren viele Kollisionen unddamit lange Listen.

I Die Bearbeitungszeit der einzelnen Operationen wächst!

Wähle stattdessen Primzahlen mit großem Abstand zur nächstenZweierpotenz.

Hashing Hashing mit Verkettung 50 / 74

Page 307: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die Wahl der Hashfunktion

Jeder Schlüssel x wird als Binärzahl dargestellt.Wir können also annehmen, dass x eine natürliche Zahl ist.

Eine beliebte und gute Wahl ist h(x) = x mod m.I h(x) kann schnell berechnet werden,I aber die Wahl von m ist kritisch!

Wenn m eine Zweierpotenz ist und wenn die SchlüsselCharakter-Strings sind, dann werden alle Character-Strings mitgleicher Endung auf dieselbe Zelle gehasht.

I Häufig auftretende Endungen provozieren viele Kollisionen unddamit lange Listen.

I Die Bearbeitungszeit der einzelnen Operationen wächst!

Wähle stattdessen Primzahlen mit großem Abstand zur nächstenZweierpotenz.

Hashing Hashing mit Verkettung 50 / 74

Page 308: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung,wir hashen direkt in die Hashtabelle

Hashing Hashing mit offener Adressierung 51 / 74

Page 309: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung

Wir arbeiten mit einer Folge

h0, ...,hm−1 : U → {0, ...,m − 1}

von Hashfunktionen.

Setze i = 0.(1) Wenn die Zelle hi(x) frei ist, dann füge x in Zelle hi(x) ein.(2) Ansonsten setze i = i + 1 und gehe zu Schritt (1).

Die Anzahl der Fehlversuche „sollte“ ansteigen, wenn λ zu großwird. Was ist in einem solchen Fall zu tun?

I Wenn der Auslastungsfaktor größer als 1/2 wird, dann lade dieTabelle in eine doppelt so große Tabelle.

I Die Zeit für die Reorganisation wird durch die schnellereBearbeitung der Operationen amortisiert.

Wie sollen die einzelnen Operationen implementiert werden?

Hashing Hashing mit offener Adressierung 52 / 74

Page 310: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung

Wir arbeiten mit einer Folge

h0, ...,hm−1 : U → {0, ...,m − 1}

von Hashfunktionen. Setze i = 0.(1) Wenn die Zelle hi(x) frei ist, dann füge x in Zelle hi(x) ein.

(2) Ansonsten setze i = i + 1 und gehe zu Schritt (1).

Die Anzahl der Fehlversuche „sollte“ ansteigen, wenn λ zu großwird. Was ist in einem solchen Fall zu tun?

I Wenn der Auslastungsfaktor größer als 1/2 wird, dann lade dieTabelle in eine doppelt so große Tabelle.

I Die Zeit für die Reorganisation wird durch die schnellereBearbeitung der Operationen amortisiert.

Wie sollen die einzelnen Operationen implementiert werden?

Hashing Hashing mit offener Adressierung 52 / 74

Page 311: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung

Wir arbeiten mit einer Folge

h0, ...,hm−1 : U → {0, ...,m − 1}

von Hashfunktionen. Setze i = 0.(1) Wenn die Zelle hi(x) frei ist, dann füge x in Zelle hi(x) ein.(2) Ansonsten setze i = i + 1 und gehe zu Schritt (1).

Die Anzahl der Fehlversuche „sollte“ ansteigen, wenn λ zu großwird. Was ist in einem solchen Fall zu tun?

I Wenn der Auslastungsfaktor größer als 1/2 wird, dann lade dieTabelle in eine doppelt so große Tabelle.

I Die Zeit für die Reorganisation wird durch die schnellereBearbeitung der Operationen amortisiert.

Wie sollen die einzelnen Operationen implementiert werden?

Hashing Hashing mit offener Adressierung 52 / 74

Page 312: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung

Wir arbeiten mit einer Folge

h0, ...,hm−1 : U → {0, ...,m − 1}

von Hashfunktionen. Setze i = 0.(1) Wenn die Zelle hi(x) frei ist, dann füge x in Zelle hi(x) ein.(2) Ansonsten setze i = i + 1 und gehe zu Schritt (1).

Die Anzahl der Fehlversuche „sollte“ ansteigen, wenn λ zu großwird. Was ist in einem solchen Fall zu tun?

I Wenn der Auslastungsfaktor größer als 1/2 wird, dann lade dieTabelle in eine doppelt so große Tabelle.

I Die Zeit für die Reorganisation wird durch die schnellereBearbeitung der Operationen amortisiert.

Wie sollen die einzelnen Operationen implementiert werden?

Hashing Hashing mit offener Adressierung 52 / 74

Page 313: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung

Wir arbeiten mit einer Folge

h0, ...,hm−1 : U → {0, ...,m − 1}

von Hashfunktionen. Setze i = 0.(1) Wenn die Zelle hi(x) frei ist, dann füge x in Zelle hi(x) ein.(2) Ansonsten setze i = i + 1 und gehe zu Schritt (1).

Die Anzahl der Fehlversuche „sollte“ ansteigen, wenn λ zu großwird. Was ist in einem solchen Fall zu tun?

I Wenn der Auslastungsfaktor größer als 1/2 wird, dann lade dieTabelle in eine doppelt so große Tabelle.

I Die Zeit für die Reorganisation wird durch die schnellereBearbeitung der Operationen amortisiert.

Wie sollen die einzelnen Operationen implementiert werden?

Hashing Hashing mit offener Adressierung 52 / 74

Page 314: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung

Wir arbeiten mit einer Folge

h0, ...,hm−1 : U → {0, ...,m − 1}

von Hashfunktionen. Setze i = 0.(1) Wenn die Zelle hi(x) frei ist, dann füge x in Zelle hi(x) ein.(2) Ansonsten setze i = i + 1 und gehe zu Schritt (1).

Die Anzahl der Fehlversuche „sollte“ ansteigen, wenn λ zu großwird. Was ist in einem solchen Fall zu tun?

I Wenn der Auslastungsfaktor größer als 1/2 wird, dann lade dieTabelle in eine doppelt so große Tabelle.

I Die Zeit für die Reorganisation wird durch die schnellereBearbeitung der Operationen amortisiert.

Wie sollen die einzelnen Operationen implementiert werden?

Hashing Hashing mit offener Adressierung 52 / 74

Page 315: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung

Wir arbeiten mit einer Folge

h0, ...,hm−1 : U → {0, ...,m − 1}

von Hashfunktionen. Setze i = 0.(1) Wenn die Zelle hi(x) frei ist, dann füge x in Zelle hi(x) ein.(2) Ansonsten setze i = i + 1 und gehe zu Schritt (1).

Die Anzahl der Fehlversuche „sollte“ ansteigen, wenn λ zu großwird. Was ist in einem solchen Fall zu tun?

I Wenn der Auslastungsfaktor größer als 1/2 wird, dann lade dieTabelle in eine doppelt so große Tabelle.

I Die Zeit für die Reorganisation wird durch die schnellereBearbeitung der Operationen amortisiert.

Wie sollen die einzelnen Operationen implementiert werden?

Hashing Hashing mit offener Adressierung 52 / 74

Page 316: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Implementierung von Lookup, Insert und Remove

lookup und insert lassen sich für jede Folge von Hashfunktionenleicht implementieren.

Kopfzerbrechen bereitet remove: Wird nach Einfügen desSchlüssels x in Zelle h1(x) der Schlüssel in Zelle h0(x) entfernt,dann hat die Operation lookup (x) ein Problem.

I Ist x nicht da, weil Zelle h0(x) leer ist oder ist weiterzusuchen?

I Bringe eine „entfernt“ Markierung nach Löschen des Schlüssels inZelle h0(x) an.

I Die erwartete Laufzeit einer erfolglosen Suche wird anwachsen.

Vermeide Hashing mit offener Adressierung, wenn viele Daten entferntwerden.

Hashing Hashing mit offener Adressierung 53 / 74

Page 317: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Implementierung von Lookup, Insert und Remove

lookup und insert lassen sich für jede Folge von Hashfunktionenleicht implementieren.Kopfzerbrechen bereitet remove:

Wird nach Einfügen desSchlüssels x in Zelle h1(x) der Schlüssel in Zelle h0(x) entfernt,dann hat die Operation lookup (x) ein Problem.

I Ist x nicht da, weil Zelle h0(x) leer ist oder ist weiterzusuchen?

I Bringe eine „entfernt“ Markierung nach Löschen des Schlüssels inZelle h0(x) an.

I Die erwartete Laufzeit einer erfolglosen Suche wird anwachsen.

Vermeide Hashing mit offener Adressierung, wenn viele Daten entferntwerden.

Hashing Hashing mit offener Adressierung 53 / 74

Page 318: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Implementierung von Lookup, Insert und Remove

lookup und insert lassen sich für jede Folge von Hashfunktionenleicht implementieren.Kopfzerbrechen bereitet remove: Wird nach Einfügen desSchlüssels x in Zelle h1(x) der Schlüssel in Zelle h0(x) entfernt,dann hat die Operation lookup (x) ein Problem.

I Ist x nicht da, weil Zelle h0(x) leer ist oder ist weiterzusuchen?

I Bringe eine „entfernt“ Markierung nach Löschen des Schlüssels inZelle h0(x) an.

I Die erwartete Laufzeit einer erfolglosen Suche wird anwachsen.

Vermeide Hashing mit offener Adressierung, wenn viele Daten entferntwerden.

Hashing Hashing mit offener Adressierung 53 / 74

Page 319: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Implementierung von Lookup, Insert und Remove

lookup und insert lassen sich für jede Folge von Hashfunktionenleicht implementieren.Kopfzerbrechen bereitet remove: Wird nach Einfügen desSchlüssels x in Zelle h1(x) der Schlüssel in Zelle h0(x) entfernt,dann hat die Operation lookup (x) ein Problem.

I Ist x nicht da, weil Zelle h0(x) leer ist oder ist weiterzusuchen?

I Bringe eine „entfernt“ Markierung nach Löschen des Schlüssels inZelle h0(x) an.

I Die erwartete Laufzeit einer erfolglosen Suche wird anwachsen.

Vermeide Hashing mit offener Adressierung, wenn viele Daten entferntwerden.

Hashing Hashing mit offener Adressierung 53 / 74

Page 320: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Implementierung von Lookup, Insert und Remove

lookup und insert lassen sich für jede Folge von Hashfunktionenleicht implementieren.Kopfzerbrechen bereitet remove: Wird nach Einfügen desSchlüssels x in Zelle h1(x) der Schlüssel in Zelle h0(x) entfernt,dann hat die Operation lookup (x) ein Problem.

I Ist x nicht da, weil Zelle h0(x) leer ist oder ist weiterzusuchen?

I Bringe eine „entfernt“ Markierung nach Löschen des Schlüssels inZelle h0(x) an.

I Die erwartete Laufzeit einer erfolglosen Suche wird anwachsen.

Vermeide Hashing mit offener Adressierung, wenn viele Daten entferntwerden.

Hashing Hashing mit offener Adressierung 53 / 74

Page 321: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Implementierung von Lookup, Insert und Remove

lookup und insert lassen sich für jede Folge von Hashfunktionenleicht implementieren.Kopfzerbrechen bereitet remove: Wird nach Einfügen desSchlüssels x in Zelle h1(x) der Schlüssel in Zelle h0(x) entfernt,dann hat die Operation lookup (x) ein Problem.

I Ist x nicht da, weil Zelle h0(x) leer ist oder ist weiterzusuchen?

I Bringe eine „entfernt“ Markierung nach Löschen des Schlüssels inZelle h0(x) an.

I Die erwartete Laufzeit einer erfolglosen Suche wird anwachsen.

Vermeide Hashing mit offener Adressierung, wenn viele Daten entferntwerden.

Hashing Hashing mit offener Adressierung 53 / 74

Page 322: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung:Welche Hashfunktionen?

Hashing Hashing mit offener Adressierung 54 / 74

Page 323: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lineares Austesten

In der Methode des linearen Austestens wird die Folge

hi(x) = (x + i) mod m

benutzt: Also wird die jeweils nächste Zelle untersucht.

+ Für jeden Schlüssel x wird jede Zelle in der Folgeh0(x), . . . ,hm−1(x) „getestet“.

- Lineares Austesten führt zur Klumpenbildung.I Angenommen, die Daten besetzen ein Intervall {i , i + 1, . . . , j − 1, j}

von Zellen.I Wenn ein weiterer Schlüssel x mit h0(x) ∈ {i ,+1, . . . , j − 1, j}

eingefügt wird, dann wird x am Ende des Intervalls eingefügt.F Das Intervall wächst und dementsprechend steigt der Aufwand für die

einzelnen Operationen.

Hashing Hashing mit offener Adressierung 55 / 74

Page 324: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lineares Austesten

In der Methode des linearen Austestens wird die Folge

hi(x) = (x + i) mod m

benutzt: Also wird die jeweils nächste Zelle untersucht.

+ Für jeden Schlüssel x wird jede Zelle in der Folgeh0(x), . . . ,hm−1(x) „getestet“.

- Lineares Austesten führt zur Klumpenbildung.I Angenommen, die Daten besetzen ein Intervall {i , i + 1, . . . , j − 1, j}

von Zellen.I Wenn ein weiterer Schlüssel x mit h0(x) ∈ {i ,+1, . . . , j − 1, j}

eingefügt wird, dann wird x am Ende des Intervalls eingefügt.F Das Intervall wächst und dementsprechend steigt der Aufwand für die

einzelnen Operationen.

Hashing Hashing mit offener Adressierung 55 / 74

Page 325: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lineares Austesten

In der Methode des linearen Austestens wird die Folge

hi(x) = (x + i) mod m

benutzt: Also wird die jeweils nächste Zelle untersucht.

+ Für jeden Schlüssel x wird jede Zelle in der Folgeh0(x), . . . ,hm−1(x) „getestet“.

- Lineares Austesten führt zur Klumpenbildung.

I Angenommen, die Daten besetzen ein Intervall {i , i + 1, . . . , j − 1, j}von Zellen.

I Wenn ein weiterer Schlüssel x mit h0(x) ∈ {i ,+1, . . . , j − 1, j}eingefügt wird, dann wird x am Ende des Intervalls eingefügt.

F Das Intervall wächst und dementsprechend steigt der Aufwand für dieeinzelnen Operationen.

Hashing Hashing mit offener Adressierung 55 / 74

Page 326: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lineares Austesten

In der Methode des linearen Austestens wird die Folge

hi(x) = (x + i) mod m

benutzt: Also wird die jeweils nächste Zelle untersucht.

+ Für jeden Schlüssel x wird jede Zelle in der Folgeh0(x), . . . ,hm−1(x) „getestet“.

- Lineares Austesten führt zur Klumpenbildung.I Angenommen, die Daten besetzen ein Intervall {i , i + 1, . . . , j − 1, j}

von Zellen.

I Wenn ein weiterer Schlüssel x mit h0(x) ∈ {i ,+1, . . . , j − 1, j}eingefügt wird, dann wird x am Ende des Intervalls eingefügt.

F Das Intervall wächst und dementsprechend steigt der Aufwand für dieeinzelnen Operationen.

Hashing Hashing mit offener Adressierung 55 / 74

Page 327: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lineares Austesten

In der Methode des linearen Austestens wird die Folge

hi(x) = (x + i) mod m

benutzt: Also wird die jeweils nächste Zelle untersucht.

+ Für jeden Schlüssel x wird jede Zelle in der Folgeh0(x), . . . ,hm−1(x) „getestet“.

- Lineares Austesten führt zur Klumpenbildung.I Angenommen, die Daten besetzen ein Intervall {i , i + 1, . . . , j − 1, j}

von Zellen.I Wenn ein weiterer Schlüssel x mit h0(x) ∈ {i ,+1, . . . , j − 1, j}

eingefügt wird, dann wird x am Ende des Intervalls eingefügt.

F Das Intervall wächst und dementsprechend steigt der Aufwand für dieeinzelnen Operationen.

Hashing Hashing mit offener Adressierung 55 / 74

Page 328: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Lineares Austesten

In der Methode des linearen Austestens wird die Folge

hi(x) = (x + i) mod m

benutzt: Also wird die jeweils nächste Zelle untersucht.

+ Für jeden Schlüssel x wird jede Zelle in der Folgeh0(x), . . . ,hm−1(x) „getestet“.

- Lineares Austesten führt zur Klumpenbildung.I Angenommen, die Daten besetzen ein Intervall {i , i + 1, . . . , j − 1, j}

von Zellen.I Wenn ein weiterer Schlüssel x mit h0(x) ∈ {i ,+1, . . . , j − 1, j}

eingefügt wird, dann wird x am Ende des Intervalls eingefügt.F Das Intervall wächst und dementsprechend steigt der Aufwand für die

einzelnen Operationen.

Hashing Hashing mit offener Adressierung 55 / 74

Page 329: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) =

(f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 330: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x)

+ i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 331: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 332: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.

Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 333: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 334: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.

I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 335: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden.

Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 336: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 337: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m.

Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 338: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 339: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Doppeltes Hashing

Wir benutzen zwei Hashfunktionen f und g und verwenden die Folge

hi(x) = (f(x) + i · g(x)) mod m.

Die Klumpenbildung wird vermieden.Man erhält gute Ergebnisse bereits für

f(x) = x mod m und g(x) = m∗ − (x mod m∗).

I Wähle m als Primzahl und fordere m∗ < m.I g(x) ist stets von Null verschieden. Wenn

hi (x) = f (x) + i · g(x) mod m = f (x) + j · g(x) mod m = hj (x),

dann (i − j) · g(x) = 0 mod m. Also folgt i = j .

Im doppelten Hashing werden alle Zellen getestet.

Hashing Hashing mit offener Adressierung 56 / 74

Page 340: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wie schnell ist Hashing mit Verkettung?

Hashing Hashing mit Verkettung: Analyse 57 / 74

Page 341: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wie schnell ist Hashing mit Verkettung?

Annahme: Es befinden sich n Schlüssel in einer Tabelle mit mSchlüsseln.Wir sagen, dass λ = n

m der Auslastungsfaktor der Tabelle ist.

Wie schnell wird eine insert(x), remove(x) oder lookup(x)Operation ausgeführt?

I Bestenfalls ist die Liste für h(x) = i leer und wir erreichen einekonstante Laufzeit.

I Schlimmstenfalls sind alle n Schlüssel auf die Liste von i verteiltund die worst-case Laufzeit Θ(n) folgt.

Weder best-case noch worst-case Laufzeit scheinen verlässlicheVoraussagen der tatsächlichen Laufzeit zu sein. Betrachte die

erwartete Laufzeit.

Hashing Hashing mit Verkettung: Analyse 58 / 74

Page 342: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wie schnell ist Hashing mit Verkettung?

Annahme: Es befinden sich n Schlüssel in einer Tabelle mit mSchlüsseln.Wir sagen, dass λ = n

m der Auslastungsfaktor der Tabelle ist.

Wie schnell wird eine insert(x), remove(x) oder lookup(x)Operation ausgeführt?

I Bestenfalls ist die Liste für h(x) = i leer und wir erreichen einekonstante Laufzeit.

I Schlimmstenfalls sind alle n Schlüssel auf die Liste von i verteiltund die worst-case Laufzeit Θ(n) folgt.

Weder best-case noch worst-case Laufzeit scheinen verlässlicheVoraussagen der tatsächlichen Laufzeit zu sein. Betrachte die

erwartete Laufzeit.

Hashing Hashing mit Verkettung: Analyse 58 / 74

Page 343: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wie schnell ist Hashing mit Verkettung?

Annahme: Es befinden sich n Schlüssel in einer Tabelle mit mSchlüsseln.Wir sagen, dass λ = n

m der Auslastungsfaktor der Tabelle ist.

Wie schnell wird eine insert(x), remove(x) oder lookup(x)Operation ausgeführt?

I Bestenfalls ist die Liste für h(x) = i leer und wir erreichen einekonstante Laufzeit.

I Schlimmstenfalls sind alle n Schlüssel auf die Liste von i verteiltund die worst-case Laufzeit Θ(n) folgt.

Weder best-case noch worst-case Laufzeit scheinen verlässlicheVoraussagen der tatsächlichen Laufzeit zu sein. Betrachte die

erwartete Laufzeit.

Hashing Hashing mit Verkettung: Analyse 58 / 74

Page 344: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wie schnell ist Hashing mit Verkettung?

Annahme: Es befinden sich n Schlüssel in einer Tabelle mit mSchlüsseln.Wir sagen, dass λ = n

m der Auslastungsfaktor der Tabelle ist.

Wie schnell wird eine insert(x), remove(x) oder lookup(x)Operation ausgeführt?

I Bestenfalls ist die Liste für h(x) = i leer und wir erreichen einekonstante Laufzeit.

I Schlimmstenfalls sind alle n Schlüssel auf die Liste von i verteiltund die worst-case Laufzeit Θ(n) folgt.

Weder best-case noch worst-case Laufzeit scheinen verlässlicheVoraussagen der tatsächlichen Laufzeit zu sein. Betrachte die

erwartete Laufzeit.

Hashing Hashing mit Verkettung: Analyse 58 / 74

Page 345: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wie schnell ist Hashing mit Verkettung?

Annahme: Es befinden sich n Schlüssel in einer Tabelle mit mSchlüsseln.Wir sagen, dass λ = n

m der Auslastungsfaktor der Tabelle ist.

Wie schnell wird eine insert(x), remove(x) oder lookup(x)Operation ausgeführt?

I Bestenfalls ist die Liste für h(x) = i leer und wir erreichen einekonstante Laufzeit.

I Schlimmstenfalls sind alle n Schlüssel auf die Liste von i verteiltund die worst-case Laufzeit Θ(n) folgt.

Weder best-case noch worst-case Laufzeit scheinen verlässlicheVoraussagen der tatsächlichen Laufzeit zu sein. Betrachte die

erwartete Laufzeit.

Hashing Hashing mit Verkettung: Analyse 58 / 74

Page 346: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit

1|U|

als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 347: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.

Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 348: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 349: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 350: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.

Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 351: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 352: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 353: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 354: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 355: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist

pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 356: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (1/2)

Wir machen die folgenden Annahmen:jedes Element x ∈ U hat die Wahrscheinlichkeit 1

|U|als Operand in einer Operation aufzutreten.Die Hashfunktion h streut die Schlüssel regelmäßig,d.h. |{x ∈ U | h(x) = i}| ∈

{b |U|m c, d

|U|m e}

gilt für jedes i .

Die Hashfunktion h(x) = (x mod m) erfüllt die Streubedingung.Die Wahrscheinlichkeit pi, dass ein zufällig gezogener Schlüsselauf die Zelle i gehasht wird, ist höchstens

pi 6d |U|m e|U|

6|U|m + 1|U|

61m

+1|U|

.

Die erwartete Länge der Liste für Zelle i ist pi · n.

Hashing Hashing mit Verkettung: Analyse 59 / 74

Page 357: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (2/2)

Die erwartete Länge L einer beliebigen Liste ist

L =m−1∑i=0

erwartete Länge der Liste von Zelle im

=m−1∑i=0

pi · nm

=nm·

m−1∑i=0

pi = n/m = λ.

Hashing Hashing mit Verkettung: Analyse 60 / 74

Page 358: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (2/2)

Die erwartete Länge L einer beliebigen Liste ist

L =m−1∑i=0

erwartete Länge der Liste von Zelle im

=m−1∑i=0

pi · nm

=

nm·

m−1∑i=0

pi = n/m = λ.

Hashing Hashing mit Verkettung: Analyse 60 / 74

Page 359: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (2/2)

Die erwartete Länge L einer beliebigen Liste ist

L =m−1∑i=0

erwartete Länge der Liste von Zelle im

=m−1∑i=0

pi · nm

=nm·

m−1∑i=0

pi =

n/m = λ.

Hashing Hashing mit Verkettung: Analyse 60 / 74

Page 360: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit (2/2)

Die erwartete Länge L einer beliebigen Liste ist

L =m−1∑i=0

erwartete Länge der Liste von Zelle im

=m−1∑i=0

pi · nm

=nm·

m−1∑i=0

pi = n/m = λ.

Hashing Hashing mit Verkettung: Analyse 60 / 74

Page 361: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung: Zusammenfassung

Die erwartete Länge einer Liste für Hashing mit Verkettung stimmtmit dem Auslastungsfaktor λ überein.

Die erwartete Laufzeit einer insert-, remove- oderlookup-Operation ist höchstens O(1) + λ

Werte die Hashfunktion aus und durchlaufe die Liste.

+ Hashing mit Verkettung ist ein hochgradig praxis-tauglichesVerfahren.

- Aber, durch die Verwendung von Listen, und damit durch dieVerwendung von Zeigern, ersteht zusätzlicher Speicherbedarf.

Hashing Hashing mit Verkettung: Analyse 61 / 74

Page 362: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung: Zusammenfassung

Die erwartete Länge einer Liste für Hashing mit Verkettung stimmtmit dem Auslastungsfaktor λ überein.Die erwartete Laufzeit einer insert-, remove- oderlookup-Operation ist höchstens O(1) + λ

Werte die Hashfunktion aus und durchlaufe die Liste.

+ Hashing mit Verkettung ist ein hochgradig praxis-tauglichesVerfahren.

- Aber, durch die Verwendung von Listen, und damit durch dieVerwendung von Zeigern, ersteht zusätzlicher Speicherbedarf.

Hashing Hashing mit Verkettung: Analyse 61 / 74

Page 363: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung: Zusammenfassung

Die erwartete Länge einer Liste für Hashing mit Verkettung stimmtmit dem Auslastungsfaktor λ überein.Die erwartete Laufzeit einer insert-, remove- oderlookup-Operation ist höchstens O(1) + λ

Werte die Hashfunktion aus und durchlaufe die Liste.

+ Hashing mit Verkettung ist ein hochgradig praxis-tauglichesVerfahren.

- Aber, durch die Verwendung von Listen, und damit durch dieVerwendung von Zeigern, ersteht zusätzlicher Speicherbedarf.

Hashing Hashing mit Verkettung: Analyse 61 / 74

Page 364: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung: Zusammenfassung

Die erwartete Länge einer Liste für Hashing mit Verkettung stimmtmit dem Auslastungsfaktor λ überein.Die erwartete Laufzeit einer insert-, remove- oderlookup-Operation ist höchstens O(1) + λ

Werte die Hashfunktion aus und durchlaufe die Liste.

+ Hashing mit Verkettung ist ein hochgradig praxis-tauglichesVerfahren.

- Aber, durch die Verwendung von Listen, und damit durch dieVerwendung von Zeigern, ersteht zusätzlicher Speicherbedarf.

Hashing Hashing mit Verkettung: Analyse 61 / 74

Page 365: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit Verkettung: Zusammenfassung

Die erwartete Länge einer Liste für Hashing mit Verkettung stimmtmit dem Auslastungsfaktor λ überein.Die erwartete Laufzeit einer insert-, remove- oderlookup-Operation ist höchstens O(1) + λ

Werte die Hashfunktion aus und durchlaufe die Liste.

+ Hashing mit Verkettung ist ein hochgradig praxis-tauglichesVerfahren.

- Aber, durch die Verwendung von Listen, und damit durch dieVerwendung von Zeigern, ersteht zusätzlicher Speicherbedarf.

Hashing Hashing mit Verkettung: Analyse 61 / 74

Page 366: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wie schnell ist Hashing mit offener Adressierung?

Hashing Offene Adressierung: Analyse 62 / 74

Page 367: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (1/2)

Die Annahmen:Jeder Schlüssel x ∈ U tritt mit Wahrscheinlichkeit 1

|U| als Operandeiner Operation auf.

Für jedes x ∈ U ist die Folge

(h0(x),h1(x), ...,hm−1(x)) = πx

eine Permutation von {0,1, ...,m − 1} und

jede Permutation πx tritt für |U|m! Schlüssel x ∈ U auf.

Wie lange müssen wir auf einen Erfolg, eine freie Zelle, warten?

Hashing Offene Adressierung: Analyse 63 / 74

Page 368: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (1/2)

Die Annahmen:Jeder Schlüssel x ∈ U tritt mit Wahrscheinlichkeit 1

|U| als Operandeiner Operation auf.Für jedes x ∈ U ist die Folge

(h0(x),h1(x), ...,hm−1(x)) = πx

eine Permutation von {0,1, ...,m − 1}

und

jede Permutation πx tritt für |U|m! Schlüssel x ∈ U auf.

Wie lange müssen wir auf einen Erfolg, eine freie Zelle, warten?

Hashing Offene Adressierung: Analyse 63 / 74

Page 369: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (1/2)

Die Annahmen:Jeder Schlüssel x ∈ U tritt mit Wahrscheinlichkeit 1

|U| als Operandeiner Operation auf.Für jedes x ∈ U ist die Folge

(h0(x),h1(x), ...,hm−1(x)) = πx

eine Permutation von {0,1, ...,m − 1} und

jede Permutation πx tritt für |U|m! Schlüssel x ∈ U auf.

Wie lange müssen wir auf einen Erfolg, eine freie Zelle, warten?

Hashing Offene Adressierung: Analyse 63 / 74

Page 370: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (1/2)

Die Annahmen:Jeder Schlüssel x ∈ U tritt mit Wahrscheinlichkeit 1

|U| als Operandeiner Operation auf.Für jedes x ∈ U ist die Folge

(h0(x),h1(x), ...,hm−1(x)) = πx

eine Permutation von {0,1, ...,m − 1} und

jede Permutation πx tritt für |U|m! Schlüssel x ∈ U auf.

Wie lange müssen wir auf einen Erfolg, eine freie Zelle, warten?

Hashing Offene Adressierung: Analyse 63 / 74

Page 371: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.

Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens∑∞k=0(k + 1) · (1− p)k · p = 1

p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist 1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 372: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist

1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens∑∞k=0(k + 1) · (1− p)k · p = 1

p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist 1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 373: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.

Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens∑∞k=0(k + 1) · (1− p)k · p = 1

p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist 1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 374: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens∑∞k=0(k + 1) · (1− p)k · p = 1

p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist 1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 375: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens∑∞k=0(k + 1) · (1− p)k · p = 1

p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist 1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 376: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens

∑∞k=0(k + 1) · (1− p)k · p = 1

p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist 1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 377: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens∑∞k=0(k + 1) · (1− p)k · p =

1p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist 1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 378: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens∑∞k=0(k + 1) · (1− p)k · p = 1

p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist 1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 379: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens∑∞k=0(k + 1) · (1− p)k · p = 1

p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist

1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 380: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Die erwartete Laufzeit einer erfolglosen Suche (2/2)

Man stelle sich vor, dass wir einen Schlüssel zufällig ziehen. Nach derAnnahme ist jede Permutation getesteter Zellen gleichwahrscheinlich.

Der Auslastungsfaktor ist λ.Die Wahrscheinlichkeit im 1. Versuch eine freie Zelle zu finden ist1− λ und steigt sogar in nachfolgenden Versuchen an, da bereitsgetestete aber besetzte Zellen nicht mehr getestet werden.Wie lange müssen wir auf einen Erfolg warten, wenn dieErfolgswahrscheinlichkeit eines einzigen Versuchs mindestensp = 1− λ ist?

I Mit Wahrscheinlichkeit höchstens (1− p)k · p werden genauk + 1 Versuche benötigt.

I Die erwartete Zeit bis zum ersten Erfolg beträgt höchstens∑∞k=0(k + 1) · (1− p)k · p = 1

p .

p = 1− λ ⇒ Die erwartete Anzahl getesteter Zellen ist 1p = 1

1−λ .

Hashing Offene Adressierung: Analyse 64 / 74

Page 381: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung: Zusammenfassung

Der Auslastungsfaktor sei λ.

Zur Erinnerung: Hashing mit Verkettung besitzt für alle Operationeneine erwartete Laufzeit von höchstens O(1) + λ.

Wegen der Klumpenbildung des linearen Austestens werden imDurchschnitt 1

2 · (1 + 1(1−λ)2 ) Zellen getestet. Allerdings ist lineares

Austesten „cache-freundlich“.Die erwartete Laufzeit einer erfolglosen Suche für doppeltesHashing ist höchstens 1

1−λ .I Der Auslastungsfaktor für das lineare Austesten oder das doppelte

Hashing sollte nicht zu groß werden:I Lade in eine doppelt so große Tabelle um, wenn λ > 1/2.

Hashing Offene Adressierung: Analyse 65 / 74

Page 382: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung: Zusammenfassung

Der Auslastungsfaktor sei λ.

Zur Erinnerung: Hashing mit Verkettung besitzt für alle Operationeneine erwartete Laufzeit von höchstens O(1) + λ.

Wegen der Klumpenbildung des linearen Austestens werden imDurchschnitt 1

2 · (1 + 1(1−λ)2 ) Zellen getestet. Allerdings ist lineares

Austesten „cache-freundlich“.

Die erwartete Laufzeit einer erfolglosen Suche für doppeltesHashing ist höchstens 1

1−λ .I Der Auslastungsfaktor für das lineare Austesten oder das doppelte

Hashing sollte nicht zu groß werden:I Lade in eine doppelt so große Tabelle um, wenn λ > 1/2.

Hashing Offene Adressierung: Analyse 65 / 74

Page 383: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Hashing mit offener Adressierung: Zusammenfassung

Der Auslastungsfaktor sei λ.

Zur Erinnerung: Hashing mit Verkettung besitzt für alle Operationeneine erwartete Laufzeit von höchstens O(1) + λ.

Wegen der Klumpenbildung des linearen Austestens werden imDurchschnitt 1

2 · (1 + 1(1−λ)2 ) Zellen getestet. Allerdings ist lineares

Austesten „cache-freundlich“.Die erwartete Laufzeit einer erfolglosen Suche für doppeltesHashing ist höchstens 1

1−λ .I Der Auslastungsfaktor für das lineare Austesten oder das doppelte

Hashing sollte nicht zu groß werden:I Lade in eine doppelt so große Tabelle um, wenn λ > 1/2.

Hashing Offene Adressierung: Analyse 65 / 74

Page 384: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Universelles Hashing

Hashing Universelles Hashing 66 / 74

Page 385: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Universelles Hashing

Für jede Hashfunktion, ob fürHashing mit Verkettung oder Hashing mit offener Addressierungkann eine worst-case Laufzeit von Θ(n) erzwungen werden.

Wir müssen also „Glück“ haben, dass unsere Operationen keinworst-case Verhalten zeigen.

Stattdessen arbeiten wir mit einer Klasse H von Hashfunktionen:I Zu Beginn wählen wir zufällig eine Hashfunktion h ∈ H undI führen Hashing mit Verkettung mit der Hashfunktion h durch.

Warum „sollte“ ein solches Verfahren funktionieren?I Eine einzelne Hashfunktion ist durch eine bösartig gewählte

Operationenfolge zum Scheitern verurteilt,I aber die meisten Hashfunktion werden diese Operationenfolge mit

Bravour meistern.

Was ist eine geeignete Klasse H?

Hashing Universelles Hashing 67 / 74

Page 386: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Universelles Hashing

Für jede Hashfunktion, ob fürHashing mit Verkettung oder Hashing mit offener Addressierungkann eine worst-case Laufzeit von Θ(n) erzwungen werden.

Wir müssen also „Glück“ haben, dass unsere Operationen keinworst-case Verhalten zeigen.

Stattdessen arbeiten wir mit einer Klasse H von Hashfunktionen:I Zu Beginn wählen wir zufällig eine Hashfunktion h ∈ H undI führen Hashing mit Verkettung mit der Hashfunktion h durch.

Warum „sollte“ ein solches Verfahren funktionieren?I Eine einzelne Hashfunktion ist durch eine bösartig gewählte

Operationenfolge zum Scheitern verurteilt,I aber die meisten Hashfunktion werden diese Operationenfolge mit

Bravour meistern.

Was ist eine geeignete Klasse H?

Hashing Universelles Hashing 67 / 74

Page 387: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Universelles Hashing

Für jede Hashfunktion, ob fürHashing mit Verkettung oder Hashing mit offener Addressierungkann eine worst-case Laufzeit von Θ(n) erzwungen werden.

Wir müssen also „Glück“ haben, dass unsere Operationen keinworst-case Verhalten zeigen.

Stattdessen arbeiten wir mit einer Klasse H von Hashfunktionen:

I Zu Beginn wählen wir zufällig eine Hashfunktion h ∈ H undI führen Hashing mit Verkettung mit der Hashfunktion h durch.

Warum „sollte“ ein solches Verfahren funktionieren?I Eine einzelne Hashfunktion ist durch eine bösartig gewählte

Operationenfolge zum Scheitern verurteilt,I aber die meisten Hashfunktion werden diese Operationenfolge mit

Bravour meistern.

Was ist eine geeignete Klasse H?

Hashing Universelles Hashing 67 / 74

Page 388: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Universelles Hashing

Für jede Hashfunktion, ob fürHashing mit Verkettung oder Hashing mit offener Addressierungkann eine worst-case Laufzeit von Θ(n) erzwungen werden.

Wir müssen also „Glück“ haben, dass unsere Operationen keinworst-case Verhalten zeigen.

Stattdessen arbeiten wir mit einer Klasse H von Hashfunktionen:I Zu Beginn wählen wir zufällig eine Hashfunktion h ∈ H undI führen Hashing mit Verkettung mit der Hashfunktion h durch.

Warum „sollte“ ein solches Verfahren funktionieren?I Eine einzelne Hashfunktion ist durch eine bösartig gewählte

Operationenfolge zum Scheitern verurteilt,I aber die meisten Hashfunktion werden diese Operationenfolge mit

Bravour meistern.

Was ist eine geeignete Klasse H?

Hashing Universelles Hashing 67 / 74

Page 389: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Universelles Hashing

Für jede Hashfunktion, ob fürHashing mit Verkettung oder Hashing mit offener Addressierungkann eine worst-case Laufzeit von Θ(n) erzwungen werden.

Wir müssen also „Glück“ haben, dass unsere Operationen keinworst-case Verhalten zeigen.

Stattdessen arbeiten wir mit einer Klasse H von Hashfunktionen:I Zu Beginn wählen wir zufällig eine Hashfunktion h ∈ H undI führen Hashing mit Verkettung mit der Hashfunktion h durch.

Warum „sollte“ ein solches Verfahren funktionieren?

I Eine einzelne Hashfunktion ist durch eine bösartig gewählteOperationenfolge zum Scheitern verurteilt,

I aber die meisten Hashfunktion werden diese Operationenfolge mitBravour meistern.

Was ist eine geeignete Klasse H?

Hashing Universelles Hashing 67 / 74

Page 390: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Universelles Hashing

Für jede Hashfunktion, ob fürHashing mit Verkettung oder Hashing mit offener Addressierungkann eine worst-case Laufzeit von Θ(n) erzwungen werden.

Wir müssen also „Glück“ haben, dass unsere Operationen keinworst-case Verhalten zeigen.

Stattdessen arbeiten wir mit einer Klasse H von Hashfunktionen:I Zu Beginn wählen wir zufällig eine Hashfunktion h ∈ H undI führen Hashing mit Verkettung mit der Hashfunktion h durch.

Warum „sollte“ ein solches Verfahren funktionieren?I Eine einzelne Hashfunktion ist durch eine bösartig gewählte

Operationenfolge zum Scheitern verurteilt,I aber die meisten Hashfunktion werden diese Operationenfolge mit

Bravour meistern.

Was ist eine geeignete Klasse H?

Hashing Universelles Hashing 67 / 74

Page 391: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

c-universelle Klassen von Hashfunktionen

Eine Menge H ⊆ {h | h : U → {0, ...,m − 1}} ist c-universell,

falls

|{h ∈ H | h(x) = h(y)}||H|

6cm

für alle x , y ∈ U mit x 6= y gilt.

Wenn H c-universell ist, dann gibt es keine zwei Schlüssel, die mitWahrscheinlichkeit größer als c

m auf die gleiche Zelle hashen.

I Gibt es c-universelle Klassen von Hashfunktionen für kleine Wertevon c und

I können wir dann jede Folge von lookup-, insert- undremove-Operationen hochwahrscheinlich schnell ausführen?

Hashing Universelles Hashing 68 / 74

Page 392: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

c-universelle Klassen von Hashfunktionen

Eine Menge H ⊆ {h | h : U → {0, ...,m − 1}} ist c-universell, falls

|{h ∈ H | h(x) = h(y)}||H|

6cm

für alle x , y ∈ U mit x 6= y gilt.

Wenn H c-universell ist, dann gibt es keine zwei Schlüssel, die mitWahrscheinlichkeit größer als c

m auf die gleiche Zelle hashen.

I Gibt es c-universelle Klassen von Hashfunktionen für kleine Wertevon c und

I können wir dann jede Folge von lookup-, insert- undremove-Operationen hochwahrscheinlich schnell ausführen?

Hashing Universelles Hashing 68 / 74

Page 393: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

c-universelle Klassen von Hashfunktionen

Eine Menge H ⊆ {h | h : U → {0, ...,m − 1}} ist c-universell, falls

|{h ∈ H | h(x) = h(y)}||H|

6cm

für alle x , y ∈ U mit x 6= y gilt.

Wenn H c-universell ist, dann gibt es keine zwei Schlüssel, die mitWahrscheinlichkeit größer als c

m auf die gleiche Zelle hashen.

I Gibt es c-universelle Klassen von Hashfunktionen für kleine Wertevon c und

I können wir dann jede Folge von lookup-, insert- undremove-Operationen hochwahrscheinlich schnell ausführen?

Hashing Universelles Hashing 68 / 74

Page 394: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

c-universelle Klassen von Hashfunktionen

Eine Menge H ⊆ {h | h : U → {0, ...,m − 1}} ist c-universell, falls

|{h ∈ H | h(x) = h(y)}||H|

6cm

für alle x , y ∈ U mit x 6= y gilt.

Wenn H c-universell ist, dann gibt es keine zwei Schlüssel, die mitWahrscheinlichkeit größer als c

m auf die gleiche Zelle hashen.

I Gibt es c-universelle Klassen von Hashfunktionen für kleine Wertevon c und

I können wir dann jede Folge von lookup-, insert- undremove-Operationen hochwahrscheinlich schnell ausführen?

Hashing Universelles Hashing 68 / 74

Page 395: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Eine c-universelle Klasse

Sei U = {0,1,2, ...,p − 1} für eine Primzahl p.

(a) Dann ist

H = {ha,b | 0 6 a,b < p, ha,b(x) = ((ax + b) mod p)

mod m }

c-universell mit c = (d pme /

pm )2.

(b) Jede Folge von n Operationen benötigt für eine c-universelleKlasse die erwartete Zeit höchstens

n(

1 +c2· n

m

).

Unser Motto:„Erst durchschütteln“ (x 7→ y = (ax + b) mod p) unddann „hashen“ (y 7→ y mod m).

Hashing Universelles Hashing 69 / 74

Page 396: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Eine c-universelle Klasse

Sei U = {0,1,2, ...,p − 1} für eine Primzahl p.

(a) Dann ist

H = {ha,b | 0 6 a,b < p, ha,b(x) = ((ax + b) mod p) mod m }

c-universell mit c = (d pme /

pm )2.

(b) Jede Folge von n Operationen benötigt für eine c-universelleKlasse die erwartete Zeit höchstens

n(

1 +c2· n

m

).

Unser Motto:„Erst durchschütteln“ (x 7→ y = (ax + b) mod p) unddann „hashen“ (y 7→ y mod m).

Hashing Universelles Hashing 69 / 74

Page 397: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Eine c-universelle Klasse

Sei U = {0,1,2, ...,p − 1} für eine Primzahl p.

(a) Dann ist

H = {ha,b | 0 6 a,b < p, ha,b(x) = ((ax + b) mod p) mod m }

c-universell mit c = (d pme /

pm )2.

(b) Jede Folge von n Operationen benötigt für eine c-universelleKlasse die erwartete Zeit höchstens

n(

1 +c2· n

m

).

Unser Motto:„Erst durchschütteln“ (x 7→ y = (ax + b) mod p) unddann „hashen“ (y 7→ y mod m).

Hashing Universelles Hashing 69 / 74

Page 398: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Eine c-universelle Klasse

Sei U = {0,1,2, ...,p − 1} für eine Primzahl p.

(a) Dann ist

H = {ha,b | 0 6 a,b < p, ha,b(x) = ((ax + b) mod p) mod m }

c-universell mit c = (d pme /

pm )2.

(b) Jede Folge von n Operationen benötigt für eine c-universelleKlasse die erwartete Zeit höchstens

n(

1 +c2· n

m

).

Unser Motto:„Erst durchschütteln“ (x 7→ y = (ax + b) mod p)

unddann „hashen“ (y 7→ y mod m).

Hashing Universelles Hashing 69 / 74

Page 399: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Eine c-universelle Klasse

Sei U = {0,1,2, ...,p − 1} für eine Primzahl p.

(a) Dann ist

H = {ha,b | 0 6 a,b < p, ha,b(x) = ((ax + b) mod p) mod m }

c-universell mit c = (d pme /

pm )2.

(b) Jede Folge von n Operationen benötigt für eine c-universelleKlasse die erwartete Zeit höchstens

n(

1 +c2· n

m

).

Unser Motto:„Erst durchschütteln“ (x 7→ y = (ax + b) mod p) unddann „hashen“ (y 7→ y mod m).

Hashing Universelles Hashing 69 / 74

Page 400: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Wörterbücher: Wann welche Datenstruktur?

Hashing Universelles Hashing 70 / 74

Page 401: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

1 Listen:- Die Lookup-Operation dauert viel zu lange!

+ Wichtige Einsatzgebiete sind z.B. „Adjazenzlisten für Graphen“.+ Passen sich ideal der Größe der Datenmenge an wie etwa im Fall

der „Darstellung dünnbesetzter Matrizen“.2 Binäre Suchbäume:

+ Gute erwartete Laufzeit.+ Ermöglicht die Binärsuche und ist „Ausgangspunkt“ für AVL-Bäume.- Schlechte worst-case Laufzeit und relativ viel Speicherplatz.

3 AVL-Bäume:+ Die worst-case Laufzeit ist logarithmisch.- Relativ viel Speicherplatz notwendig für

Zeiger und Balance-Information.

Hashing Universelles Hashing 71 / 74

Page 402: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

1 Listen:- Die Lookup-Operation dauert viel zu lange!+ Wichtige Einsatzgebiete sind z.B. „Adjazenzlisten für Graphen“.+ Passen sich ideal der Größe der Datenmenge an wie etwa im Fall

der „Darstellung dünnbesetzter Matrizen“.

2 Binäre Suchbäume:+ Gute erwartete Laufzeit.+ Ermöglicht die Binärsuche und ist „Ausgangspunkt“ für AVL-Bäume.- Schlechte worst-case Laufzeit und relativ viel Speicherplatz.

3 AVL-Bäume:+ Die worst-case Laufzeit ist logarithmisch.- Relativ viel Speicherplatz notwendig für

Zeiger und Balance-Information.

Hashing Universelles Hashing 71 / 74

Page 403: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

1 Listen:- Die Lookup-Operation dauert viel zu lange!+ Wichtige Einsatzgebiete sind z.B. „Adjazenzlisten für Graphen“.+ Passen sich ideal der Größe der Datenmenge an wie etwa im Fall

der „Darstellung dünnbesetzter Matrizen“.2 Binäre Suchbäume:

+ Gute erwartete Laufzeit.+ Ermöglicht die Binärsuche und ist „Ausgangspunkt“ für AVL-Bäume.- Schlechte worst-case Laufzeit und relativ viel Speicherplatz.

3 AVL-Bäume:+ Die worst-case Laufzeit ist logarithmisch.- Relativ viel Speicherplatz notwendig für

Zeiger und Balance-Information.

Hashing Universelles Hashing 71 / 74

Page 404: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher

1 Listen:- Die Lookup-Operation dauert viel zu lange!+ Wichtige Einsatzgebiete sind z.B. „Adjazenzlisten für Graphen“.+ Passen sich ideal der Größe der Datenmenge an wie etwa im Fall

der „Darstellung dünnbesetzter Matrizen“.2 Binäre Suchbäume:

+ Gute erwartete Laufzeit.+ Ermöglicht die Binärsuche und ist „Ausgangspunkt“ für AVL-Bäume.- Schlechte worst-case Laufzeit und relativ viel Speicherplatz.

3 AVL-Bäume:+ Die worst-case Laufzeit ist logarithmisch.- Relativ viel Speicherplatz notwendig für

Zeiger und Balance-Information.

Hashing Universelles Hashing 71 / 74

Page 405: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher: Die Champions

1 Hashing mit Verkettung:+ hat die sehr schnelle erwartete Laufzeit O(1) + λ,- aber verlangt relativ viel Speicher.

+/- Die worst-case Laufzeit ist schlecht, abergutes Verhalten in praktischen Anwendungen.

+ Universelles Hashing: Schnelle erwartete Laufzeit für jede Folgevon Operationen!

2 Hashing mit offener Adressierung:+ ist mit erwarteter Laufzeit O(1/(1− λ)

etwas langsamer als Hashing mit Verkettung,- aber der Auslastungsfaktor λ muss klein sein!

+/- Sehr „speicherplatz-freundlich“, mit schlechter worst-case Laufzeit,aber guter Leistung für kleine λ.

3 (a,b)-Bäume:+ Unschlagbar in Anwendungen für langsame Speicher,- werden aber von Hashing und AVL-Bäumen „geschlagen“,

wenn die Daten in einen schnellen Speicher passen.

Hashing Universelles Hashing 72 / 74

Page 406: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher: Die Champions

1 Hashing mit Verkettung:+ hat die sehr schnelle erwartete Laufzeit O(1) + λ,- aber verlangt relativ viel Speicher.

+/- Die worst-case Laufzeit ist schlecht, abergutes Verhalten in praktischen Anwendungen.

+ Universelles Hashing: Schnelle erwartete Laufzeit für jede Folgevon Operationen!

2 Hashing mit offener Adressierung:+ ist mit erwarteter Laufzeit O(1/(1− λ)

etwas langsamer als Hashing mit Verkettung,- aber der Auslastungsfaktor λ muss klein sein!

+/- Sehr „speicherplatz-freundlich“, mit schlechter worst-case Laufzeit,aber guter Leistung für kleine λ.

3 (a,b)-Bäume:+ Unschlagbar in Anwendungen für langsame Speicher,- werden aber von Hashing und AVL-Bäumen „geschlagen“,

wenn die Daten in einen schnellen Speicher passen.

Hashing Universelles Hashing 72 / 74

Page 407: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Datenstrukturen für Wörterbücher: Die Champions

1 Hashing mit Verkettung:+ hat die sehr schnelle erwartete Laufzeit O(1) + λ,- aber verlangt relativ viel Speicher.

+/- Die worst-case Laufzeit ist schlecht, abergutes Verhalten in praktischen Anwendungen.

+ Universelles Hashing: Schnelle erwartete Laufzeit für jede Folgevon Operationen!

2 Hashing mit offener Adressierung:+ ist mit erwarteter Laufzeit O(1/(1− λ)

etwas langsamer als Hashing mit Verkettung,- aber der Auslastungsfaktor λ muss klein sein!

+/- Sehr „speicherplatz-freundlich“, mit schlechter worst-case Laufzeit,aber guter Leistung für kleine λ.

3 (a,b)-Bäume:+ Unschlagbar in Anwendungen für langsame Speicher,- werden aber von Hashing und AVL-Bäumen „geschlagen“,

wenn die Daten in einen schnellen Speicher passen.

Hashing Universelles Hashing 72 / 74

Page 408: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (1/2)

Arbeite mit Hashtabellen T1 und T2 sowie Hashfunktionen h1 undh2.

Insert(x): Wiederhole bis zu M mal,I Speichere x in Tabelle T1 und Zelle h1(x) ab.I Wenn die Zelle h1(x) in Tabelle T1 durch einen Schlüssel y belegt

war, dann füge y in Tabelle T2 und Zelle h2(y) ein.I Wenn die Zelle h2(y) in Tabelle T2 durch einen Schlüssel z belegt

war, dann setze x = z und beginne eine neue Iteration.

Lookup(x): Überprüfe Zelle h1(x) in Hashtabelle T1 undgegebenenfalls Zelle h2(x) in Hashtabelle T2.Remove(x): Wenn x vorhanden ist, dann entferne x aus Zelleh1(x) in Hashtabelle T1 oder aus Zelle h2(x) in Hashtabelle T2.

Warum der Name Cuckoo Hashing? Eine Kuckuck Art wirft ein odermehrere Eier aus einem fremden Nest und legt ein eigenes Ei hinzu.

Hashing Cuckoo Hashing 73 / 74

Page 409: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (1/2)

Arbeite mit Hashtabellen T1 und T2 sowie Hashfunktionen h1 undh2.Insert(x): Wiederhole bis zu M mal,

I Speichere x in Tabelle T1 und Zelle h1(x) ab.

I Wenn die Zelle h1(x) in Tabelle T1 durch einen Schlüssel y belegtwar, dann füge y in Tabelle T2 und Zelle h2(y) ein.

I Wenn die Zelle h2(y) in Tabelle T2 durch einen Schlüssel z belegtwar, dann setze x = z und beginne eine neue Iteration.

Lookup(x): Überprüfe Zelle h1(x) in Hashtabelle T1 undgegebenenfalls Zelle h2(x) in Hashtabelle T2.Remove(x): Wenn x vorhanden ist, dann entferne x aus Zelleh1(x) in Hashtabelle T1 oder aus Zelle h2(x) in Hashtabelle T2.

Warum der Name Cuckoo Hashing? Eine Kuckuck Art wirft ein odermehrere Eier aus einem fremden Nest und legt ein eigenes Ei hinzu.

Hashing Cuckoo Hashing 73 / 74

Page 410: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (1/2)

Arbeite mit Hashtabellen T1 und T2 sowie Hashfunktionen h1 undh2.Insert(x): Wiederhole bis zu M mal,

I Speichere x in Tabelle T1 und Zelle h1(x) ab.I Wenn die Zelle h1(x) in Tabelle T1 durch einen Schlüssel y belegt

war, dann füge y in Tabelle T2 und Zelle h2(y) ein.

I Wenn die Zelle h2(y) in Tabelle T2 durch einen Schlüssel z belegtwar, dann setze x = z und beginne eine neue Iteration.

Lookup(x): Überprüfe Zelle h1(x) in Hashtabelle T1 undgegebenenfalls Zelle h2(x) in Hashtabelle T2.Remove(x): Wenn x vorhanden ist, dann entferne x aus Zelleh1(x) in Hashtabelle T1 oder aus Zelle h2(x) in Hashtabelle T2.

Warum der Name Cuckoo Hashing? Eine Kuckuck Art wirft ein odermehrere Eier aus einem fremden Nest und legt ein eigenes Ei hinzu.

Hashing Cuckoo Hashing 73 / 74

Page 411: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (1/2)

Arbeite mit Hashtabellen T1 und T2 sowie Hashfunktionen h1 undh2.Insert(x): Wiederhole bis zu M mal,

I Speichere x in Tabelle T1 und Zelle h1(x) ab.I Wenn die Zelle h1(x) in Tabelle T1 durch einen Schlüssel y belegt

war, dann füge y in Tabelle T2 und Zelle h2(y) ein.I Wenn die Zelle h2(y) in Tabelle T2 durch einen Schlüssel z belegt

war, dann setze x = z und beginne eine neue Iteration.

Lookup(x): Überprüfe Zelle h1(x) in Hashtabelle T1 undgegebenenfalls Zelle h2(x) in Hashtabelle T2.Remove(x): Wenn x vorhanden ist, dann entferne x aus Zelleh1(x) in Hashtabelle T1 oder aus Zelle h2(x) in Hashtabelle T2.

Warum der Name Cuckoo Hashing? Eine Kuckuck Art wirft ein odermehrere Eier aus einem fremden Nest und legt ein eigenes Ei hinzu.

Hashing Cuckoo Hashing 73 / 74

Page 412: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (1/2)

Arbeite mit Hashtabellen T1 und T2 sowie Hashfunktionen h1 undh2.Insert(x): Wiederhole bis zu M mal,

I Speichere x in Tabelle T1 und Zelle h1(x) ab.I Wenn die Zelle h1(x) in Tabelle T1 durch einen Schlüssel y belegt

war, dann füge y in Tabelle T2 und Zelle h2(y) ein.I Wenn die Zelle h2(y) in Tabelle T2 durch einen Schlüssel z belegt

war, dann setze x = z und beginne eine neue Iteration.

Lookup(x):

Überprüfe Zelle h1(x) in Hashtabelle T1 undgegebenenfalls Zelle h2(x) in Hashtabelle T2.Remove(x): Wenn x vorhanden ist, dann entferne x aus Zelleh1(x) in Hashtabelle T1 oder aus Zelle h2(x) in Hashtabelle T2.

Warum der Name Cuckoo Hashing? Eine Kuckuck Art wirft ein odermehrere Eier aus einem fremden Nest und legt ein eigenes Ei hinzu.

Hashing Cuckoo Hashing 73 / 74

Page 413: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (1/2)

Arbeite mit Hashtabellen T1 und T2 sowie Hashfunktionen h1 undh2.Insert(x): Wiederhole bis zu M mal,

I Speichere x in Tabelle T1 und Zelle h1(x) ab.I Wenn die Zelle h1(x) in Tabelle T1 durch einen Schlüssel y belegt

war, dann füge y in Tabelle T2 und Zelle h2(y) ein.I Wenn die Zelle h2(y) in Tabelle T2 durch einen Schlüssel z belegt

war, dann setze x = z und beginne eine neue Iteration.

Lookup(x): Überprüfe Zelle h1(x) in Hashtabelle T1 undgegebenenfalls Zelle h2(x) in Hashtabelle T2.

Remove(x): Wenn x vorhanden ist, dann entferne x aus Zelleh1(x) in Hashtabelle T1 oder aus Zelle h2(x) in Hashtabelle T2.

Warum der Name Cuckoo Hashing? Eine Kuckuck Art wirft ein odermehrere Eier aus einem fremden Nest und legt ein eigenes Ei hinzu.

Hashing Cuckoo Hashing 73 / 74

Page 414: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (1/2)

Arbeite mit Hashtabellen T1 und T2 sowie Hashfunktionen h1 undh2.Insert(x): Wiederhole bis zu M mal,

I Speichere x in Tabelle T1 und Zelle h1(x) ab.I Wenn die Zelle h1(x) in Tabelle T1 durch einen Schlüssel y belegt

war, dann füge y in Tabelle T2 und Zelle h2(y) ein.I Wenn die Zelle h2(y) in Tabelle T2 durch einen Schlüssel z belegt

war, dann setze x = z und beginne eine neue Iteration.

Lookup(x): Überprüfe Zelle h1(x) in Hashtabelle T1 undgegebenenfalls Zelle h2(x) in Hashtabelle T2.Remove(x):

Wenn x vorhanden ist, dann entferne x aus Zelleh1(x) in Hashtabelle T1 oder aus Zelle h2(x) in Hashtabelle T2.

Warum der Name Cuckoo Hashing? Eine Kuckuck Art wirft ein odermehrere Eier aus einem fremden Nest und legt ein eigenes Ei hinzu.

Hashing Cuckoo Hashing 73 / 74

Page 415: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (1/2)

Arbeite mit Hashtabellen T1 und T2 sowie Hashfunktionen h1 undh2.Insert(x): Wiederhole bis zu M mal,

I Speichere x in Tabelle T1 und Zelle h1(x) ab.I Wenn die Zelle h1(x) in Tabelle T1 durch einen Schlüssel y belegt

war, dann füge y in Tabelle T2 und Zelle h2(y) ein.I Wenn die Zelle h2(y) in Tabelle T2 durch einen Schlüssel z belegt

war, dann setze x = z und beginne eine neue Iteration.

Lookup(x): Überprüfe Zelle h1(x) in Hashtabelle T1 undgegebenenfalls Zelle h2(x) in Hashtabelle T2.Remove(x): Wenn x vorhanden ist, dann entferne x aus Zelleh1(x) in Hashtabelle T1 oder aus Zelle h2(x) in Hashtabelle T2.

Warum der Name Cuckoo Hashing? Eine Kuckuck Art wirft ein odermehrere Eier aus einem fremden Nest und legt ein eigenes Ei hinzu.

Hashing Cuckoo Hashing 73 / 74

Page 416: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (1/2)

Arbeite mit Hashtabellen T1 und T2 sowie Hashfunktionen h1 undh2.Insert(x): Wiederhole bis zu M mal,

I Speichere x in Tabelle T1 und Zelle h1(x) ab.I Wenn die Zelle h1(x) in Tabelle T1 durch einen Schlüssel y belegt

war, dann füge y in Tabelle T2 und Zelle h2(y) ein.I Wenn die Zelle h2(y) in Tabelle T2 durch einen Schlüssel z belegt

war, dann setze x = z und beginne eine neue Iteration.

Lookup(x): Überprüfe Zelle h1(x) in Hashtabelle T1 undgegebenenfalls Zelle h2(x) in Hashtabelle T2.Remove(x): Wenn x vorhanden ist, dann entferne x aus Zelleh1(x) in Hashtabelle T1 oder aus Zelle h2(x) in Hashtabelle T2.

Warum der Name Cuckoo Hashing? Eine Kuckuck Art wirft ein odermehrere Eier aus einem fremden Nest und legt ein eigenes Ei hinzu.

Hashing Cuckoo Hashing 73 / 74

Page 417: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (2/2)

Cuckoo Hashing hasht direkt in die Tabellen. Dieremove-Operation ist aber mit Leichtigkeit implementierbar.

Eine worst-case Garantie für lookup und remove:Höchstens zwei Zellen werden inspiziert.Nur die insert-Operation ist komplizierter:

I Der Auslastungsfaktor λ sollte kleiner als 12 sein.

I Es kann gezeigt werden, dass die erwartete Anzahl getesteterZellen höchstens O(1 + 1

0.5−λ ) beträgt.I Wenn die insert Prozedur nach M Iterationen nicht erfolgreich ist,

dann wird der zuletzt herausgeworfene Schlüsselin einer „Liste von Fehlversuchen“ abgelegt.

Welche Hashfunktionen? Wähle 0 < a1,a2,a3 < m · 2w zufälligund setze h(x) = fa1(x)⊕ fa2(x)⊕ fa3(x), wobei

fa(x) = (a · x mod m · 2w ) div 2w .

Hashing Cuckoo Hashing 74 / 74

Page 418: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (2/2)

Cuckoo Hashing hasht direkt in die Tabellen. Dieremove-Operation ist aber mit Leichtigkeit implementierbar.Eine worst-case Garantie für lookup und remove:Höchstens zwei Zellen werden inspiziert.

Nur die insert-Operation ist komplizierter:I Der Auslastungsfaktor λ sollte kleiner als 1

2 sein.I Es kann gezeigt werden, dass die erwartete Anzahl getesteter

Zellen höchstens O(1 + 10.5−λ ) beträgt.

I Wenn die insert Prozedur nach M Iterationen nicht erfolgreich ist,dann wird der zuletzt herausgeworfene Schlüsselin einer „Liste von Fehlversuchen“ abgelegt.

Welche Hashfunktionen? Wähle 0 < a1,a2,a3 < m · 2w zufälligund setze h(x) = fa1(x)⊕ fa2(x)⊕ fa3(x), wobei

fa(x) = (a · x mod m · 2w ) div 2w .

Hashing Cuckoo Hashing 74 / 74

Page 419: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (2/2)

Cuckoo Hashing hasht direkt in die Tabellen. Dieremove-Operation ist aber mit Leichtigkeit implementierbar.Eine worst-case Garantie für lookup und remove:Höchstens zwei Zellen werden inspiziert.Nur die insert-Operation ist komplizierter:

I Der Auslastungsfaktor λ sollte kleiner als 12 sein.

I Es kann gezeigt werden, dass die erwartete Anzahl getesteterZellen höchstens O(1 + 1

0.5−λ ) beträgt.

I Wenn die insert Prozedur nach M Iterationen nicht erfolgreich ist,dann wird der zuletzt herausgeworfene Schlüsselin einer „Liste von Fehlversuchen“ abgelegt.

Welche Hashfunktionen? Wähle 0 < a1,a2,a3 < m · 2w zufälligund setze h(x) = fa1(x)⊕ fa2(x)⊕ fa3(x), wobei

fa(x) = (a · x mod m · 2w ) div 2w .

Hashing Cuckoo Hashing 74 / 74

Page 420: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (2/2)

Cuckoo Hashing hasht direkt in die Tabellen. Dieremove-Operation ist aber mit Leichtigkeit implementierbar.Eine worst-case Garantie für lookup und remove:Höchstens zwei Zellen werden inspiziert.Nur die insert-Operation ist komplizierter:

I Der Auslastungsfaktor λ sollte kleiner als 12 sein.

I Es kann gezeigt werden, dass die erwartete Anzahl getesteterZellen höchstens O(1 + 1

0.5−λ ) beträgt.I Wenn die insert Prozedur nach M Iterationen nicht erfolgreich ist,

dann wird der zuletzt herausgeworfene Schlüsselin einer „Liste von Fehlversuchen“ abgelegt.

Welche Hashfunktionen? Wähle 0 < a1,a2,a3 < m · 2w zufälligund setze h(x) = fa1(x)⊕ fa2(x)⊕ fa3(x), wobei

fa(x) = (a · x mod m · 2w ) div 2w .

Hashing Cuckoo Hashing 74 / 74

Page 421: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (2/2)

Cuckoo Hashing hasht direkt in die Tabellen. Dieremove-Operation ist aber mit Leichtigkeit implementierbar.Eine worst-case Garantie für lookup und remove:Höchstens zwei Zellen werden inspiziert.Nur die insert-Operation ist komplizierter:

I Der Auslastungsfaktor λ sollte kleiner als 12 sein.

I Es kann gezeigt werden, dass die erwartete Anzahl getesteterZellen höchstens O(1 + 1

0.5−λ ) beträgt.I Wenn die insert Prozedur nach M Iterationen nicht erfolgreich ist,

dann wird der zuletzt herausgeworfene Schlüsselin einer „Liste von Fehlversuchen“ abgelegt.

Welche Hashfunktionen?

Wähle 0 < a1,a2,a3 < m · 2w zufälligund setze h(x) = fa1(x)⊕ fa2(x)⊕ fa3(x), wobei

fa(x) = (a · x mod m · 2w ) div 2w .

Hashing Cuckoo Hashing 74 / 74

Page 422: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (2/2)

Cuckoo Hashing hasht direkt in die Tabellen. Dieremove-Operation ist aber mit Leichtigkeit implementierbar.Eine worst-case Garantie für lookup und remove:Höchstens zwei Zellen werden inspiziert.Nur die insert-Operation ist komplizierter:

I Der Auslastungsfaktor λ sollte kleiner als 12 sein.

I Es kann gezeigt werden, dass die erwartete Anzahl getesteterZellen höchstens O(1 + 1

0.5−λ ) beträgt.I Wenn die insert Prozedur nach M Iterationen nicht erfolgreich ist,

dann wird der zuletzt herausgeworfene Schlüsselin einer „Liste von Fehlversuchen“ abgelegt.

Welche Hashfunktionen? Wähle 0 < a1,a2,a3 < m · 2w zufälligund setze h(x) = fa1(x)⊕ fa2(x)⊕ fa3(x), wobei

fa(x) = (a · x mod m · 2w ) div 2w .

Hashing Cuckoo Hashing 74 / 74

Page 423: Wörterbücher - uni-frankfurt.de...Datenstrukturen für Wörterbücher Wie sollten statische Wörterbücher, also Wörterbücher die nur lookup benutzen, implementiert werden? I Sortiere

Cuckoo Hashing (2/2)

Cuckoo Hashing hasht direkt in die Tabellen. Dieremove-Operation ist aber mit Leichtigkeit implementierbar.Eine worst-case Garantie für lookup und remove:Höchstens zwei Zellen werden inspiziert.Nur die insert-Operation ist komplizierter:

I Der Auslastungsfaktor λ sollte kleiner als 12 sein.

I Es kann gezeigt werden, dass die erwartete Anzahl getesteterZellen höchstens O(1 + 1

0.5−λ ) beträgt.I Wenn die insert Prozedur nach M Iterationen nicht erfolgreich ist,

dann wird der zuletzt herausgeworfene Schlüsselin einer „Liste von Fehlversuchen“ abgelegt.

Welche Hashfunktionen? Wähle 0 < a1,a2,a3 < m · 2w zufälligund setze h(x) = fa1(x)⊕ fa2(x)⊕ fa3(x), wobei

fa(x) = (a · x mod m · 2w ) div 2w .

Hashing Cuckoo Hashing 74 / 74