11.10.2013 Aufrufe

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Implementierung erweiterbarer Bildbereiche<br />

übliche Realisierung:<br />

¯ Hash-Werte sind Bit-Folgen (potentiell beliebig lang)<br />

¯ beim Level werden die ersten Bits als Zahl interpretiert<br />

10.3. Dynamische Hash-Verfahren<br />

– erste Variante: Binärzahl in üblicher Schreibweise<br />

– zweite Variante: Bit-Folge in umgekehrter Reihenfolge interpretiert<br />

erweiterbares Hashen wie unten beschrieben nutzt die erste Variante<br />

Zweite Idee: Zielbereich kann mehr als einen Wert aufnehmen<br />

Hash-Funktion liefert die Adresse eines Blockes<br />

Block kann vorgegebene Anzahl von Elementen aufnehmen<br />

... trotzdem Überlauf:<br />

¯ Erweiterung des Bildbereichs (‘ein Bit mehr’)<br />

¯ oder (übergangsweise) Überlaufliste verwalten<br />

Dritte Idee: Erweiterung des Bildbereichs nur dort wo nötig<br />

Beispiel: mehr Elemente zwischen 0 <strong>und</strong> 0.5 als zwischen 0.5 <strong>und</strong> 1:<br />

wähle für Hash-Werte die (als Binärzahl) mit 0.0 beginnen weniger Bits zur<br />

Adressierung als für die mit 0.1 beginnenden<br />

Vorsicht: jetzt kann man nicht mehr direkt ein Array adressieren, da unterschiedllich<br />

lange Bit-Folgen zur Adressierung genommen werden (Adressierung über 11<br />

<strong>und</strong> 011 liefert in beiden Fällen die 3!)<br />

Vierte Idee: Binärer Trie zur Verwaltung der Blöcke<br />

unterschiedliche lange Bit-Sequenzen können effizient über einen Trie verwaltet<br />

werden<br />

Beobachtung: bei guter Hash-Funktion ist der Trie so gut wie ausgeglichen!<br />

Fünfte Idee: Ausgeglichener Trie als Array gespeichert<br />

Als Suchstruktur wird statt eines allgemeinen binären Präfix-Baum ein ausgeglichener<br />

binärer Präfix-Baum genommen, der als Array mit fester Größe realisiert<br />

wird.<br />

wird dabei als Tiefe des Baumes bezeichnet.<br />

195

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!