Datenstrukturen und Algorithmen

Welche Aussage vergleicht die Verkettung (Chaining: Elemente derselben Position werden in einer verketteten Liste verbunden) und die offene Adressierung (eine andere freie Position innerhalb der Tabelle wird gesucht) als Verfahren zur Kollisionsauflösung in Hashtabellen richtig? Der Belegungsfaktor ist die Zahl der gespeicherten Elemente geteilt durch die Tabellengröße.

  1. AMit Verkettung lassen sich auch bei einem Belegungsfaktor über 1 Elemente speichern; bei offener Adressierung können nicht mehr Elemente gespeichert werden, als die Tabelle groß ist, und die Zahl der Sondierschritte steigt stark an, wenn sich der Belegungsfaktor 1 nähert
  2. BBei offener Adressierung treten keine Kollisionen auf, daher genügt unabhängig vom Belegungsfaktor stets ein Sondierschritt
  3. CBei Verkettung bleibt der Suchaufwand gleich, wie hoch der Belegungsfaktor auch wird
Antwort und Erläuterung anzeigen

Antwort: A. Mit Verkettung lassen sich auch bei einem Belegungsfaktor über 1 Elemente speichern; bei offener Adressierung können nicht mehr Elemente gespeichert werden, als die Tabelle groß ist, und die Zahl der Sondierschritte steigt stark an, wenn sich der Belegungsfaktor 1 nähert

Die Verkettung verbindet die Elemente derselben Position zu Listen und kann daher mehr Elemente speichern, als die Tabelle groß ist; die mittlere Listenlänge wächst aber proportional zum Belegungsfaktor und mit ihr der Suchaufwand. Die offene Adressierung speichert alles innerhalb der Tabelle und fasst daher höchstens so viele Elemente, wie die Tabelle groß ist; die Zahl der Sondierschritte bis zu einem freien Platz steigt stark an, wenn sich der Belegungsfaktor 1 nähert. Bei beiden Verfahren ist es üblich, die Tabelle zu vergrößern und alle Elemente neu einzufügen (Rehashing), sobald der Belegungsfaktor einen gewählten Grenzwert wie etwa 0,5 bis 0,75 überschreitet. Auch bei offener Adressierung treten Kollisionen auf; sie werden durch die Suche nach einer freien Position behandelt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Datenstrukturen und Algorithmen

  1. Welche Voraussetzung muss erfüllt sein, um die binäre Suche zu verwenden, die den Zielwert mit dem mittleren Element vergleicht und den Suchbereich jedes Mal halbiert?
  2. Auf 1000 verschiedene, aufsteigend sortierte Werte wird eine binäre Suche angewendet. Ein Vergleich liefert jeweils „gleich“, „kleiner“ oder „größer“. Wie viele Vergleiche sind höchstens nötig, erfolgreiche und erfolglose Suchen zusammengenommen?
  3. Eine binäre Suche sucht 38 im aufsteigend sortierten Array a[0] bis a[9] = 3, 8, 12, 17, 23, 31, 38, 45, 52, 60. Der Suchbereich beginnt mit lo = 0 und hi = 9, und die mittlere Position ist (lo + hi) ÷ 2 abgerundet. Welche Folge gibt die Elemente, die mit 38 verglichen werden, in der richtigen Reihenfolge an?
  4. Das Array 5, 3, 8, 1, 4 wird mit Bubblesort aufsteigend sortiert. Wie sieht das Array nach einem Durchlauf aus, bei dem benachbarte Elemente von vorn bis zum Ende verglichen und vertauscht werden, wenn das linke größer ist?
  5. Das Array 29, 10, 14, 37, 13 wird mit Selectionsort aufsteigend sortiert: Das Minimum des unsortierten Teils wird gesucht und mit dem ersten Element des unsortierten Teils vertauscht. Wie sieht das Array aus, nachdem dieser Schritt zweimal ausgeführt wurde?