• Keine Ergebnisse gefunden

Algorithmen und Datenstrukturen A9. Laufzeitanalyse: Landau-Symbole Marcel L¨uthi and Gabriele R¨oger

N/A
N/A
Protected

Academic year: 2022

Aktie "Algorithmen und Datenstrukturen A9. Laufzeitanalyse: Landau-Symbole Marcel L¨uthi and Gabriele R¨oger"

Copied!
49
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen und Datenstrukturen

A9. Laufzeitanalyse: Landau-Symbole

Marcel L¨uthi and Gabriele R¨oger

Universit¨at Basel

17. M¨arz 2021

(2)

Inhalt dieser Veranstaltung

A&D

Sortieren Komplexit¨ats-

analyse Fundamentale Datenstrukturen

Suchen Graphen

Strings Weiterf¨uhrende

Themen

(3)

Landau-Notation Rechenregeln Zusammenfassung

Landau-Notation

(4)

Ergebnis f¨ ur Mergesort

”Die Laufzeit von Mergesort w¨achst genauso schnell wienlog2n.“

Theorem

Mergesort hat leicht ¨uberlineare Laufzeit, d.h.

es gibt Konstanten c,c0,n0 >0, so dass f¨ur alle n≥n0: cnlog2n≤T(n)≤c0nlog2n.

Wir haben Terme niedrigerer Ordnung (Konstanten undn) in der Absch¨atzung ignoriert bzw. verschwinden lassen.

Wir haben uns nicht f¨ur die genauen Werte der Konstanten interessiert, es reicht, wenn irgendwelche passenden

Konstanten existieren.

Die Laufzeit f¨ur kleinen ist nicht so wichtig.

(5)

Landau-Notation Rechenregeln Zusammenfassung

Ergebnis f¨ ur Mergesort

”Die Laufzeit von Mergesort w¨achst genauso schnell wienlog2n.“

Theorem

Mergesort hatleicht ¨uberlineare Laufzeit, d.h.

es gibt Konstanten c,c0,n0 >0, so dass f¨ur alle n≥n0: cnlog2n≤T(n)≤c0nlog2n.

Wir haben Terme niedrigerer Ordnung (Konstanten undn) in der Absch¨atzung ignoriert bzw. verschwinden lassen.

Wir haben uns nicht f¨ur die genauen Werte der Konstanten interessiert, es reicht, wenn irgendwelche passenden

Konstanten existieren.

Die Laufzeit f¨ur kleinen ist nicht so wichtig.

(6)

Ergebnis f¨ ur Mergesort

”Die Laufzeit von Mergesort w¨achst genauso schnell wienlog2n.“

Theorem

Mergesort hatleicht ¨uberlineare Laufzeit, d.h.

es gibt Konstanten c,c0,n0 >0, so dass f¨ur alle n≥n0: cnlog2n≤T(n)≤c0nlog2n.

Wir haben Terme niedrigerer Ordnung (Konstanten undn) in der Absch¨atzung ignoriert bzw. verschwinden lassen.

Wir haben uns nicht f¨ur die genauen Werte der Konstanten interessiert, es reicht, wenn irgendwelche passenden

Konstanten existieren.

Die Laufzeit f¨ur kleinen ist nicht so wichtig.

(7)

Landau-Notation Rechenregeln Zusammenfassung

Ergebnis f¨ ur Mergesort

”Die Laufzeit von Mergesort w¨achst genauso schnell wienlog2n.“

Theorem

Mergesort hatleicht ¨uberlineare Laufzeit, d.h.

es gibt Konstanten c,c0,n0 >0, so dass f¨ur alle n≥n0: cnlog2n≤T(n)≤c0nlog2n.

Wir haben Terme niedrigerer Ordnung (Konstanten undn) in der Absch¨atzung ignoriert bzw. verschwinden lassen.

Wir haben uns nicht f¨ur die genauen Werte der Konstanten interessiert, es reicht, wenn irgendwelche passenden

Konstanten existieren.

Die Laufzeit f¨ur kleinen ist nicht so wichtig.

(8)

Ergebnis f¨ ur Mergesort

”Die Laufzeit von Mergesort w¨achst genauso schnell wienlog2n.“

Theorem

Mergesort hatleicht ¨uberlineare Laufzeit, d.h.

es gibt Konstanten c,c0,n0 >0, so dass f¨ur alle n≥n0: cnlog2n≤T(n)≤c0nlog2n.

Wir haben Terme niedrigerer Ordnung (Konstanten undn) in der Absch¨atzung ignoriert bzw. verschwinden lassen.

Wir haben uns nicht f¨ur die genauen Werte der Konstanten interessiert, es reicht, wenn irgendwelche passenden

Konstanten existieren.

Die Laufzeit f¨ur kleinen ist nicht so wichtig.

(9)

Landau-Notation Rechenregeln Zusammenfassung

Mehr bisherige Ergebnisse

Theorem

Der Merge-Schritt hatlineare Laufzeit, d.h. es gibt Konstanten c,c0,n0 >0, so dass f¨ur alle n ≥n0: cn≤T(n)≤c0n.

Theorem

Mergesort hatleicht ¨uberlineare Laufzeit, d.h.

es gibt Konstanten c,c0,n0 >0, so dass f¨ur alle n≥n0: cnlog2n≤T(n)≤c0nlog2n.

Theorem

Selectionsort hatquadratische Laufzeit, d.h. es gibt Konstanten c >0,c0 >0,n0 >0, so dass f¨ur n≥n0: cn2 ≤T(n)≤c0n2. K¨onnen wir das nicht irgendwie kompakter aufschreiben?

(10)

Mehr bisherige Ergebnisse

Theorem

Der Merge-Schritt hatlineare Laufzeit, d.h. es gibt Konstanten c,c0,n0 >0, so dass f¨ur alle n ≥n0: cn≤T(n)≤c0n.

Theorem

Mergesort hatleicht ¨uberlineare Laufzeit, d.h.

es gibt Konstanten c,c0,n0 >0, so dass f¨ur alle n≥n0: cnlog2n≤T(n)≤c0nlog2n.

Theorem

Selectionsort hatquadratische Laufzeit, d.h. es gibt Konstanten c >0,c0 >0,n0 >0, so dass f¨ur n≥n0: cn2 ≤T(n)≤c0n2. K¨onnen wir das nicht irgendwie kompakter aufschreiben?

(11)

Landau-Notation Rechenregeln Zusammenfassung

Edmund Landau

Edmund Landau

deutscher Mathematiker (1877–1938)

analytische Zahlentheorie kein Freund angewandter Mathematik

International: Bachmann–Landau-Notation auch nach Paul Gustav Heinrich Bachmann (deutscher Mathematiker)

(12)

Edmund Landau

Edmund Landau

deutscher Mathematiker (1877–1938)

analytische Zahlentheorie kein Freund angewandter Mathematik

International:Bachmann–Landau-Notationauch nach Paul Gustav Heinrich Bachmann (deutscher Mathematiker)

(13)

Landau-Notation Rechenregeln Zusammenfassung

Landau-Symbol Theta

Definition

F¨ur eine Funktiong :N→R istΘ(g) die Menge aller Funktionen f :N→R, diegenauso schnell wachsen wie g:

Θ(g) ={f | ∃c >0 ∃c0 >0 ∃n0>0 ∀n≥n0 : c ·g(n)≤f(n)≤c0·g(n)}

”Die Laufzeit von Mergesort ist in Θ(nlog2n).“

oder auch

”Die Laufzeit von Mergesort ist Θ(nlog2n).“

(14)

Landau-Symbol Theta

Definition

F¨ur eine Funktiong :N→R istΘ(g) die Menge aller Funktionen f :N→R, diegenauso schnell wachsen wie g:

Θ(g) ={f | ∃c >0 ∃c0 >0 ∃n0>0 ∀n≥n0 : c ·g(n)≤f(n)≤c0·g(n)}

”Die Laufzeit von Mergesort ist in Θ(nlog2n).“

oder auch

”Die Laufzeit von Mergesort ist Θ(nlog2n).“

(15)

Landau-Notation Rechenregeln Zusammenfassung

Landau-Symbol Theta: Illustration

f ∈Θ(g)

(16)

Jupyter-Notebook (mit Aufgaben)

Jupyter-Notebook: landau.ipynb

(17)

Landau-Notation Rechenregeln Zusammenfassung

Mehr Landau-Symbole

”f w¨achst nicht wesentlich schneller alsg“

O(g) ={f | ∃c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

O f¨ur

”Ordnung“ der Funktion

”f w¨achst nicht wesentlich langsamer alsg“

Ω(g) ={f | ∃c >0 ∃n0>0 ∀n≥n0 :c·g(n)≤f(n)}

Es gilt Θ(g) =O(g)∩Ω(g).

Es gilt f ∈Ω(g) gdw.g ∈O(f).

In der Informatik interessieren wir uns oft nur f¨ur die Begrenzung des Laufzeitwachstums nach oben: O statt Θ

Aussprache:Θ: Theta, Ω: Omega,O: Oh

(18)

Landau-Notation Rechenregeln Zusammenfassung

Mehr Landau-Symbole

”f w¨achst nicht wesentlich schneller alsg“

O(g) ={f | ∃c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

O f¨ur

”Ordnung“ der Funktion

”f w¨achst nicht wesentlich langsamer alsg“

Ω(g) ={f | ∃c >0 ∃n0>0 ∀n≥n0 :c·g(n)≤f(n)}

Es gilt Θ(g) =O(g)∩Ω(g).

Es gilt f ∈Ω(g) gdw.g ∈O(f).

In der Informatik interessieren wir uns oft nur f¨ur die Begrenzung des Laufzeitwachstums nach oben: O statt Θ

(19)

Landau-Notation Rechenregeln Zusammenfassung

Mehr Landau-Symbole

”f w¨achst nicht wesentlich schneller alsg“

O(g) ={f | ∃c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

O f¨ur

”Ordnung“ der Funktion

”f w¨achst nicht wesentlich langsamer alsg“

Ω(g) ={f | ∃c >0 ∃n0>0 ∀n≥n0 :c·g(n)≤f(n)}

Es gilt Θ(g) =O(g)∩Ω(g).

Es gilt f ∈Ω(g) gdw.g ∈O(f).

In der Informatik interessieren wir uns oft nur f¨ur die Begrenzung des Laufzeitwachstums nach oben: O statt Θ

Aussprache:Θ: Theta, Ω: Omega,O: Oh

(20)

Landau-Notation Rechenregeln Zusammenfassung

Mehr Landau-Symbole

”f w¨achst nicht wesentlich schneller alsg“

O(g) ={f | ∃c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

O f¨ur

”Ordnung“ der Funktion

”f w¨achst nicht wesentlich langsamer alsg“

Ω(g) ={f | ∃c >0 ∃n0>0 ∀n≥n0 :c·g(n)≤f(n)}

Es gilt Θ(g) =O(g)∩Ω(g).

Es gilt f ∈Ω(g) gdw.g ∈O(f).

In der Informatik interessieren wir uns oft nur f¨ur die Begrenzung des Laufzeitwachstums nach oben: O statt Θ

(21)

Landau-Notation Rechenregeln Zusammenfassung

Mehr Landau-Symbole

”f w¨achst nicht wesentlich schneller alsg“

O(g) ={f | ∃c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

O f¨ur

”Ordnung“ der Funktion

”f w¨achst nicht wesentlich langsamer alsg“

Ω(g) ={f | ∃c >0 ∃n0>0 ∀n≥n0 :c·g(n)≤f(n)}

Es gilt Θ(g) =O(g)∩Ω(g).

Es gilt f ∈Ω(g) gdw.g ∈O(f).

In der Informatik interessieren wir uns oft nur f¨ur die Begrenzung des Laufzeitwachstums nach oben: O statt Θ

Aussprache:Θ: Theta, Ω: Omega,O: Oh

(22)

Landau-Notation Rechenregeln Zusammenfassung

Mehr Landau-Symbole

”f w¨achst nicht wesentlich schneller alsg“

O(g) ={f | ∃c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

O f¨ur

”Ordnung“ der Funktion

”f w¨achst nicht wesentlich langsamer alsg“

Ω(g) ={f | ∃c >0 ∃n0>0 ∀n≥n0 :c·g(n)≤f(n)}

Es gilt Θ(g) =O(g)∩Ω(g).

Es gilt f ∈Ω(g) gdw.g ∈O(f).

In der Informatik interessieren wir uns oft nur f¨ur die Begrenzung des Laufzeitwachstums nach oben: O statt Θ

(23)

Landau-Notation Rechenregeln Zusammenfassung

Mehr Landau-Symbole

”f w¨achst nicht wesentlich schneller alsg“

O(g) ={f | ∃c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

O f¨ur

”Ordnung“ der Funktion

”f w¨achst nicht wesentlich langsamer alsg“

Ω(g) ={f | ∃c >0 ∃n0>0 ∀n≥n0 :c·g(n)≤f(n)}

Es gilt Θ(g) =O(g)∩Ω(g).

Es gilt f ∈Ω(g) gdw.g ∈O(f).

In der Informatik interessieren wir uns oft nur f¨ur die Begrenzung des Laufzeitwachstums nach oben: O statt Θ Aussprache:Θ: Theta, Ω: Omega,O: Oh

(24)

Landau-Notation Rechenregeln Zusammenfassung

Seltener ben¨ otigte Landau-Symbole

”f w¨achst langsamer als g“

o(g) ={f | ∀c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

”f w¨achst schneller als g“

ω(g) ={f | ∀c >0∃n0 >0 ∀n≥n0:c ·g(n)≤f(n)}

(25)

Landau-Notation Rechenregeln Zusammenfassung

Seltener ben¨ otigte Landau-Symbole

”f w¨achst langsamer als g“

o(g) ={f | ∀c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

”f w¨achst schneller als g“

ω(g) ={f | ∀c >0∃n0 >0 ∀n≥n0:c ·g(n)≤f(n)}

Aussprache:ω: kleines Omega

(26)

Seltener ben¨ otigte Landau-Symbole

”f w¨achst langsamer als g“

o(g) ={f | ∀c >0 ∃n0 >0 ∀n≥n0 :f(n)≤c·g(n)}

”f w¨achst schneller als g“

ω(g) ={f | ∀c >0∃n0 >0 ∀n≥n0:c ·g(n)≤f(n)}

Aussprache:ω: kleines Omega

(27)

Landau-Notation Rechenregeln Zusammenfassung

Interessante Funktionsklassen

In aufsteigender Ordnung (abgesehen von allgemeinennk):

g Wachstum 1 konstant logn logarithmisch

n linear

nlogn leicht ¨uberlinear n2 quadratisch n3 kubisch

nk polynomiell (Konstantek) 2n exponentiell

(28)
(29)

Landau-Notation Rechenregeln Zusammenfassung

Rechenregeln

(30)

Beispiele Θ

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 5n2+ 3n9 Θ(n2) f2(n) = 3nlog2n+ 2n2 Θ(n2) f3(n) = 9nlog2n+n+ 17 Θ(nlogn) f4(n) = 8 Θ(1)

(31)

Landau-Notation Rechenregeln Zusammenfassung

Beispiele Θ

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 5n2+ 3n9 Θ(n2) f2(n) = 3nlog2n+ 2n2 Θ(n2) f3(n) = 9nlog2n+n+ 17 Θ(nlogn) f4(n) = 8 Θ(1)

(32)

Beispiele Θ

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 5n2+ 3n9 Θ(n2) f2(n) = 3nlog2n+ 2n2 Θ(n2) f3(n) = 9nlog2n+n+ 17 Θ(nlogn) f4(n) = 8 Θ(1)

(33)

Landau-Notation Rechenregeln Zusammenfassung

Beispiele Θ

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 5n2+ 3n9 Θ(n2) f2(n) = 3nlog2n+ 2n2 Θ(n2) f3(n) = 9nlog2n+n+ 17 Θ(nlogn) f4(n) = 8 Θ(1)

(34)

Beispiele Θ

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 5n2+ 3n9 Θ(n2) f2(n) = 3nlog2n+ 2n2 Θ(n2) f3(n) = 9nlog2n+n+ 17 Θ(nlogn) f4(n) = 8 Θ(1)

(35)

Landau-Notation Rechenregeln Zusammenfassung

Beispiele Θ

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 5n2+ 3n9 Θ(n2) f2(n) = 3nlog2n+ 2n2 Θ(n2) f3(n) = 9nlog2n+n+ 17 Θ(nlogn) f4(n) = 8 Θ(1)

(36)

Beispiele Gross-O

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 8n23n9 O(n2) f2(n) =n33nlog2n O(n3)

f3(n) = 3nlog2n+ 1000n+ 10200 O(nlogn) Warum ist das so?

(37)

Landau-Notation Rechenregeln Zusammenfassung

Beispiele Gross-O

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 8n23n9 O(n2) f2(n) =n33nlog2n O(n3)

f3(n) = 3nlog2n+ 1000n+ 10200 O(nlogn) Warum ist das so?

(38)

Beispiele Gross-O

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 8n23n9 O(n2) f2(n) =n33nlog2n O(n3)

f3(n) = 3nlog2n+ 1000n+ 10200 O(nlogn) Warum ist das so?

(39)

Landau-Notation Rechenregeln Zusammenfassung

Beispiele Gross-O

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 8n23n9 O(n2) f2(n) =n33nlog2n O(n3)

f3(n) = 3nlog2n+ 1000n+ 10200 O(nlogn) Warum ist das so?

(40)

Beispiele Gross-O

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 8n23n9 O(n2) f2(n) =n33nlog2n O(n3)

f3(n) = 3nlog2n+ 1000n+ 10200 O(nlogn) Warum ist das so?

(41)

Landau-Notation Rechenregeln Zusammenfassung

Beispiele Gross-O

Bei der Analyse interessiert nur der Term h¨ochster Ordnung (= am schnellsten wachsender Summand) einer Funktion.

Beispiele

f1(n) = 8n23n9 O(n2) f2(n) =n33nlog2n O(n3)

f3(n) = 3nlog2n+ 1000n+ 10200 O(nlogn) Warum ist das so?

(42)

Zusammenh¨ ange

Es gilt:

O(1)⊂O(logn)⊂O(n)⊂O(nlogn)⊂O(nk)⊂O(2n) (f¨urk ≥2)

O(nk1)⊂O(nk2) f¨urk1 <k2

z.B. O(n2)⊂O(n3)

(43)

Landau-Notation Rechenregeln Zusammenfassung

Zusammenh¨ ange

Es gilt:

O(1)⊂O(logn)⊂O(n)⊂O(nlogn)⊂O(nk)⊂O(2n) (f¨urk ≥2)

O(nk1)⊂O(nk2) f¨urk1 <k2

z.B. O(n2)⊂O(n3)

(44)

Rechenregeln

Produkt

f1 ∈O(g1) und f2 ∈O(g2) ⇒ f1f2∈O(g1g2) Summe

f1 ∈O(g1) und f2 ∈O(g2) ⇒ f1+f2∈O(g1+g2) Multiplikation mit Konstante

k >0 und f ∈O(g) ⇒ kf ∈O(g) k >0 ⇒ O(kg) =O(g)

(45)

Landau-Notation Rechenregeln Zusammenfassung

Rechenregeln

Produkt

f1 ∈O(g1) und f2 ∈O(g2) ⇒ f1f2∈O(g1g2) Summe

f1 ∈O(g1) und f2 ∈O(g2) ⇒ f1+f2∈O(g1+g2) Multiplikation mit Konstante

k >0 und f ∈O(g) ⇒ kf ∈O(g) k >0 ⇒ O(kg) =O(g)

(46)

Rechenregeln

Produkt

f1 ∈O(g1) und f2 ∈O(g2) ⇒ f1f2∈O(g1g2) Summe

f1 ∈O(g1) und f2 ∈O(g2) ⇒ f1+f2∈O(g1+g2) Multiplikation mit Konstante

k >0 und f ∈O(g) ⇒ kf ∈O(g) k >0 ⇒ O(kg) =O(g)

(47)

Landau-Notation Rechenregeln Zusammenfassung

Grund f¨ ur Beschr¨ ankung auf Term h¨ ochster Ordnung

Beispiel:5n3+ 2n∈O(n3)

Wegen Regel bzgl. Multiplikation mit Konstante:

5n3O(n3) 2nO(n)

Wegen O(n)⊂O(n3) und 2n∈O(n):

2nO(n3) Wegen Summenregel:

5n3+ 2nO(n3+n3)

Mit Multiplikation mit Konstante (bei Klasse):

5n3+ 2nO(n3)

(48)

Zusammenfassung

(49)

Landau-Notation Rechenregeln Zusammenfassung

Zusammenfassung

Mit Landau-Symbolendefiniert man Klassen von Funktionen, die nicht schneller/nicht langsamer/. . .wachsen als eine Funktion g.

O(g): Wachstum nicht schneller alsg Θ(g): Wachstum im Wesentlichen wieg

Referenzen

ÄHNLICHE DOKUMENTE

Bestimmte Grundbausteine ben¨ otigt man immer wieder bei Programmierprojekten, z.B. Sortierverfahren

Schritte innerhalb einer aufgerufenen Funktion Wichtig: Laufzeit ungef¨ ahr proportional zu Anzahl Operationen.. Laufzeitanalyse:

In der Analyse von Mergesort werden wir eine Logarithmusfunktion verwendet. Dies ist bei der Analyse von Laufzeiten oft

I Insgesamt f¨ ur Mergesort leicht ¨ uberlinear (analog zu Schl¨

Fall 1: k &lt; Schl¨ ussel in Knoten Gehe nach links Fall 2: k &gt; Schl¨ ussel in Knoten. Gehe nach rechts Fall 3: k = Schl¨ ussel

Datenstruktur Verkettete Liste von Schl¨ ussel/Werte-Paaren Suchen Elemente durchlaufen bis gefunden oder Listenende Einf¨ ugen Element in Liste.. Wert

Elemente werden in Array gespeichert, wobei Position durch Schl¨ ussel bestimmt ist.. Wichtigstes Werkzeug: Hashfunktion Berechnet Index aus

In einer auf Verkettung basierenden Hashtabelle mit M Listen und N Schl¨ usseln ist die Anzahl der Vergleiche (Gleichheitstests) f¨ ur Einf¨ ugungen und erfolglose Suchen ∼