Asymptotische Schrake Sowohl die Laufzeit T () als auch der Speicherbedarf S() werde meist durch asymptotische Schrake agegebe. Die Kostate c i, welche i der Eiführug deiert wurde, sid direkt vo der Implemetatio (Taktfrequez, Hardware allgemei,...) abhägig. Ma will aber ei davo uabhägiges Kriterium de, um Algorithme objektiv utereiader zu vergleiche. Die Grudidee ist, dass bei eiem immer gröÿer werdede Iput die Kostate verachlässigbar werde. Weiters köe Terme mit iederer Ordug als verschwided agesehe werde. Zum Beispiel mit eier Laufzeit vo T () = c 3 + c + c 3 + c 4 ka ma, bei sehr groÿem, sowohl die Kostate c, c ud c 3 als auch die Terme c + c 3 + c 4 verachlässige. We ma das gaze i mathematische Deitioe verfasst, erhält ma die sogeate O-, Θ- ud Ω-Notatio.. O-Notatio (asymptotisch obere Schrake) Wir betrachte grudsätzlich Fuktioe. Eie Fuktio g() ist eie asyptotisch obere Schrake für, we eie positive Kostate c ud eie atürliche Zahl 0 existiere, sodass ab diesem 0 die Fuktio für alle > 0 kleier als c g() bleibt. = O (g()) c R, c > 0, 0 N : c g() 0 (Ohh) Deshalb beutzt ma auch Pseudocode, um de Algorithmus zu aalysiere.
. Ω-Notatio (asymptotisch utere Schrake) Eie Fuktio g() ist eie asyptotisch utere Schrake für, we eie positive Kostate c ud eie atürliche Zahl 0 existiere, sodass ab diesem 0 die Fuktio für alle > 0 gröÿer als c g() bleibt. = Ω (g()) c R, c > 0, 0 N : c g() 0 (Omega).3 Θ-Notatio (asymptotisch exakte Schrake) Eie Fuktio g() ist eie asyptotisch exakte Schrake für, we zwei positive Kostate c ud c ud eie atürliche Zahl 0 existiere, sodass ab diesem 0 die Fuktio für alle > 0 zwische c g() ud c g() bleibt. = Θ (g()) c, c R, c, c > 0, 0 N : c g() c g() 0 (Theta)
.4 Grezwertkriterium Das Grezwertkriterium ist ei alteratives ud i viele Fälle hilfreiches Kriterium, um zu bestimme, ob eie Fuktio zu eier Fuktiosklasse O(g()), Ω(g()) oder Θ(g()) gehört. Falls der Grezwert lim g() existiert, ka ahad dieses Wertes die Fuktiosklasse festgestellt werde: 0 K < : = O(g()) 0 < K : = Ω(g()) 0 < K < : = Θ(g()) lim g() = K Beachte, dass die Umkehrug icht ubedigt gilt, z.b., = si, g() =. Es gilt = O(g()) aber der Grezwert lim g() existiert icht..5 Beispiele. 5 + 3 = O() zu zeige: c > 0, 0 N : 5 + 3 c 0 wähle c = 6, 0 = 3: 5 + 3 6 für 3 3 für 3. 6 3 O( ) Aahme: 6 3 = O( ) c > 0, 0 N : 6 3 c 0 6 3 c für 0 6 c für 0 c 6 für 0 icht möglich für beliebige Wahl vo c, 0 ; daher 6 3 O( ). 3. 3 = O( ) 3 lim = = lim 3 l = lim 6 (l ) = lim 6 (l ) 3 = 0. (Regel vo L'Hospital) Expoetielle Fuktioe (Basis > ) wachse scheller als polyomielle Fuktioe. 3
4. l = O( ) l lim = = lim = lim = 0. Polyomielle Fuktioe wachse scheller als logarithmische. 5. ( ) = Θ( ) zu zeige: c > 0, c > 0, 0 N : c () wähle c = 4, c =, 0 = : () : () : ( ) 4 4 4 4 ( ) für ( ) = Ω( ) ( ) 0 () c 0 0 für ( ) = O( ) aus ( ) = Ω( ) ud ( ) = O( ) folgt ( ) = Θ( ). alterative Methode: ( lim ) = lim ( ) = lim = lim Da 0 < < gilt ( ) = Θ( )..6 Reche-Regel für die O-Notatio O () + O (g()) = O (max {, g()}) O () O (g()) = O ( g()) =. = O (g()) g() = O (h()) = O (h()) O () O () = O () 4
Beweis der. Regel: O () + O (g()) = O (max {, g()}) Wir müsse zeige, dass für alle Fuktioe f () = O() ud g () = O(g()) gilt, dass f () + g () = O(max{, g()}). Aus der Deitio der O-Notatio folgt ud daher f () = O() c > 0, 0 N : f () c 0 g () = O(g()) c > 0, 0 N : g () c g() 0 f () + g () c + c g() max{ 0, 0 } =: 0 c max{, g()} + c max{, g()} = (c + c ) max{, g()}. }{{} =:c 3 Das heiÿt, es existiert ei c 3 > 0 ud ei 0 N, sodass f () + g () c 3 max{, g()}) 0 f () + g () = O(max{, g()})..7 Häug vorkommede Fuktioe Name O-Notatio Bsp.-Fuktio Bsp.-Algorithmus kostat O() 3 Additio logarithmisch O(log ) ld (), l () Suche Wurzelfuktio O( c ),0 < c <, 3 Primzahltest liear O() 3 + 4 Maximum de liearlogarithmisch O( log ) ld() Sortiere polyomial O( c ), c > 4 + 7 + 0 Matrizeoperatioe expoetial O(c ), c >, 0 NP-vollstädige Alg. Fakultät O(!)!.8 Amerkug zum Logarithmus Es kommt sehr häug vor, dass bei der Laufzeitaalyse der Logarithmus zur Basis verwedet wird. Es lässt sich aber jeder Logarithmus mit eier beliebige Basis b i eie adere Logarithmus mit der Basis b folgedermaÿe umreche: log b (x) = log b (b ) log b(x) Die beide Versioe uterscheide sich ur durch eie kostate Faktor, der atürlich asymptotisch gesehe verachlässigbar wird. Das heiÿt: O(log b ) = O(log b ). 5