Lösungsvorschläge

KIT
Jun.-Prof. Henning Meyerhenke, Jun.-Prof. Dennis Hofheinz
Institut f¨
ur Theoretische Informatik
Christian Staudt, Christoph Striecks
¨
4. Ubungsblatt
zu Algorithmen I im SS 2015
https://crypto.iti.kit.edu/algo-sose15
{staudt,striecks}@kit.edu
Mit Lo
agen
¨sungsvorschl¨
Aufgabe 1
(Hashing, 2 + 3 + 1 + 1 Punkte)
Sei eine anfangs leere Hashtabelle gegeben, die nat¨
urliche Zahlen speichert und 17 Eintr¨age besitzt.
Weiterhin sei h mit ha,b (x) = (ax + b) mod 17 eine Hashfunktion, f¨
ur Konstanten a, b ∈ N.
a) Nutzen Sie das Hashing mit verketteten Listen, indem Sie jeweils den Hashwert der Elemente
24, 35, 41, 31, 9, 27, 15, 45, 10, 17, 21, 4, 18, 13, 47, 55
bilden und in die Hashtabelle einf¨
ugen. (Dabei seien a = 2 und b = 7 die Konstanten der
Hashfunktion h.) Geben Sie eine Darstellung der Hashtabelle nach dem Einf¨
ugen der Hashwerte
von 45 und 55 an.
b) Nutzen Sie das Hashing mit linearer Suche (und Puffergr¨oße m0 = 3), um jeweils die Hashwerte
der Elemente aus a) in eine neue anfangs leere Hashtabelle einzutragen. (Dabei seien a = 2 und
b = 7.) Geben Sie eine Darstellung der Hashtabelle nach dem Einf¨
ugen der Hashwerte von 45
und 55 an.
c) Wie viele Hashtabelleneintr¨
age werden beim Einf¨
ugen der Elemente in a) und b) jeweils betrachtet?
d) Wie groß ist der Speicherverbrauch der Hashtabellen aus a) und b) in Einheiten, wenn jeder
Zeiger und jedes Element der Hashtabelle eine Einheit belegen? (Gehen Sie von verketteten
Listen aus der Vorlesung aus.)
Lo
¨sungsvorschlag:
Wir erhalten nach Auswertung der Hashfunktion: h(24) = 4, h(35) = 9, h(41) = 4, h(31) = 1, h(9) =
8, h(27) = 10, h(15) = 3, h(45) = 12, h(10) = 10, h(17) = 7, h(21) = 15, h(4) = 15, h(18) = 9, h(13) =
16, h(47) = 16 und h(55) = 15.
a) Nach Einf¨
ugen des Hashwerts von 45 ergibt sich:
0
1
2
3
4
5
6
7
8
31
15 41
9
24
Nach Einf¨
ugen des Hashwerts von 55 ergibt sich:
0
1
2
3
4
5
6
7
8
31
15 41
17 9
24
b) Nach Einf¨
ugen des Hashwerts von 45 ergibt sich:
0
1
2
3
4
5
6
7
8
9
10
31
15 24 41
9
35 27
1
9
35
10
27
11
12
45
13
14
15
16
9
18
35
10
10
27
11
12
45
13
14
15
55
4
21
16
47
13
13
14
11
12
45
15
16
17
18
19
Nach Einf¨
ugen des Hashwerts von 55 ergibt sich:
0
1
2
3
4
5
6
7
8
9
10
31
15 24 41
17 9
35 27
11
10
12
45
13
18
14
15
21
16
4
17
13
18
47
19
55
c) Mit “betrachten” war hier gemeint, auf wie viele Hasheintr¨age beim Einf¨
ugen zugegriffen wird.
– Hashing mit einfach verketteten Listen (wobei beim Erzeugen der Hashtabelle noch keine
Listen angelegt werden, erst beim ersten Einf¨
ugen eines Elements wird eine leere Liste
mit Dummy-Element erzeugt): Nach dem Einf¨
ugen von ha,b (45) sind es 16 (Elemente und
Dummy-Elemente), nach Einf¨
ugen von ha,b (55) sind es 32.
– Hashing mit linearer Suche: Nach dem Einf¨
ugen von ha,b (45) sind es 9, nach Einf¨
ugen von
ha,b (55) sind es 30 Eintr¨
age.
Weitere L¨
osungen sind denkbar, wenn “betrachten” anders ausgelegt wird.
d)
– Hashing mit einfach verketteten Listen (wobei beim Erzeugen der Hashtabelle noch keine
Listen angelegt werden, erst beim ersten Einf¨
ugen eines Elements wird eine leere Liste mit
Dummy-Element erzeugt): 2 · 16 + 2 · 10 = 52 (Elemente und Zeiger + Dummy-Element und
Zeiger)
– Hashing mit linearer Suche: 16
Weitere L¨
osungen sind denkbar. (Zum Beispiel k¨onnen beim Erzeugen der Hashtabelle f¨
ur jeden
Eintrag leere Listen angelegt werden oder es k¨onnten doppelt verkettete Listen verwendet werden,
etc.)
Aufgabe 2
(Plagiatsdetektor, 2 + 2)
Ein Paar von Zeichenketten {s1 , s2 } heißt ’k-verd¨achtig’, wenn beide Strings einen Substring der L¨
ange
≥ k gemeinsam haben.
a) Entwerfen Sie einen effizienten Algorithmus, der als Eingabe eine Menge von n Strings sowie eine
positive Ganzzahl k erh¨
alt und als Ausgabe alle k-verd¨achtigen Paare zur¨
uckgibt. Nehmen Sie
an, dass die meisten Paare nicht k-verd¨achtig sind. Verwenden Sie f¨
ur die Implementierung die
aus der Vorlesung bekannte Datenstruktur Hashtabelle.
b) Analysieren Sie die Laufzeit Ihres Algorithmus in Abh¨angigkeit von n und k. Sie k¨onnen voraussetzen, dass sich ein String der L¨
ange k in Zeit O(k) hashen l¨asst.
L¨
osungsvorschlag:
ange der i-ten Zeichenkette. F¨
ur jede Zeichenkette k¨onnen wir li − k + 1 Hashwerte
a) Sei li die L¨
berechnen, einen f¨
ur jeden Substring der L¨ange k. Wir f¨
ugen diese Hashwerte in eine Hashtabelle
und halten zus¨
atzlich fest, zu welchem String ein Hashwert geh¨ort, sowie den Offset, an dem
der entsprechende Substring auftritt. Eine Kollision zeigt an, dass zwei Substrings der L¨
ange k
potentiell identisch sind.
b) Ein String der L¨
ange l hat l − k + 1 Substrings der L¨ange k. Sei lmax die maximale L¨ange eines
Strings aus der Eingabe. F¨
ur jeden Substring muss ein Hashwert in Zeit Th (k) ∈ O(k) berechnet
werden. Zur Plagiatserkennung muss dies f¨
ur jeden der n Strings aus der Eingabe ausgef¨
uhrt
werden. Damit ergibt sich ein Algorithmus der n Strings in Laufzeit
T (n) ≤ n · (lmax − k + 1) · Th (k)
verarbeitet. Asymptotisch ist die Laufzeit damit in O(n · lmax · k).
2
Aufgabe 3
(Wahrscheinlichkeitstheorie, 1 + 1 + 1 + 2 (Zusatzpunkte))
Der ebenso geniale wie einfallsreiche Wissenschaftler und Superb¨osewicht Doktor Meta ist gesch¨
aftig.
Da er sich auf seine menschlichen Gehilfen nicht verlassen kann, hat er beschlossen, einen willenlosen
Automaten in Form eines mechanischen Arbeiters herzustellen. Von Donnerschl¨agen begleitet beginnt
er die Arbeit an dieser neuartigen Erfindung, die er Ro-bo-ter nennt. Der Bausatz eines schwedischen
M¨obelhauses (røbøt) enth¨
alt neben einem Inbusschl¨
ussel einen jeweils unersch¨opflichen Vorrat an
426 unterschiedlichen Komponenten. Beim Zusammenbau muss Doktor Meta darauf achten, nicht
versehentlich zweimal das gleiche Teil zu verbauen, da dies zu einem unbrauchbaren Gehilfen f¨
uhren
w¨
urde. Er geht dabei folgendermaßen vor: Er zieht mit Zur¨
ucklegen zuf¨allig gleichverteilt n Zahlen aus
der Menge {1, . . . , 426}. Sei x = (x1 , x2 , ..., xn ) die Folge der gezogenen Zahlen.
a) Wie viele paarweise verschiedene Folgen x kann es geben?
b) Wie viele paarweise verschiedene Folgen x kann es geben, sodass f¨
ur jede Folge gilt: ∀i, j ∈
{1, . . . , n}, i 6= j : xi 6= xj ?
c) Berechnen Sie die relative H¨
aufigkeit f¨
ur die Folgen aus b).
d) Zusatzaufgabe. Wie groß darf n maximal gew¨ahlt werden, sodass die relative H¨aufigkeit f¨
ur die
Folgen aus b) gr¨
oßer oder gleich 0.5 betr¨agt?
Hinweis: Vereinfachen
Sie zun¨
achst Ihr Ergebnis aus c) mithilfe der N¨aherung f¨
ur große Zahlen
√
n
n ∈ N: n! ≈ 2πn(n/e) . Versuchen Sie nicht, Ihre Formel nach n aufzul¨osen, eine numerische
L¨osung gen¨
ugt.
L¨
osungsvorschlag:
a) Insgesamt gibt es 426n paarweise verschiedene Folgen von x.
b) Wir erhalten 426 · 461 · · · (426 − (n − 1)) = 426!/(426 − n)! paarweise verschiedene Folgen von x
mit den oben genannten Eigenschaften.
c) Die relative H¨
aufigkeit betr¨
agt
426!
(426−n)!·426n .
d) Wir vereinfachen die Formel aus b) zu (426/(426 − n))(426.5−n) · e(−n) und erhalten n ≤ 24.
3