186.172 Algorithmen und Datenstrukturen 1 VL 4.0 2. ¨Ubungstest WS

Werbung
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Arbeitsbereich für Algorithmen und Datenstrukturen
186.172 Algorithmen und Datenstrukturen 1 VL 4.0
2. Übungstest WS 2007
11. Jänner 2008
Machen Sie die folgenden Angaben bitte in deutlicher Blockschrift:
Nachname:
Vorname:
Matrikelnummer:
Studienkennzahl:
Anzahl abgegebener Zusatzblätter:
Legen Sie bitte Ihren Studentenausweis vor sich auf das Pult.
Sie können die Lösungen entweder direkt auf die Angabeblätter oder auf Zusatzblätter
schreiben, die Sie auf Wunsch von der Aufsicht erhalten. Es ist nicht zulässig, eventuell
mitgebrachtes eigenes Papier zu verwenden.
Die Verwendung von Taschenrechner, Mobiltelefonen, Skripten, Büchern, Mitschriften,
Ausarbeitungen oder vergleichbaren Hilfsmitteln ist unzulässig.
Die Arbeitszeit beträgt 55 Minuten.
Erreichbare Punkte:
A1:
A2:
A3:
Summe:
18
15
17
50
Erreichte Punkte:
Viel Erfolg!
Aufgabe 1.A: Lineare Listen
(18 Punkte)
Die Waggons eines Zuges A werden als Elemente ai einer doppelt verketteten Linearen
Liste gespeichert. Die Zeiger A.begin bzw. A.end verweisen auf den ersten bzw. letzten
Waggon des Zuges.
A.begin
Zug A
a1
···
an−1
A.end
an−1
a1
an
an
···
Schreiben Sie detaillierten Pseudocode inklusive aller notwendigen Zeigeroperationen für
eine Prozedur split and concat(A, x, B), welche die ersten x Waggons des Zuges
A vorne an den Zug B hängt.
Zug A
a1
···
an
···
b1
Zug B
bm
split and concat(A, x, B)
Zug A
ax+1
···
an
Zug B
a1
···
ax
b1
···
bm
Beachten Sie folgende Punkte:
• Ein Listenelement a speichert neben verschiedenen anderen Daten jeweils einen
Zeiger auf seinen Vorgänger (a.pred) und Nachfolger (a.next).
Es gilt: A.begin→pred = A.end→next = NULL.
• Besteht Zug A aus weniger als x + 1 Waggons, dann darf die Aktion nicht durchgeführt werden (Fehlermeldung).
• Die Länge einer Liste kann nur durch selbständiges Abzählen der Listenelemente
bestimmt werden.
• Achten Sie darauf, dass der Algorithmus so effizient wie möglich ist.
• Sie können davon ausgehen, dass beide Züge aus jeweils zumindest einem Waggon
bestehen.
Aufgabe 2.A: Hash-Verfahren
(15 Punkte)
a) (3 Punkte) Welchen Nachteil haben Offene Hashverfahren gegenüber der Methode
mit Verkettung der Überläufer ?
b) (8 Punkte) Gegeben sei eine Hashtabelle H (m = 8) mit den Einträgen T [2] = 10,
T [6] = 6 und T [7] = 23.
10
6
23
Fügen Sie nun die Zahlen 14, 9, 18 und 19 in genau dieser Reihenfolge mittels
Double Hashing unter der Verwendung der Verbesserung nach Brent in H ein.
Verwenden Sie dazu die folgenden Hashfunktionen:
h1 (k) = k mod 8
h2 (k) = 1 + (k mod 5)
Geben Sie alle Zwischenschritte, d.h. alle Werte der Hashfunktion h(k, i) bei der
Sondierung, an und tragen Sie die konkrete Belegung von H nach jeder Einfügeoperation in die hier zur Verfügung gestellten leeren Tabellen ein:
c) (4 Punkte) Bei der Erstellung einer Hashtabelle gilt es, einige Parameter geschickt
zu wählen, unter anderem die Tabellengröße oder die verwendeten Hashfunktionen. Welche Parameter sind bei der Hashtabelle H aus Punkt b) problematisch?
Begründen Sie Ihre Antwort kurz in maximal 2-3 Sätzen.
Aufgabe 3.A: Suchbäume
(17 Punkte)
a) (4 Punkte) Welche Durchmusterungsreihenfolgen für binäre Suchbäume sind Ihnen bekannt? In welcher Reihenfolge werden dabei jeweils die Wurzel eines Baumes
sowie deren linker/rechter Unterbaum besucht? Welche Durchmusterungsreihenfolge(n) führt bzw. führen zu einer aufsteigend sortierten Ausgabe der gespeicherten
Schlüssel?
b) (4 Punkte) Welche der vier Bäume sind AVL-Bäume? Markieren Sie deutlich alle
Knoten, in denen eine notwendige Bedingung verletzt ist.
r
f
c
g
b
A:
m
e
i
k
j
h
d
a
AVL-Baum: ¤ ja
B:
¤ nein
C:
1
5
AVL-Baum: ¤ ja
¤ nein
3
4
2
8
1
D:
3
AVL-Baum: ¤ ja
q
l
7
4
t
p
n
6
2
s
o
¤ nein
6
5
7
AVL-Baum: ¤ ja
8
¤ nein
c) (3 Punkte) Wie viele Schlüssel kann ein B-Baum der Ordnung 3 und Höhe 2 minimal bzw. maximal in seinen Knoten – mit Ausnahme der Blätter (Vorsicht: Blätter
zählen aber zur Höhe des Baumes) – aufnehmen? Begründen Sie Ihre Antwort kurz!
d) (6 Punkte) Fügen Sie nacheinander die Werte
h4, 10, 9, 13, 22, 24i
in einen anfangs leeren AVL-Baum ein. Skizzieren Sie alle dafür notwendigen Rotationen.
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Arbeitsbereich für Algorithmen und Datenstrukturen
186.172 Algorithmen und Datenstrukturen 1 VL 4.0
2. Übungstest SS 2008
6. Juni 2008
Machen Sie die folgenden Angaben bitte in deutlicher Blockschrift:
Nachname:
Vorname:
Matrikelnummer:
Studienkennzahl:
Anzahl abgegebener Zusatzblätter:
Legen Sie bitte Ihren Studentenausweis vor sich auf das Pult.
Sie können die Lösungen entweder direkt auf die Angabeblätter oder auf Zusatzblätter
schreiben, die Sie auf Wunsch von der Aufsicht erhalten. Es ist nicht zulässig, eventuell
mitgebrachtes eigenes Papier zu verwenden.
Die Verwendung von Taschenrechnern, Mobiltelefonen, Skripten, Büchern, Mitschriften,
Ausarbeitungen oder vergleichbaren Hilfsmitteln ist unzulässig.
Die Arbeitszeit beträgt 55 Minuten.
Erreichbare Punkte:
A1:
A2:
A3:
Summe:
16
16
18
50
Erreichte Punkte:
Viel Erfolg!
Aufgabe 1.A: Hashverfahren
(16 Punkte)
a) (7 Punkte)
Gegeben ist eine Hashtabelle mit Tabellengröße m = 13 und der Hashfunktion
h′ (k) = k mod 13. Zur Kollisionsbehandlung wird quadratisches Sondieren mit
den Konstanten c1 = 3 und c2 = 2 verwendet.
• Fügen Sie den Wert 18 in die folgende Tabelle ein:
0 1 2 3 4 5 6
7 8 9 10
30
32 20
11
12
25
• Fügen Sie den Wert 17 in die folgende Tabelle ein:
0 1 2 3 4 5 6
7 8 9 10
30
32 20
11
12
25
• Fügen Sie den Wert 7 in die folgende Tabelle ein:
7 8 9
0 1 2 3 4 5 6
30
32 20
11
12
25
10
b) (9 Punkte)
Gegeben ist eine Hashtabelle mit Tabellengröße m = 7, die Double Hashing mit
der Verbesserung nach Brent benutzt mit
h1 (k) = k mod 7
h2 (k) = (2k + 1) mod 5
• Fügen Sie den Wert 21 in die folgende Tabelle ein:
0 1 2 3 4 5 6
14
24
19
• Fügen Sie den Wert 5 in die folgende Tabelle ein:
0 1 2 3 4 5 6
14
24
19
• Welches Problem kann beim Einfügen in die Hashtabelle bei der Verwendung
der oben angegebenen Hashfunktionen auftreten? Wie müssen die Funktionen
h1 (k) und/oder h2 (k) abgeändert werden, um dieses Problem zu beheben?
Aufgabe 2.A: Suchverfahren
(16 Punkte)
a) (12 Punkte)
• Schreiben Sie detaillierten Pseudocode für eine effiziente rekursive Prozedur, die die Höhe x.heigth und die Balancierung x.bal jedes Knotens x eines
natürlichen binären Suchbaumes T berechnet. Geben Sie unter Umständen
notwendige Initialisierungen an sowie den ersten Aufruf mit allen Parametern,
um die Rekursion zu starten. Auf die Wurzel des Baumes kann mithilfe von T
zugegriffen werden. Zu jedem Knoten x werden folgende Daten gespeichert:
x.key:
x.lef t:
x.right:
x.heigth:
x.bal:
Schlüssel von x
Verweis auf linkes Kind von x
Verweis auf rechtes Kind von x
Höhe des Teilbaumes mit Wurzel x
Balancierung des Teilbaumes mit Wurzel x
Hinweis: Die Werte x.heigth und x.bal sind zu Beginn nicht initialisiert, sondern sollen von Ihrer Prozedur berechnet werden!
• Geben Sie die Laufzeit ihres Algorithmus in Θ-Notation in Abhängigkeit der
Anzahl der Knoten n an.
• Auf welchem aus der Vorlesung bekannten allgemeinen Verfahren basiert ihre
Implementierung?
b) (4 Punkte)
• Fügen Sie folgende Werte in genau dieser Reihenfolge in einen Anfangs leeren
natürlichen binären Suchbaum ein. Zeichnen Sie lediglich den resultierenden
Baum, Zwischenschritte müssen nicht angegeben werden.
h34, 15, 50, 7, 30, 40, 80, 3, 10, 20, 33, 38, 99i
• Handelt es sich bei dem resultierenden Baum um einen gültigen AVL-Baum?
Begründen Sie Ihre Antwort.
Aufgabe 3.A: Graphen
(18 Punkte)
Gegeben ist die folgende Adjazenzmatrix eines ungerichteten Graphen G:
A
B
C
D
E
F
G
H
I
J
A B
0 0
0 0
0 0
0 1
0 0
0 0
1 0
0 0
0 0
1 0
C D
0 0
0 1
0 0
0 0
0 0
1 0
0 0
0 0
1 0
0 0
E F G
0 0 1
0 0 0
0 1 0
0 0 0
0 0 0
0 0 0
0 0 0
1 0 0
0 1 0
1 0 1
H
0
0
0
0
1
0
0
0
0
1
I J
0 1
0 0
1 0
0 0
0 1
1 0
0 1
0 1
0 0
0 0
a) (4 Punkte)
Zeichnen Sie den Graphen G in die gegebene Vorlage ein und geben Sie G in Adjazenzlistendarstellung an. Kreuzen Sie außerdem die zutreffenden Eigenschaften
des Graphen G an:
ist Baum ist Wald ist zusammenhängend enthält Kreis b) (4 Punkte)
Ein ungerichteter Graph heißt bipartit, wenn man die Knotenmenge V in zwei
disjunkte Teilmengen U und W so aufspalten kann, dass für alle Kanten (u, w) aus
der Kantenmenge E gilt: u ∈ U und w ∈ W .
Ist der Graph G bipartit? Wenn ja, markieren Sie die Knoten von G entsprechend
mit U und V . Wenn nein, geben Sie eine beliebige aber möglichst kleine Teilmenge
von Knoten an, die einen Konflikt verursachen.
Begründen Sie Ihre Antwort.
c) (10 Punkte)
Kreuzen Sie an, ob die unten angegebenen Listen einer möglichen Abarbeitungsreihenfolge der Knoten bei einer Tiefen- oder Breitensuche entsprechen (Hinweis:
Auch Mehrfachnennungen sind möglich und nur vollständig richtige Zeilen werden
gewertet!).
Tiefensuche
A, J, E, H, G, D, B, F, C, I
C, F, I, B, D, H, J, G, A, H
A, G, J, E, H, B, D, C, I, F
G, E, H, J, A, F, I, C, D, B
A, B, C, D, E, F, G, H, I, J
Breitensuche
Keines
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Arbeitsbereich für Algorithmen und Datenstrukturen
186.172 Algorithmen und Datenstrukturen 1 VL 4.0
2. Übungstest WS 2008
16. Jänner 2009
Machen Sie die folgenden Angaben bitte in deutlicher Blockschrift:
Nachname:
Vorname:
Matrikelnummer:
Studienkennzahl:
Anzahl abgegebener Zusatzblätter:
Legen Sie bitte Ihren Studentenausweis vor sich auf das Pult.
Sie können die Lösungen entweder direkt auf die Angabeblätter oder auf Zusatzblätter
schreiben, die Sie auf Wunsch von der Aufsicht erhalten. Es ist nicht zulässig, eventuell
mitgebrachtes eigenes Papier zu verwenden.
Die Verwendung von Taschenrechnern, Mobiltelefonen, Skripten, Büchern, Mitschriften,
Ausarbeitungen oder vergleichbaren Hilfsmitteln ist unzulässig.
Die Arbeitszeit beträgt 55 Minuten.
Erreichbare Punkte:
A1:
A2:
A3:
Summe:
16
19
15
50
Erreichte Punkte:
Viel Erfolg!
Aufgabe 1.A: Hashverfahren
(16 Punkte)
a) (8 Punkte)
Gegeben ist jeweils eine Hashtabelle mit Tabellengröße m = 7, die Double Hashing
mit der Verbesserung nach Brent benutzt mit
h1 (k) = k mod 11
h2 (k) = 2 + (k mod 5).
• Fügen Sie den Wert 7 in die folgende Tabelle ein:
0 1 2 3 4 5 6
22
4
• Fügen Sie den Wert 14 in die folgende Tabelle ein:
0 1 2 3
4 5 6
2 10 15
• Sind die gegebene Tabellengröße sowie die beiden Hashfunktionen eine gute
Wahl oder können dabei Probleme auftreten? Begründen Sie Ihre Antwort
kurz.
b) (8 Punkte)
Betrachten Sie die folgende Hashtabelle der Größe 5:
Index
Element
Status
0
4
W
1
F
2
7
B
3
3
B
4
12
B
Die Hashfunktion, die zum Einfügen der Elemente verwendet wurde, lautet
h(k) = k mod 5
und als Kollisionsbehandlung wurde lineares Sondieren mit der Schrittweite 1 verwendet. In der Zeile Status steht F für frei, W für wieder frei und B für besetzt.
In die leere Hashtabelle wurden zu Beginn die Elemente mit den Schlüsseln 3, 7
und 12 eingefügt (nicht notwendigerweise in dieser Reihenfolge) und in weiterer
Folge nicht wieder entfernt. Über weitere Einfüge- und Löschoperationen anderer
Schlüssel danach gibt es keine genauen Angaben.
Kreuzen Sie an, ob die folgenden Aussagen wahr oder falsch sind:
Wahr Falsch
Es wurde nie ein Schlüssel gelöscht.
Es ist möglich, dass 1 eingefügt und wieder gelöscht wurde.
7 wurde definitiv vor 12 eingefügt.
Es ist möglich, dass 12 vor 3 eingefügt wurde.
Ein Element mit Schlüssel 5 würde aktuell in der Hashtabelle
an Index 1 eingefügt werden.
Aufgabe 2.A: Suchverfahren
(19 Punkte)
a) (10 Punkte)
• Schreiben Sie detaillierten Pseudocode für eine Funktion, die die RechtsRotation für einen Teilbaum mit Wurzel u (wird als Parameter übergeben)
innerhalb eines AVL-Baumes durchführt. Als Rückgabewert soll ihre Funktion den neuen Wurzelknoten des rebalancierten Teilbaumes zurückliefern. Zu
jedem Knoten x werden folgende Daten gespeichert:
x.key:
x.parent:
x.lef t:
x.right:
x.height:
Schlüssel von x
Verweis auf Vaterknoten von x
Verweis auf linkes Kind von x
Verweis auf rechtes Kind von x
Höhe des Teilbaumes mit Wurzel x
Hinweis: Beachten Sie, dass Ihre Rebalancierungsfunktion so ausgelegt ist,
dass alle oben angeführten Daten eines Knotens nach der Rebalancierung
korrekt sind!
• Geben Sie die Laufzeit ihres Algorithmus in Θ-Notation in Abhängigkeit einer
geeigneten Größe an.
b) (9 Punkte)
• Fügen Sie folgende Werte in genau dieser Reihenfolge in einen Anfangs leeren B-Baum der Ordnung 3 ein. Zeichnen Sie lediglich den resultierenden
B-Baum, Zwischenschritte müssen nicht unbedingt angegeben werden.
h42, 1, 19, 10, 11, 7, 32, 3, 13i
• Löschen Sie nun die Schlüssel 32 und 19 in genau dieser Reihenfolge aus dem
B-Baum und zeichnen Sie jeweils den resultierenden B-Baum, Zwischenschritte der Löschoperationen müssen nicht angegeben werden.
• Geben Sie die Laufzeit in Θ-Notation in Abhängigkeit der Anzahl der gespeicherten Elemente n für das Suchen eines Schlüssels k in einem B-Baum der
Ordnung 5 an.
Aufgabe 3.A: Graphen
(15 Punkte)
Gegeben ist die folgende Adjazenzmatrix eines ungerichteten Graphen G:
A
B
C
D
E
F
G
H
A
∞
∞
1
3
6
∞
12
∞
B
∞
∞
∞
∞
9
11
∞
∞
C
1
∞
∞
∞
∞
∞
4
∞
D
3
∞
∞
∞
5
∞
2
∞
E
6
9
∞
5
∞
∞
7
13
F
∞
11
∞
∞
∞
∞
∞
8
G
12
∞
4
2
7
∞
∞
10
H
∞
∞
∞
∞
13
8
10
∞
a) (2 Punkte) Zeichnen Sie den Graphen G in die gegebene Vorlage ein und geben
Sie die Adjazenzliste des Knotens E an.
Die Zahlen in der Matrix bezeichnen die Kantenkosten. Ein ∞ bedeutet, dass keine
Kante zwischen den entsprechenden Knoten existiert.
b) (7 Punkte) Führen Sie in dem Graphen G den Algorithmus von Kruskal zum
Finden eines minimalen Spannbaums durch. Notieren Sie die genaue Reihenfolge,
in der die Kanten in den Baum aufgenommen wurden (die Liste der Kanten ist
ausreichend, der MST muss nicht gezeichnet werden). Falls Sie einen Startknoten
benötigen, verwenden Sie dazu den Knoten A.
c) (3 Punkte) Ist der resultierende minimale Spannbaum aus Punkt (b) eindeutig?
Liefern die Algorithmen von Kruskal und Prim im Allgemeinen immer den selben
minimalen Spannbaum (bezogen auf Gesamtkosten und Kanten)? Begründen Sie
Ihre Antwort kurz!
d) (3 Punkte) Nehmen Sie an, Sie programmieren einen Algorithmus für ungerichtete
Graphen, bei denen kein Knoten mehr als 5 Nachbarn besitzt. Welche Darstellungsform für den Graphen ist aus Effizienzgründen zu wählen: Adjazenzmatrix
oder -liste?
Begründen Sie Ihre Antwort, indem Sie für beide Datenstrukturen eine Abschätzung des Aufwands zum Finden aller Nachbarn eines Knotens v ∈ V in
Θ-Notation angeben, jeweils in Abhängigkeit einer dafür geeigneten Größe.
Technische Universität Wien
Institut für Computergraphik und Algorithmen
Arbeitsbereich für Algorithmen und Datenstrukturen
186.172 Algorithmen und Datenstrukturen 1 VL 4.0
2. Übungstest SS 2009
09. Juni 2009
Machen Sie die folgenden Angaben bitte in deutlicher Blockschrift:
Vorname:
Nachname:
Matrikelnummer:
Studienkennzahl:
Anzahl abgegebener Zusatzblätter:
Legen Sie bitte Ihren Studentenausweis vor sich auf das Pult.
Sie können die Lösungen entweder direkt auf die Angabeblätter oder auf Zusatzblätter
schreiben, die Sie auf Wunsch von der Aufsicht erhalten. Es ist nicht zulässig, eventuell
mitgebrachtes eigenes Papier zu verwenden.
Die Verwendung von Taschenrechnern, Mobiltelefonen, Skripten, Büchern, Mitschriften,
Ausarbeitungen oder vergleichbaren Hilfsmitteln ist unzulässig.
Die Arbeitszeit beträgt 55 Minuten.
Erreichbare Punkte:
A1:
A2:
A3:
Summe:
18
16
16
50
Erreichte Punkte:
Viel Erfolg!
Aufgabe 1.A: Graphen
(18 Punkte)
a) (12 Punkte) Ein ungerichteter Graph G = (V, E) heißt bipartit, wenn man die
gesamte Knotenmenge V in zwei disjunkte Untermengen U und W so aufspalten
kann, dass für alle Kanten (u, w) ∈ E gilt: u ∈ U und w ∈ W .
Schreiben Sie einen möglichst effizienten Algorithmus, der berechnet, ob ein Graph
G bipartit ist. Geben Sie weiters die Laufzeit ihres Algorithmus in Abhängigkeit
der Anzahl der Knoten n im Worst-Case an.
b) (6 Punkte) Auf dem gegebenen Graphen wird die aus dem Skriptum bekannte
Tiefensuche durchgeführt. Welche der folgenden Listen von besuchten Knoten
können dabei in genau dieser Reihenfolge entstehen. Hinweis: Die Nachbarn eines
Knotens können in beliebiger Reihenfolge abgearbeitet werden.
Reihenfolge: A B C D E F G H I K
ja nein
Reihenfolge: A B D C G H I K F E
ja nein
Reihenfolge: B A D C G H I K F E
ja nein
Reihenfolge: A B C D H K F E I H
ja nein
Reihenfolge: K E F H I G C D A B
ja nein
Reihenfolge: C G I K E F H B D A
ja nein
Aufgabe 2.A: Optimierung
(16 Punkte)
Gegeben ist der folgende gewichtete ungerichtete Graph G:
a) (6 Punkte) Führen Sie in dem Graphen G den Algorithmus von Prim zum Finden
eines minimalen Spannbaums durch (die Zahlen bei den Kanten bezeichnen die
jeweiligen Kantenkosten). Zeichnen Sie den Spannbaum direkt im Graphen ein und
notieren Sie die genaue Reihenfolge, in der die Kanten in den Baum aufgenommen
wurden. Falls Sie einen Startknoten benötigen, verwenden Sie dazu den Knoten B.
b) (10 Punkte) Gegeben Sei folgender Algorithmus WasBinIch, der auf einen
Graphen G(V, E) angewendet wird und zusätzlich zwei Knoten s, t ∈ V als
Parameter erhält.
Algorithmus 1 WasBinIch(G(V, E), s, t)
1: fuer alle v ∈ V : d[v] = ∞;
2: d[s] = 0; Q = V ;
3: solange Q nicht leer {
4:
Entnimm jenes u aus Q mit minimalem d[u];
5:
falls d[u] = ∞ dann Ausgabe: Fehler & Abbruch des Algorithmus;
6:
falls u = t dann Ausgabe: d[t] & Abbruch des Algorithmus;
7:
für alle e = (u, v) mit v ∈ N (u) {
8:
falls d[v] > d[u] + we dann {
9:
d[v] = d[u] + we ;
10:
}
11:
}
12: }
• Beschreiben Sie kurz, was der Algorithmus WasBinIch in einem Graphen
berechnet und auf welchem aus der Vorlesung bekannten Prinzip dieser
Algorithmus beruht.
• Wenden Sie diesen Algorithmus auf den oben angeführten Graphen G an
(die Kantenbeschriftungen entsprechen dem Kantengewicht we zwischen
den verbundenen Knoten). Geben Sie die Ausgabe des Algorithmus an,
wenn dieser durch den Aufruf von WasBinIch (G(V, E), D, A) gestartet
wird. Tragen Sie weiters den Zustand des Feldes d nach der Ausführung des
Algorithmus in folgender Tabelle ein:
v∈V A B C D E F G
d[v]
Aufgabe 3.A: Hash und Suchverfahren
(16 Punkte)
a) (8 Punkte) Gegeben ist ein Feld, das die folgenden Strings in der angegebenen
Reihenfolge enthält:
halgodat, alt, hans, haselnuss, heinz, herbert, opa, petzii.
Führen Sie in diesem Feld eine Binärsuche nach dem String petzi durch. Geben
Sie dabei in jedem Schritt die jeweiligen Bereichsgrenzen an. Das erste Element
des Feldes hat Index 1, falls notwendig wird bei Indexberechnungen abgerundet.
Geben Sie die Laufzeit des Worst-Case für das Suchen eines Strings mit Binärsuche
innerhalb einer sortierte Folge in Θ-Notation an, und zwar in Abhängigkeit der
Anzahl der Elemente n und der maximalen Stringlänge k.
b) (8 Punkte) Gegeben ist eine Hashtabelle mit Tabellengröße m = 7, die zur Kollisionsbehandlung Double Hashing einsetzt.
h1 (k) = k mod 7
h2 (k) = (k + 1) mod 7
• Fügen Sie den Wert 14 in die folgende Tabelle ein:
0 1 2 3 4 5 6
21
24
12
• Fügen Sie den Wert 12 in die folgende Tabelle ein:
0 1 2 3 4 5 6
7
3 11 5
• Welches Problem kann beim Einfügen in die Hashtabelle bei der Verwendung
der oben angegebenen Hashfunktionen auftreten? Wie müssen die Funktionen
h1 (k) und/oder h2 (k) abgeändert werden, um dieses Problem zu beheben?
Herunterladen