5.3 Wachstum von Folgen In diesem Abschnitt betrachten wir (rekursiv oder anders definierte) Folgen {an }∞ n=1 und wollen vergleichen, wie schnell sie anwachsen, wenn n wächst. Wir orientieren uns dabei an W. Hochstättler: Algorithmische Mathematik, Springer-Lehrbuch, 2010. Beispiel 1 Wir betrachten die Folge H1 := 1, Hn := Hn−1 + n1 für n ∈ N, n ≥ 2. Dies ist die aus den ersten nP Gliedern bestehende Teilsumme 1 (Partialsumme) der arithmetischen Reihe ∞ k=1 k , Hn = n X 1 k=1 k =1+ 1 1 1 + + ... + . 2 3 n Rechnung zeigt (hier nur auf 6 Nachkommastellen gerundet angegeben) n 1 2 3 4 5 6 7 8 9 Hn 1 1, 5 1, 833333 2, 083333 2, 283333 2, 45 2, 592857 2, 717857 2, 828968 n 10 20 30 40 50 60 70 80 90 Hn 2, 928968 3, 597740 4, 994987 4, 278543 4, 499205 4, 679870 4, 832837 4, 965479 5, 082571 n 100 200 300 400 500 600 700 800 900 Hn 5, 187378 5, 878031 6, 282664 6, 569930 6, 792823 6, 974978 7, 129010 7, 262452 7, 380166 Weitere Rechnung gibt z.B. H1000 = 7, 485471 und H10000 = 9, 787606. Zur Untersuchung des Wachstums setzen wir hier der Einfachheit zuliebe voraus, dass der Logarithmus aus der Schule bekannt ist als Stammfunktion zur Funktion f : (0, ∞) → R, x 7→ x1 , und dass Sie auch log(1) = 0 kennen. Also Z n 1 dx = log(n). 1 x Unterteilt man das Integrationsintervall [1, n] in Teilintervalle [k, k + 1], k = 1, . . . , n − 1, so liefern Riemann-Untersumme und -Obersumme Hn − 1 < log(n) < Hn − 1 1 . n Aufgelöst nach Hn also log(n) + 1 < Hn < log(n) + 1. n Die Differenz Hn − log(n) liegt also für alle n ∈ N im Intervall (0, 1]. Für wachsendes n nähert sie sich immer mehr der sogenannten Euler-MascheroniKonstanten γ := 0, 5772156649 . . . an. n Hn − log(n) 10 0, 626383 100 0, 582207 1000 0, 577716 10000 0, 577266 100000 0, 577220 Definition 5.3.1 Seien f, g : N → R. Dann schreibt man f = O(g) oder f (n) = O( g(n) ) (und sagt f ist groß Oh von g), wenn es eine Konstante C > 0 gibt und ein n0 ∈ N mit |f (n)| ≤ Cg(n) für alle n ≥ n0 . In diesem Zusammenhang wird das O als Landau-Symbol bezeichnet. Beispiel 1 (Fortsetzung). Die Abbildung H : N → R, n 7→ Hn , erfüllt Hn = O(log(n)), denn für n > e = 2, 718281 . . . ist log(n) > 1. Daher gilt für n ≥ n0 = 3 Hn = |Hn | ≤ log(n) + 1 ≤ 2 log(n). Umgekehrt gilt auch log(n) ≤ Hn − 1 n < Hn , also log(n) = O(Hn ). Proposition 5.3.2 Seien A, a, b ∈ R feste, von n unabhängige Zahlen. Dann gilt i) a ≥ b ⇒ nb = O(na ), ii) A > 1 ⇒ nb = O(An ), iii) a > 0 ⇒ log(n)b = O(na ). Beweis Zu i): Wegen a ≥ b ist na−b ≥ 1, also nb ≤ na . Damit folgt nb = O(na ) (mit n0 := 1 und C := 1). 2 b n , n ∈ N, n ≥ 2. Es gilt an > 1, aber Zu ii): Betrachte die Zahlen an := n−1 je größer n, desto dichter liegt an an 1 (genauere Begründung kann erst mit Hilfsmitteln aus der Mathematik 2 für Informatiker gegeben werden). Wegen 1 < A gibt daher ein n0 , sodass n ≥ n0 ⇒ 1 ≤ an ≤ A. Wir setzen C := nb0 A n0 und zeigen induktiv nb ≤ CAn für n ≥ n0 . Für n = n0 gilt sogar nb = CAn nach Wahl von C. Gilt die Induktionsbehauptung schon für n − 1, dann folgt für n b n b n = (n − 1)b = an (n − 1)b ≤ an CAn−1 ≤ CAn . n−1 Zu iii): Wir setzen A := ea und wählen n0 und C wie in ii). n1 sei so groß gewählt, dass log(n1 ) ≥ n0 gilt. Dann folgt für n ≥ n1 , wenn man die Monotonie des Logarithmus’ ausnutzt, log(n)b ≤ CAlog(n) . Mit A = ea bekommt man Alog(n) = ea log(n) = elog(n) log(n)b ≤ Cna . a = na . Damit also Fazit. Der Logarithmus und seine Potenzen wachsen nach Proposition 5.3.2 iii) höchstens so schnell wie Polynomfunktionen oder Wurzelfunktionen. Wenn man genau hinschaut: Sie wachsen sogar langsamer. Polynomfunktionen und erst recht Wurzelfunktionen wachsen nach Proposition 5.3.2 ii) nicht so schnell wie (genauer: langsamer als) Exponentialfunktionen. Beispiel 2 3n4 + 17n = O(n4 ), aber auch z.B. 3n4 + 17n = O(2n ). Beispiel 3 Es gilt (vgl. Übungsblatt 1) n X n X 3 k = k=1 Mit Pn k=1 k= n(n+1) 2 Sn := !2 k . k=1 also n X k=1 k3 = n4 + 2n3 + n2 n2 (n + 1)2 = ≤ n4 . 4 4 3 Es folgt Sn = O(n4 ). Das Wachstum bekommt man aber auch ohne Übungsblatt 1, denn man schätzt ab 0 ≤ Sn = n X 3 k ≤ k=1 n X n3 = n4 . k=1 Also (mit n0 = 1 und C = 1) Sn = O(n4 ). Die Umkehrung n4 = O(Sn ) gilt auch n n n 3 X X n n 3 n4 3 =d e ≥ . k ≥ Sn ≥ 2 2 2 16 n n k=d 2 e k=d 2 e Also (mit n0 = 1 und C = 16) gilt n4 = O(Sn ). Definition 5.3.3 Seien f, g : N → R gegeben. Man schreibt f = o(g) oder f (n) = o( g(n) ) (n) ∞ (und sagt f ist klein Oh von g), wenn die Folge {| fg(n) |}n=1 gegen 0 konvergiert. In diesem Zusammenhang wird o auch als Landau-Symbol bezeichnet. Man schreibt f = Ω(g) oder f (n) = Ω( g(n) ), wenn g = O(f ) gilt, und f = θ(g) oder f (n) = θ( g(n) ), wenn sowohl f = O(g) als auch g = O(f ) gilt. Beispielsweise gilt Hn = θ(log(n)) und Sn = θ(n4 ). Während aber Hn und log(n) voneinander nur durch eine Zahl aus (0, 1] unterscheiden, wächst n4 etwa viermal so schnell wie Sn weil für große n 1 Sn ≈ n4 4 gilt. Man definiert f ∼ g wenn für wachsendes n der Bruch strebt. Also Hn ∼ log(n) aber nicht Sn ∼ n4 . Folgende Sprechweisen haben sich eingebürgert. Für f ∈ O(1) sagt man f ist beschränkt. Für f ∈ θ(n) sagt man f wächst linear. Für f ∈ θ(n2 ) sagt man f wächst quadratisch. Für f ∈ θ(n3 ) sagt man f wächst kubisch. 4 f (n) g(n) gegen 1 Für f ∈ θ(nk ), k ∈ N, sagt man f wächst polynomial. Für f ∈ θ(log(n)) sagt man f wächst logarithmisch. Beispiel 4 Ist A eine invertierbare n × n-Matrix, so erfordert die Berechnung der Inversen A−1 etwa n3 Multiplikationen, genauer: der Rechenaufwand ist θ(n3 ). Wenn nun die Berechnung der Inversen einer 10 × 10-Matrix 1sec erfordert, dann braucht man daher zur Berechnung der Inversen einer 100 × 100-Matrix rund 1000sec. Wenn man ein Verfahren zur Invertierung 3 hätte, dessen Aufwand ∼ n2 wäre, dann ist der Aufwand eine 100 × 100Matrix zu invertieren, auch nur rund 1000 Mal größer als der Aufwand bei 10 × 10-Matrizen (warum?). Wir beschäftigen uns jetzt mit dem Abschätzen von Fakultäten und Binomialkoeffizienten. Beispiel 5 In einem Autohaus stehen vier verschiedene Modelle. Vier Interessenten stehen davor. Jeder will ein Auto kaufen. Frage: Wie groß ist die Wahrscheinlichkeit, dass sich jeder für ein anderes Modell entscheidet? Antwort: Jeder der vier Kunden kann frei wählen, hat also 4 Möglichkeiten. Das gibt 44 = 256 Möglichkeiten. Wenn jeder ein anderes Modell wählt, genau dann hat man eine Permutation der vier Autos, also 4! = 24 Fälle. Die 3 = 0, 09375. Wahrscheinlichkeit ist also 44!4 = 32 Bei acht Kunden und acht Modellen hat man dagegen für die entsprechende 315 Wahrscheinlichkeit 88!8 = 131072 = 0, 0024.... Allgemein hat man bei n Kunden n! und n Modellen nn . Diese Zahl wird für n → ∞ gegen Null gehen. Aber wie schnell? Satz 5.3.4 Für alle n ∈ N gilt √ n n ≤ n! ≤ n+1 2 n . Beweis. Wir verwenden die arithmetisch/geometrische Ungleichung √ ab ≤ a+b , 2 die für alle a, b > 0 gilt, denn sie ist äquivalent zu √ √ √ ( a − b)2 = a − 2 ab + b ≥ 0. 5 Die obere Schranke für n! bekommt man wie folgt. Aus (n!)2 = (1 · 2 · 3 · · · n) · (n · (n − 1) · (n − 2) · · · 1) = (1 · n) · (2 · (n − 1)) · (3 · (n − 2)) · · · (n · 1) erhält man (durch Wurzelziehen und Verwendung der arithmetisch/geometrischen Ungleichung) p √ √ n! = 1 · n · 2 · (n − 1) · · · n · 1 n n+1 n+1 1+n 2+n−1 · ··· = . ≤ 2 2 2 2 Bedenkt man, dass die Funktion f : [1, n] → R, f (x) := x(n + 1 − x), zwischen 1 und n+1 streng monoton wächst und von da an streng monoton 2 fällt, folgt für jedes k ∈ [1, n] f (k) = k(n + 1 − k) ≥ min f (x) = f (1) = f (n) = n. x∈[1, n] Daher kann man n! = durch √ 1·n· n! ≥ p √ 2 · (n − 1) · · · n · 1 nach unten abschätzen √ n· √ √ √ n n··· n = n . . Das Wachstum der Fakultät wird am besten beschrieben mit Hilfe der Stirling’schen Formel (den anspruchsvolleren Beweis findet man in Lehrbüchern der Analysis). Mit der Euler’schen Zahl e = 2, 7181828 . . . gilt n n √ n! ∼ 2πn . e √ Damit läßt sich die Größe nn!n aus Beispiel 4 beschreiben durch nn!n ∼ 2πne−n . Im Pascalschen Dreieck ist in der 2n-ten Zeile 2n 2n 2n 2n 2n 2n ... 0 1 2 2n − 2 2n − 1 2n 2n der Binomialkoeffizient der größte. (Er wurde auch benutzt, um die n Catalan’sche Zahl Cn explizit anzugeben.) Sein Wachstum lässt sich durch 22n 2n √ = θ( ) beschreiben. Es gilt genauer das folgende Resultat. n n 6 Satz 5.3.5 Für alle n ∈ N gilt 22n √ ≤ 2 n Beweis. Betrachte P := 2n n 22n ≤√ √ . 2 n 1 · 3 · 5 · · · (2n − 1) . 2 · 4 · 6 · · · (2n) Es folgt 1 · 3 · 5 · · · (2n − 1) 2 · 4 · 6 · · · (2n) (2n)! = n = 2 · n! · 2n · n! P = 2 · 4 · 6 · · · (2n) 2 · 4 · 6 · · · (2n) 1 2n · 2n . n 2 · Zu zeigen bleibt 1 1 √ ≤P ≤ √ . 2 n 2n Nutzt man aus, dass (2k − 1)(2k + 1) 4k 2 − 1 = <1 (2k)2 4k 2 gilt, bekommt man P 2 · (2n + 1) = also P < √ 1 2n+1 < √1 . 2n 1> 1·3 3·5 (2n − 1)(2n + 1) · ··· < 1, 2·2 4·4 2n · 2n Entsprechend für n ≥ 2 2·4 4·6 (2n − 2)(2n) 1 · ··· = . 3·3 5·5 (2n − 1)2 2(2n)P 2 Hieraus folgt 1 . 2 · 2n Wurzelziehen gibt dann die untere Schranke. P2 > 7