Trace:
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
repds15:fragen-antworten [2015/09/27 13:15] – 78.50.221.146 | repds15:fragen-antworten [2015/10/04 18:20] – mario | ||
---|---|---|---|
Line 13: | Line 13: | ||
---- | ---- | ||
- | **Kantenbeziehungen** | + | **Laufzeit** |
+ | <WRAP round help> | ||
+ | Wie schätze ich die Laufzeit ab? | ||
+ | |||
+ | < | ||
+ | i = n | ||
+ | j = c = 0 | ||
+ | |||
+ | for ( i=1; i<n; i++) | ||
+ | for ( j=i; j<n; j=j*2) | ||
+ | print c | ||
+ | </ | ||
+ | </ | ||
+ | **Antwort**: | ||
+ | < | ||
+ | for ( i=1; i<n/2; i++) | ||
+ | for ( j=n/2; j<n; j=j*2) | ||
+ | </ | ||
+ | < | ||
+ | Somit sind die obere und untere Schranke identisch und wir erhalten $\Theta(n \log(n))$ als Laufzeit.</ | ||
+ | |||
+ | **Achtung (Fehlerkorrektur)**: | ||
+ | |||
+ | **Folgefrage**: | ||
+ | Ich habe das mal codiert und war über das Ergebnis T(n)= 2n verwundert. | ||
+ | Für j=1 statt j=i stimmt jedoch $O(n \log n)$, was ich auch vermutet hatte. | ||
+ | Vielleicht kann jemand den Code mal nachvollziehen. | ||
+ | |||
+ | < | ||
+ | void f5 (int n) // n = 1000000 | ||
+ | { | ||
+ | int i = n; | ||
+ | int j = 0; | ||
+ | int c = 0; | ||
+ | { | ||
+ | for ( i = 1; i < n; i++ ) | ||
+ | for ( j = i; j < n; j *= 2 ) | ||
+ | { cout << | ||
+ | } | ||
+ | } // Aufruf f5(1000000) ergibt: | ||
+ | </ | ||
+ | **" | ||
+ | |||
+ | **" | ||
+ | |||
+ | **" | ||
+ | ---- | ||
+ | |||
+ | **Expansion** | ||
+ | <WRAP round help> | ||
+ | |||
+ | Wenn wir nach der Expansion der Rekursionsgleichung beim kleinen Gauß landen, wissen wir ja dass die Laufzeit $n^2$ beträgt. Wie lautet die Laufzeit aber, wenn wir $i^k$ oder $a^i$ 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 $2^n$ | ||
+ | </ | ||
+ | Soll $i$ die Laufvariable der Summe sein? i=0,...,n? Falls ja: | ||
+ | **Antwort**: | ||
+ | Ansonsten hilft für Abschätzung oft [[http:// | ||
+ | |||
+ | ---- | ||
+ | **Asymptotisches Wachstum** | ||
+ | <WRAP round help> | ||
+ | |||
+ | Welche Funktion wächst schneller, $n!$ oder $n^{log_2n}$ ? | ||
+ | </ | ||
+ | **Antwort**: | ||
+ | < | ||
+ | from math import factorial, log2 | ||
+ | |||
+ | for i in range(1, 10000): | ||
+ | a = factorial(i) | ||
+ | b = i**log2(i) | ||
+ | print(b/ | ||
+ | </ | ||
+ | |||
+ | Darf man beide Seiten logarithmieren und dann vergleichen? | ||
+ | **Antwort**: | ||
+ | In der Aufgabe sieht das wie folgt aus: | ||
+ | * $\log(n!) = \sum_{i=1}^n \log(i) \approx \int_1^n \log(x) dx = \Theta(n \log(n))$ | ||
+ | * $\log(n^{\log(n)}) = \log(n) \cdot \log(n) = (\log(n))^2$ | ||
+ | |||
+ | Daraus kann man also wirklich schließen, dass $n!$ schneller wächst. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **Kantenbeziehungen:** | ||
<WRAP round help> | <WRAP round help> | ||
Hier haben wir ja die Bedingungen besprochen für Querkanten, Vorwärtskanten und Rückwärtskanten. In dem Fall A[u]> | Hier haben wir ja die Bedingungen besprochen für Querkanten, Vorwärtskanten und Rückwärtskanten. In dem Fall A[u]> | ||
+ | </ | ||
+ | **Antwort**: | ||
+ | ---- | ||
**Master-Theorem, | **Master-Theorem, |