Offene Adressierung grob
Offene Adressierung speichert Einträge in der Tabelle selbst und sucht bei Kollision alternative Slots (linear, quadratisch, double hashing). Löschen braucht Platzhalter (tombstones).
Gute Lokalität, aber empfindlich bei hohem Füllgrad.
| Strategie | Eintrag landet | Löschen |
|---|---|---|
| Chaining | in der Bucketstruktur | lokal in der Kette |
| Offenes Adressieren | in der Tabelle weiter | Tombstone nötig |
| ## Wo gebraucht |
High-Performance-Maps, einige DB-Hash-Indizes, wenn Pointer-Chase von Chaining zu teuer ist. Mehr Sondierungslogik, bessere Cache-Lokalität bei guter Last.
Vertiefung
Bei offener Adressierung liegen alle Einträge direkt im Tabellenarray. Ist der Startplatz belegt, folgt die Suche einer festgelegten Sondierungsfolge. Einfügen und Nachschlagen müssen exakt dieselbe Folge verwenden, sonst können vorhandene Schlüssel übersehen werden.
Beim Löschen wird häufig ein besonderer Marker gesetzt. Ein wirklich leerer Platz zeigt, dass ein Schlüssel entlang dieses Suchwegs nicht mehr folgen kann. Ein Löschmarker erlaubt dagegen die Fortsetzung der Sondierung und kann später bei einer Einfügung wiederverwendet werden.
Schwierigkeitsstufen
- Lineares Sondieren für eine kurze Tabelle simulieren.
- Leeren Platz und Löschmarker semantisch unterscheiden.
- Clusterbildung und ihren Einfluss auf die Zugriffszeit erklären.
Fallstricke
Eine nahezu volle Tabelle kann sehr lange Sondierungsfolgen erzeugen. Wird beim ersten gelöschten Feld erfolglos abgebrochen, bleiben weiter hinten abgelegte Schlüssel unsichtbar.
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Intermediate
- Completed: 0 users