Lastfaktor und Rehash
Der Lastfaktor ist n / Kapazität. Überschreitet er eine Schwelle, reallociert die Tabelle (Rehash): neue Kapazität, Einträge neu verteilen.
Rehash ist amortisiert $O(n)$, hält aber die erwartete Bucketlänge klein.
$$\alpha = n/m$$
Wo gebraucht
Kapazitätsplanung für Caches und Maps: zu voll bedeutet lange Ketten und Rehash-Pausen. In Services sichtbare GC-/Latenzphasen beim Wachsen grosser Maps.
Vertiefung
Der Lastfaktor ist das Verhältnis von gespeicherten Einträgen zur Zahl der Tabellenplätze. Steigt er, wachsen bei Chaining im Mittel die lokalen Sammlungen; bei offener Adressierung werden freie Plätze schwerer erreichbar. Implementierungen definieren deshalb einen Schwellenwert für eine Grössenänderung.
Nach der Vergrösserung müssen alle Einträge anhand der neuen Kapazität erneut einsortiert werden. Das ist ein einzelner teurer Vorgang, tritt aber nur gelegentlich auf. Über viele Einfügungen verteilt bleiben die amortisierten Kosten daher klein, sofern die Kapazität geometrisch wächst.
Schwierigkeitsstufen
- Den Lastfaktor aus Eintragszahl und Kapazität berechnen.
- Begründen, warum blosses Kopieren an dieselben Indizes falsch ist.
- Die amortisierten Kosten geometrischer Vergrösserung erklären.
Fallstricke
Ein gespeicherter Tabellenindex ist keine dauerhafte Eigenschaft eines Schlüssels. Wird die Kapazität geändert, ändert sich meist auch die Indexabbildung. Eine Vergrösserung um jeweils nur einen Platz führt zudem zu zu vielen vollständigen Umbauten.
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Beginner
- Completed: 0 users