Processing math: 100%
DokuWiki - fricklers.org

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
repds15:fragen-antworten [2015/10/04 15:52] 94.219.213.151repds15:fragen-antworten [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Fragen und Antworten ====== 
  
-Bitte setzt neue Fragen oben in das jeweilige Kapitel, damit die schon beantworten Fragen unten stehen. Bevor ihr eine Frage stellt, durchsucht bitte kurz diese Seite und die [[repds15:hausaufgaben_loes|Hausaufgaben-Lösungsseite]], damit es keine unnötige Arbeit gibt. 
- 
-**Vorlage:** 
-<WRAP round help> 
-Hier steht meine Frage... 
- 
-**Folgefrage**: Hier steht noch eine Frage, weil mir die Antwort nicht gefällt oder ich noch weitere Fragen zum selben Thema habe. 
-</WRAP> 
-**Antwort**: Hier steht meine Antwort. 
- 
----- 
- 
-**Laufzeit** 
-<WRAP round help> 
-Wie schätze ich die Laufzeit ab?  
- 
-<code> 
-i = n 
-j = c = 0 
- 
-for ( i=1; i<n; i++) 
-  for ( j=i; j<n; j=j*2) 
-     print c 
-</code> 
-</WRAP> 
-**Antwort**: Hier steht meine Antwort. 
- 
----- 
- 
-**Expansion** 
-<WRAP round help> 
- 
-Wenn wir nach der Expansion der Rekursionsgleichung beim kleinen Gauß landen, wissen wir ja dass die Laufzeit n2 beträgt. Wie lautet die Laufzeit aber, wenn wir ik oder ai anstatt nur dem i haben? Bzw was könnte hier in der Klausur noch relevant sein?  
-In der ersten Klausur war das Ergebnis dieser Aufgabe die geometrische Reihe mit Laufzeit 2n 
-</WRAP> 
-Soll i die Laufvariable der Summe sein? i=0,...,n? Falls ja: 
-**Antwort**: Bei ai hat man eine geometrische Summe. Statt ni=1ik könnt ihr auch einfach das Integral n1xkdx ausrechnen. 
-Ansonsten hilft für Abschätzung oft [[http://www.lkozma.net/inequalities_cheat_sheet/ineq.pdf|dieses nette PDF mit "useful inequalities"]]. 
- 
----- 
-**Asymptotisches Wachstum** 
-<WRAP round help> 
- 
-Welche Funktion wächst schneller, n! oder nlog2n ? 
-</WRAP> 
-**Antwort**:  
-<code> 
-from math import factorial, log2 
- 
-for i in range(1, 10000): 
-    a = factorial(i) 
-    b = i**log2(i) 
-    print(b/a)    # Das geht gegen 0. Was heißt das? 
-</code> 
- 
-Darf man beide Seiten logarithmieren und dann vergleichen? 
-**Antwort**: Das kann man machen, aber dann muss man aufpassen, dass man keine falschen Schlüsse zieht. Beispielsweise ist 2n/2=o(2n). Wenn man beide Seiten logarithmiert kommt man auf n/2 und n und diese beiden Terme wachsen bekanntlich gleich schnell. Daraus kann man jedoch nicht auf das Wachstum von 2n/2 und 2n schließen. 
-In der Aufgabe sieht das wie folgt aus:  
-  * log(n!)=ni=1log(i)n1log(x)dx=Θ(nlog(n)) 
-  * log(nlog(n))=log(n)log(n)=(log(n))2 
- 
-Daraus kann man also wirklich schließen, dass n! schneller wächst.  
- 
----- 
- 
-**Kantenbeziehungen:** 
-<WRAP round help> 
- 
-Hier haben wir ja die Bedingungen besprochen für Querkanten, Vorwärtskanten und Rückwärtskanten. In dem Fall A[u]>A[v] ist klar, dass der Knoten u vor dem Knoten v bei der Tiefensuche besucht wurde. Wie ist dann aber E[u]>E[v] zu verstehen? 
-</WRAP> 
-**Antwort**: Nein, A[u]>A[v] bedeutet, dass u später besucht wurde. Grafisch kannst du dir das so vorstellen, als würdest du mit deinem Ariadne-Faden um den Tiefensuchebaum herumlaufen und die Schritte zählen. Wenn du links von einem Knoten u bist, trägst du die Schrittzahl in A[u] ein, wenn du rechts neben dem Knoten u bist, trägst du E[u] ein. Siehe [[https://en.wikipedia.org/wiki/Tree_traversal]] 
- 
----- 
- 
-**Master-Theorem, 3 Fall:** 
-<WRAP round help> 
- 
-Hier war die Nebenbedingung zu beachten: af(n/b)αf(n) und 0<α<1 
- 
-Was sagt diese Ungleichung aus? 
-Gibt es ein Beispiel für den Fall, daß man den dritten Fall des Master-Theorems nicht anwenden kann, weil die Ungleichung nicht erfüllt ist? 
- 
-</WRAP> 
-**Antwort**: af(n/b) ist der Aufwand, der für die a rekursiven Aufrufe im nächsten Level des Rekursionsbaums anfällt. Angenommen die Nebenbedingung würde nicht gelten: af(n/b)>αf(n). Dann ist es teurer, die a rekursiven Aufrufe zu machen und entsprechend hält die Schranke T(n)=Θ(f(n)) nicht mehr. Für das Theta brauchen wir dann auch α<1, damit die Summe der Laufzeiten aller rekursiven Aufrufe im ganzen Rekursionsbaum insgesamt die Form einer geometrischen Summe haben. 
- 
-**Beispiel**: Wähle a=b=1 und f(n)=n. Dann ist f(n)=n=Ω(nε) für jedes 0<ε<1, aber af(n/b)=f(n)αf(n) gilt für kein α<1. 
- 
----- 
-==== Logarithmen ==== 
-<WRAP round help> 
-  - Wie berechne ich  
-  * log2(n4+3x) - hier macht mir das //3x// Probleme ;( 
-  * log10(2/n2) So scheint es nicht zu funktionieren: log10(2/n2)=log10(2)2log10(n)=? 
-</WRAP> 
-**Antwort**:  
-  * log2(n4+3x): Wenn das x eine Konstante ist bzw. für die Laufzeitanalyse nicht beachtet werden soll (also die Theta-Notation nur in Abhängigkeit von n benutzt wird), dann erhalten wir log2(n4+3x)=Θ(log2(n4))=Θ(log(n)). Falls es ein Schreibfehler war: log2(n4+3n)log2(n4+n4)=log2(2n4)=log2(2)+log2(n4)=1+4log2(n), wobei wir annehmen, dass n groß genug für die Ungleichung ist. Das dürfen wir, da wir nur an einer asymptotischen Betrachtung interessiert sind. Außerdem erhalten wir log2(n4+3n)log2(n4)=4log2(n) und somit insgesamt: 4log2(n)log2(n4+3n)1+4log2(n). Nach unten und oben ist es durch einen Θ(log2(n))-Term beschränkt. 
-  * log10(2/n2): Die Rechnung stimmt. Der Logarithmus darf auch negativ sein, denn die Exponentialfunktion erlaubt auch negative Exponenten. Für das Thema Laufzeitanalyse macht das jedoch keinen Sinn.