Praktisch - GAD-Trainer, 13. Juli 2013, Übungsaufgaben PDF

Title Praktisch - GAD-Trainer, 13. Juli 2013, Übungsaufgaben
Course Grundlagen Algorithmen und Datenstrukturen (IN0007)
Institution Technische Universität München
Pages 59
File Size 1.5 MB
File Type PDF
Total Downloads 479
Total Views 992

Summary

Aufgabe 0 (Kurzfragen)Wahr Falsch (a) GAD ist geil!!! :)   (b) f(n)∈o(g(n)) ⇒ f(n)∈O(g(n))   (c) Wennf(n) undg(n) nicht unvergleichbar sind, dann gilt: f(n)∈/Ω(g(n)) ⇒ f(n)∈O(g(n)) (d) f(n)∈Θ(g(n)) ⇒ f(n)∈o(g(n))   (e) f(n)∈O(g(n)) ⇒ f(n)∈Ω(g(n))   (f) f(n)∈O(g(n)) ⇒ f(n)∈/ω(g(n))   (g) ...


Description

Version 1.01

GAD-Trainer

13. Juli 2013

Aufgabe 0 (Kurzfragen) Wahr

Falsch









(a)

GAD ist geil!!! :)

(b)

f (n) ∈ o(g(n))

(c)

Wenn f (n) und g(n) nicht unvergleichbar sind, dann gilt: f (n) ∈ / Ω(g(n)) ⇒ f (n) ∈ O(g(n))





(d)

f (n) ∈ Θ(g(n))



f (n) ∈ o(g (n))





(e)

f (n) ∈ O(g (n))



f (n) ∈ Ω(g(n))





(f)

f (n) ∈ O(g (n))



f (n) ∈ / ω(g(n))





(g)

Es eixistieren 1-universelle Hashfamilien, die eine Funktion beinhalten, welche alle Keys auf einen einzigen Wert hasht.





(h)

AVL-B¨aume wurden von den drei Mathematikern Adelson, Velsky und Landis 1962 am MIT entwickelt.





(i)

Die locate-Operation bei Bin¨aren Suchb¨aumen liegt im Worst Case in Θ(log(n)).





(j)

Die Anzahl der Elemente in einem Binomial-Baum ist immer gleich einer Zweierpotenz.





(k)

Die effiziente build -Methode, die man bei Bin¨aren Heaps verwendet und die in O(n) liegt, darf auch bei Binomial-Heaps angewendet werden.





(l)

Jeder vollst¨andige Bin¨arbaum der Tiefe t ist auch ein fast vollst¨ andiger Bin¨arbaum der Tiefe t.











f (n) ∈ O(g(n))

(m) F¨ur das Sortieren von 2 Terrabyte Daten eignet sich insbesondere der Merge-Sort-Algorithmus. . (n)

Die Laufzeit der find-Operation bei B ∗ -B¨aumen ist in der Regel besser als die bei (a, b)-B¨aumen .





(o)

Ein Fibonaccibaum der Tiefe t gleicht einem AVL-Baum der Tiefe t mit minimal vielen Knoten.





(p)

In einem Fibonaccibaum haben alle Knoten bis auf die Bl¨ atter eine Balancierungszahl von -1.





(q)

Das Ziel von Perfektem Hashing ist es, auch im Worst Case f¨ ur die find-Operation eine konstante Laufzeit zu garantieren.





(r)

Ein dynamisches Array mit α = 4 und β = 3 der Gr¨oße w = 9 enth¨alt 3 Elemente. Nach dem L¨ oschen eines weiteren Elementes muss die Gr¨oße des Arrays halbiert werden.





(s)

Die amortisierte Laufzeit einer Folge von Operationen ist stets eine obere Schranke f¨ur die tats¨achliche Laufzeit der Folge.





2

Version 1.01

GAD-Trainer

13. Juli 2013

Wahr

Falsch

(t)

MergeSort hat eine Worst Case Laufzeit in O(n log n) und eine Best Case Laufzeit in Ω(n log n).





(u)

Die Worst Case Laufzeit des QuickSort-Algorithmus liegt in O(n log n), vorausgesetzt man w¨ahlt des Pivotelement jeweils zuf¨allig.





(v)

Mit Hilfe des Master Theorems kann man die Laufzeit von beliebigen rekursiven Algorithmen absch¨atzen.





(w) Bin¨are Heaps eignen sich, wenn man eine Datenstruktur zur effizienten Suche von Objekten ben¨otigt.





(x)

Ohne den min-Pointer w¨urde die Bestimmung des Minimums in Binomial-Heaps im Worst Case eine Laufzeit in Ω(log n) ben¨otigen.





(y)

Eine einzelne decreaseKey Operation von Fibonacci-Heaps hat stets konstante Laufzeit.





(z)

Die Laufzeit eines Algorithmus h¨angt nicht nur vom zugrunde liegenden Kostenmodell, sondern auch von der Kodierung der Eingabe ab.





3

Version 1.01

GAD-Trainer

13. Juli 2013

Wahr

Falsch









(a)

GAD ist geil!!! :)

(b)

f (n) ∈ o(g(n))

(c)

Wenn f (n) und g(n) nicht unvergleichbar sind, dann gilt: f (n) ∈ / Ω(g(n)) ⇒ f (n) ∈ O(g (n))





(d)

f (n) ∈ Θ(g(n))



f (n) ∈ o(g(n))





(e)

f (n) ∈ O(g(n))



f (n) ∈ Ω(g(n))





(f)

f (n) ∈ O(g(n))



f (n) ∈ / ω(g(n))





(g)

Es eixistieren 1-universelle Hashfamilien, die eine Funktion beinhalten, welche alle Keys auf einen einzigen Wert hasht.





(h)

AVL-B¨aume wurden von den drei Mathematikern Adelson, Velsky und Landis 1962 am MIT entwickelt.





(i)

Die locate-Operation bei Bin¨aren Suchb¨ aumen liegt im Worst Case in Θ(log(n)).





(j)

Die Anzahl der Elemente in einem Binomial-Baum ist immer gleich einer Zweierpotenz.





(k)

Die effiziente build -Methode, die man bei Bin¨aren Heaps verwendet, darf auch bei Binomial-Heaps angewendet werden.





(l)

Jeder vollst¨andige Bin¨arbaum der Tiefe t ist auch ein fast vollst¨andiger Bin¨arbaum der Tiefe t.



.







f (n) ∈ O(g (n))

(m) F¨ur das Sortieren von 2 Terrabyte Daten eignet sich insbesondere der Merge-Sort-Algorithmus. (n)

Die Laufzeit der find-Operation bei B ∗ -B¨aumen ist in der Regel besser als die bei (a, b)-B¨aumen .





(o)

Ein Fibonaccibaum der Tiefe t gleicht einem AVL-Baum der Tiefe t mit minimal vielen Knoten.





(p)

In einem Fibonaccibaum haben alle Knoten bis auf die Bl¨atter eine Balancierungszahl von -1.





(q)

Das Ziel von Perfektem Hashing ist es, auch im Worst Case f¨ur die find-Operation eine konstante Laufzeit zu garantieren.





(r)

Ein dynamisches Array mit α = 4 und β = 3 der Gr¨oße w = 9 enth¨alt 3 Elemente. Nach dem L¨ oschen eines weiteren Elementes muss die Gr¨oße des Arrays halbiert werden.





(s)

Die amortisierte Laufzeit einer Folge von Operationen ist stets eine obere Schranke f¨ur die tats¨ achliche Laufzeit der Folge.





4

Version 1.01

GAD-Trainer

13. Juli 2013

Wahr

Falsch

(t)

MergeSort hat eine Worst Case Laufzeit in O(n log n) und eine best case Laufzeit in Ω(n log n).





(u)

Die Worst Case Laufzeit des QuickSort-Algorithmus liegt in O(n log n), vorausgesetzt man w¨ahlt des Pivotelement jeweils zuf¨allig.





(v)

Mit Hilfe des Master Theorems kann man die Laufzeit von beliebigen rekursiven Algorithmen absch¨atzen.





(w) Bin¨are Heaps eignen sich, wenn man eine Datenstruktur zur effizienten Suche von Objekten ben¨otigt.





(x)

Ohne den min-Pointer w¨urde die Bestimmung des Minimums in Binomial-Heaps im Worst Case eine Laufzeit in Ω(log n) ben¨otigen.





(y)

Eine einzelne decreaseKey Operation von Fibonacci-Heaps hat stets konstante Laufzeit.





(z)

Die Laufzeit eines Algorithmus h¨angt nicht nur vom zugrunde liegenden Kostenmodell, sondern auch von der Kodierung der Eingabe ab.





5

Version 1.01

GAD-Trainer

Aufgabe 1 (Landau-Symbole)   √ Zeigen Sie n ∈ Ω ln(nln(n) ) . √ √ √ n n n f (n) = lim lim = lim = lim n→∞ ln(n) ln(n) n→∞ g(n) n→∞ ln(nln(n) ) n→∞ ln(n)2 √ 1 n−1/2 n−1/2 n l′ H 2 = lim = lim = lim n→∞ 4 n−1 n→∞ 2 ln(n) n−1 n→∞ 4 ln(n) 1 2

l′ H

√ n = ∞ n→∞ 8   √ = ∞, folgt n ∈ Ω ln(nln(n) ) . = lim

Da 0 < limn→∞

√ n ln(nln(n) )

Aufgabe 2 (Landau-Symbole) Zeigen Sie n! ∈ o(nn+1 ). lim

n→∞

n · (n − 1) · (n − 2) · . . . · 2 · 1 n! f (n) = lim n+1 = lim n→∞ n→∞ nn+1 n g(n) 1 nn =0 = lim n+1 n→∞ n n→∞ n

≤ lim Da limn→∞

n! nn+1

= 0 folgt n! ∈ o(nn+1 ).

6

13. Juli 2013

Version 1.01

GAD-Trainer

13. Juli 2013

Aufgabe 3 (Landau-Symbole) Zeigen Sie ln(n!) ∈ Θ(n ln(n)). Es gilt f (n) ∈ Θ(g(n))



f (n) ∈ O(g(n)) und f (n) ∈ Ω(g(n)).

ln(n!) ∈ O(n ln(n)): lim

n→∞

Pn ln(n!) f (n) i=1 ln(i) = lim = lim n→∞ n ln(n) n→∞ n ln(n) g(n) i=1 ln(n)

≤ lim

n→∞

Wegen limn→∞

ln(n!) n ln(n)

Pn

n ln(n)

= lim

n→∞

n ln(n) n ln(n)

= 1

≤ 1 < ∞ ist ln(n!) ∈ O(n ln(n)).

ln(n!) ∈ Ω(n ln(n)): Pn ln(n!) f (n) i=1 ln(i) = lim = lim n→∞ n ln(n) n→∞ n ln(n) n→∞ g(n) lim

≥ lim

n→∞

Pn

⌋ ln(i) i=⌊ n 2

n ln(n)

≥ lim

n→∞

Pn

⌋ i=⌊ n 2

ln(⌊ n2 ⌋)

n ln(n)

n ln(⌊ n2 ⌋) ⌈ n2 ⌉ ln(⌊ n2 ⌋) ≥ lim 2 n→∞ n ln(n) n→∞ n ln(n)

= lim

≥ lim

n 2

n→∞

ln( n2 − 1) ln( n2 − 1) = lim n→∞ 2 ln(n) n ln(n) 1

l′ H

=

lim

n→∞

= lim

n→∞

Wegen 0 <

1 2

≤ limn→∞

ln(n!) n ln(n)

n −1 2



· 21

= lim

1 n

n→∞

n · 4

n 2

1 −1

1 n 1 l′ H = lim = n→∞ 2 2 2n − 4 ist ln(n!) ∈ Ω(n ln(n)).

Insgesamt ist daher ln(n!) ∈ Θ(n ln(n)).

7

Version 1.01

GAD-Trainer

13. Juli 2013

Aufgabe 4 (Landau-Symbole) Gegeben seien die folgenden Funktionen von N nach R: f1 = n1+cos(n·π) f2 = log5 (n2 ) f3 = 5n f4 = 3 log6 (n)

f5 = 1337 √ f6 = (ln( n))2 √ f7 = ln(ln( n))

f8 = 3n+1 f9 = 1 + (1 + (−1)n ) n2 f10 = 15 n + (sin(n · π))2

Kreuzen Sie in den Zeilen (a) bis (f) jeweils ∆ = o“ an, wenn a(n) ∈ o(b(n)) gilt, ” kreuzen Sie ∆ = O“ an, wenn a(n) ∈ O(b(n)) gilt, ” kreuzen Sie ∆ = ω“ an, wenn a(n) ∈ ω(b(n)) gilt, ” kreuzen Sie ∆ = Ω“ an, wenn a(n) ∈ Ω(b(n)) gilt, ” und kreuzen Sie Unvergleichbar “ an, wenn die beiden betrachteten Funktionen unvergleichbar ” sind. Berg¨ unden Sie Ihre Antworten jeweils mit einem kurzen Beweis. (a) f5 ∈ ∆(f2 )

∆=o

∆=O

∆=ω

∆=Ω

 Unvergleichbar

(b) f6 ∈ ∆(f7 )

∆=o

∆=O

∆=ω

∆=Ω

 Unvergleichbar

(c) f3 ∈ ∆(f8 )

∆=o

∆=O

∆=ω

∆=Ω

 Unvergleichbar

(d) f2 ∈ ∆(f4 )

∆=o

∆=O

∆=ω

∆=Ω

 Unvergleichbar

(e) f5 ∈ ∆(f10 )

∆=o

∆=O

∆=ω

∆=Ω

 Unvergleichbar

(f) f1 ∈ ∆(f10 )

∆=o

∆=O

∆=ω

∆=Ω

 Unvergleichbar

(g) f1 ∈ ∆(f9 )

∆=o

∆=O

∆=ω

∆=Ω

 Unvergleichbar

(a) f5 ∈ ∆(f2 )

⊠∆=o

⊠∆=O

∆=ω

∆=Ω

 Unvergleichbar

(b) f6 ∈ ∆(f7 )

∆=o

∆=O

⊠∆=ω

⊠∆=Ω

 Unvergleichbar

(c) f3 ∈ ∆(f8 )

∆=o

∆=O

⊠∆=ω

⊠∆=Ω

 Unvergleichbar

(d) f2 ∈ ∆(f4 )

∆=o

⊠∆=O

∆=ω

⊠∆=Ω

 Unvergleichbar

(e) f5 ∈ ∆(f10 )

⊠∆=o

⊠∆=O

∆=ω

∆=Ω

 Unvergleichbar

(f) f1 ∈ ∆(f10 )

∆=o

∆=O

∆=ω

∆=Ω

⊠ Unvergleichbar

(g) f1 ∈ ∆(f9 )

∆=o

⊠∆=O

∆=ω

⊠∆=Ω

 Unvergleichbar

8

Version 1.01

GAD-Trainer

13. Juli 2013

(a) lim

n→∞

1337 = 0 log5 (n2 )



1337 ∈ o(log5 (n2 ))

1337 ∈ O(log5 (n2 ))



(b) 2   1 √ 2 1 ln(n) 2 ln(n) ln( n) 2 4    = lim   lim √ = lim n→∞ ln 1 ln(n) n→∞ ln ln( n) n→∞ ln ln(n) + ln( 1 ) 2 2 

l′ H

=





lim

n→∞

1 2

ln(n) n1

= lim

1 1 ln(n) n

n→∞

 √  √ 2 ln( n) ∈ ω(ln ln( n) )







ln(n) 2

2

= ∞

 √  √ 2 ln( n) ∈ Ω(ln ln( n) )

(c) 1 5n 5n = lim = lim n+1 n→∞ 3 · 3n n→∞ 3 3

lim

n→∞



5n ∈ ω(3n+1 )



 n 5 = ∞ 3

5n ∈ Ω(3n+1 )

(d) lim

n→∞

n) 2 log( log(36) 2 log5 (n) 2 log(6) log5 (n2 ) log(5) = lim = = lim = lim log( n ) n→∞ 3 n→∞ 3 log6 (n) n→∞ 3 log(5) 3 log6 (n) log(125) log(6)



0 < lim

n→∞

log5 (n2 ) log(36) < ∞ = log(125) 3 log6 (n)



log 5 (n2 ) ∈ Θ(3 log6 (n))

(e) lim

n→∞



1337 1337 = 0 = lim n→∞ 15 n + 0 15 n + (sin(n · π))2

1337 ∈ o(15 n + (sin(n · π))2 )



1337 ∈ O(15 n + (sin(n · π))2 )

(f) Fall 1: Sei n = 2k mit k ∈ N. lim

n→∞

n n1+1 n2 n1+cos(n·π ) = lim = lim = ∞ = lim 2 n→∞ 15 n + 0 n→∞ 15 n n→∞ 15 15 n + (sin(n · π)) ⇒ n1+cos(n·π) ∈ ω(15 n + (sin(n · π))2 )

9

Version 1.01

GAD-Trainer

13. Juli 2013

Fall 2: Sei n = 2k + 1 mit k ∈ N. lim

n→∞

1 n0 n1+(−1) n1+cos(n·π ) = lim = 0 = lim = lim 2 n→∞ n→∞ n→∞ 15 n 15 n 15 n + 0 15 n + (sin(n · π)) ⇒ n1+cos(n·π) ∈ o(15 n + (sin(n · π))2 )

F¨ur gerade n gilt n1+cos(n·π) ∈ ω(15 n + (sin(n · π))2 ), f¨ ur ungerade n gilt jedoch n1+cos(n·π) ∈ o(15 n + (sin(n · π))2 ). Somit sind die beiden Funktionen unvergleichbar. (g) Fall 1: Sei n = 2k mit k ∈ N. lim

n→∞



0 < lim

n→∞

n1+1 n2 n1+cos(n·π ) 1 = lim = lim = n→∞ 1 + (1 + 1) n2 n→∞ 1 + 2 n2 1 + (1 + (−1)n ) n2 2 n1+cos(n·π ) 1 = < ∞ 1 + (1 + (−1)n ) n2 2



n1+cos(n·π) ∈ Θ(1 + (1 + (−1)n ) n2 )

Fall 2: Sei n = 2k + 1 mit k ∈ N. lim

n→∞



0 < lim

n→∞

n0 n1+(−1) n1+cos(n·π ) = lim = lim = 1 n→∞ 1 + 0 n2 n→∞ 1 + (1 + (−1)) n2 1 + (1 + (−1)n ) n2 n1+cos(n·π ) =1 < ∞ 1 + (1 + (−1)n ) n2



n1+cos(n·π) ∈ Θ(1 + (1 + (−1)n ) n2 )

F¨ur gerade und ungerade n gilt somit stets n1+cos(n·π) ∈ Θ(1 + (1 + (−1)n ) n2 ).

10

Version 1.01

GAD-Trainer

13. Juli 2013

Aufgabe 5 (Dynamische Arrays) F¨uhren Sie folgende Operationen auf einem leeren dynamischen Array (Arraygr¨oße zu Beginn: w=1) aus: pushBack(1), pushBack(2), pushBack(3), pushBack(4), pushBack(5), popBack(), popBack(), popBack(), popBack(), popBack() Verwenden Sie einmal die Parameter α = 4, β = 2 und einmal α = 5, β = 3. Mit Parametern α = 4, β = 2: leeres Array zu Beginn: pushBack(1): 1 pushBack(2): 1 1 2 pushBack(3): 1 2 1 pushBack(4): 1 2 3 4 pushBack(5): 1 2 3 4 popBack(): 1 2 3 4 popBack(): 1 2 3 popBack(): 1 2 popBack(): 1 1 popBack():

2

3 1

1

2

3

4

5

2

Mit Parametern α = 5, β = 3: leeres Array zu Beginn: pushBack(1): 1 pushBack(2): 1 1 2 pushBack(3): 1 2 3 pushBack(4): 1 2 3 pushBack(5): 1 2 3 4 5 popBack(): 1 2 3 4 popBack(): 1 2 3 popBack(): 1 2 popBack(): 1 popBack():

1

2

1

11

3

4

Version 1.01

GAD-Trainer

13. Juli 2013

Aufgabe 6 (Amortisierte Analyse) Gegeben sei ein Stack S, der die folgenden Operationen unterst¨utzt: 1. push(x): legt Element x auf S 2. pop(): entfernt oberstes Element von S 3. multipop(k): entfernt mit k-maligem pop() die obersten k Elemente aus S; falls S weniger als k Elemente enth¨alt, werden alle Elemente aus S entfernt a) Wir betrachten nun Folgen von m hintereinander auszuf¨uhrenden Operationen. Die Operationen push(x) und pop() haben offensichtlich konstante Lauzeit. Bestimmen Sie die Worst Case Laufzeit von multipop(k) in Abh¨angigkeit von m. Geben Sie ausgehend von dieser Laufzeit zus¨atzlich eine (pessimistische) obere Schranke f¨ur die Laufzeit der gesamten Operationsfolge in Abh¨angigkeit von m an. b) Zeigen Sie mit Hilfe der Kontomethode, dass die tats¨achliche Laufzeit der Operationsfolge in O(m) ist. a) Der Worst Case f¨ur multipop(k) sieht folgendermaßen aus: Es wurden mit den ersten m − 1 Operationen m − 1 Elemente mit push(x) auf den Stack abgelegt. Diese werden nun mit multipop(m-1) allesamt entfernt, was zu einer Worst Case Laufzeit von O(m) ((m-1)-maliges Ausf¨uhren von pop()) f¨ur eine einzelne multipop Operation f¨uhrt. Da insgesamt bis zu m solcher Aufrufe von multipop m¨oglich sind, erhalten wir als pessimistische Absch¨atzung f¨ur die gesamte Operationsfolge m · O(m) = O(m2 ). b) Idee: Jedes Element, das mit push(x) auf den Stack kommt, zahlt ein Token auf das Konto ein. Dieses Token wird beim Entfernen des Elements durch pop() oder multipop(k) wieder vom Konto abgehoben. So ist auch unmittelbar sichergestellt, dass der Kontostand nie negativ werden kann. ¨ Uberpr¨ ufen wir nun, ob wir mit diesem Ansatz auch die gew¨unschten amortisierten Laufzeiten erhalten (l bezeichne wie in den ¨Ubungen die tats¨achliche Laufzeit der Operation, ∆ die Kontobewegung): α(push) = l(push) + ∆(push) = 1 + 1 = 2 ∈ O(1) α(pop) = l(pop) + ∆(pop) = 1 − 1 = 0 ∈ O(1) α(multipop) = l(multipop) + ∆(multipop) = min(k, |S|) − min(k, |S|) = 0 ∈ O(1) Da alle Operationen eine amortisierte Laufzeit in O(1) haben, ergibt sich eine amortisierte Laufzeit f¨ur die gesamte Folge in m · O(1) = O(m). Die amortisierte Laufzeit einer Operationsfolge ist eine obere Schranke f¨ur die tats¨achliche Laufzeit der Folge. Deshalb muss auch die tats¨achliche Laufzeit in O(m) sein. Wir sehen also, dass die amortisierte Analyse eine sehr viel bessere asymptotische Ansch¨atzung liefert als die pessimistische Absch¨atzung aus Teilaufgabe a).


Similar Free PDFs