Aufgabenblatt 03 - RWTH

Werbung
Aufgaben zur Veranstaltung
Algorithmen und Datenstrukturen, SS 2017
H. Pflug, J. Poniatowski
FH Aachen, Campus Jülich; IT Center, RWTH Aachen
Übungsblatt 3
18.04.2017
Präsenzaufgaben
Aufgabe 1
Hashtabelle
Setzen Sie die folgenden Zahlen in die untenstehende, bereits teilweise gefüllte Hashtabelle mit 20
Elementen ein. Die Hashfunktion ist h(x)=x%20. Benutzen Sie
a) Lineare Sondierung
b) Quadratische Sondierung
c) Doppeltes Hashing. Die zweite Hashfunktion ist ℎ2 (𝑥) = ⌊
𝑥
⌋ (also die
100
erste der drei Ziffern
der Zahl)
Die Zahlen sind: 400, 212, 734, 161, 358
Index
Lineare Sondierung
Quadratische Sondierung
Doppeltes Hashing
0
220
220
220
1
541
541
541
464
464
464
249
249
249
12
492
492
492
13
573
573
573
14
974
974
974
15
695
695
695
16
336
336
336
479
479
479
2
3
4
5
6
7
8
9
10
11
17
18
19
Aufgabenblatt Algorithmen und Datenstrukturen
Aufgabe 2
SS 17; H. Pflug, J. Poniatowski
Kreuzworträtsel
Eine Anzahl vorgegebener Worte soll zu einem möglichst kompakten Kreuzworträtsel
zusammengesetzt werden. Alle Worte müssen miteinander in Verbindung stehen. Beispiel:
Die Worte ANANASSALAT, ARBEITSABLAUFPLAN, BANANENSCHALE, DATENAUTOBAHN und
NACHRICHTENSATELLIT lassen sich am kompaktesten wie unten gezeigt anordnen
(11x19=209 Felder).
BANANENSCHALE∙∙∙∙∙∙
∙N∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
DATENAUTOBAHN∙∙∙∙∙∙
∙N∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
NACHRICHTENSATELLIT
∙S∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
∙S∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
∙ARBEITSABLAUFPLAN∙
∙L∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
∙A∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
∙T∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙
Der eigentliche Algorithmus benötigt Backtracking, was noch nicht Teil der Vorlesung war. In dieser
Aufgabe geht es nur darum, in welcher Datenstruktur man das Kreuzworträtsel am besten abgelegt.
Folgende Operationen müssen auf dieser Datenstruktur möglichst effizient funktionieren:




Das Anfügen neuer Wörter. Das Kreuzworträtsel kann sich dabei in alle Richtungen
ausdehnen.
Das Auslesen des Felds an einer Koordinate (x/y).
Die Bestimmung der Größe des aktuellen Kreuzworträtsels.
Für den Backtracking-Algorithmus muss man außerdem ein bereits eingesetztes Wort auf
dem Koordinatensystem lokalisieren können.
Welche Datenstruktur kann diese Möglichkeiten effizient bieten? Felder? Dynamische Felder
(ArrayLists)? Verkettete Listen? Zirkuläre Felder? Hashtabellen? Speichert man besser wort- oder
buchstabenweise ab? Berücksichtigen Sie auch Probleme, die sich eventuell bei der
Größenbestimmung des Rätsels ergeben.
2
Herunterladen