442
Theoretische Informatik 1 1 Wintersemester 2019/20 1 basierend auf Folien von Prof. Georg Schnitger und Prof. Ulrich Meyer Sortieren Theoretische Informatik 1 31. Oktober 2019 1 / 90

Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Theoretische Informatik 1 1

Wintersemester 2019/20

Herzlich willkommen!

1basierend auf Folien von Prof. Georg Schnitger und Prof. Ulrich MeyerSortieren Theoretische Informatik 1 31. Oktober 2019 1 / 90

Page 2: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Theoretische Informatik 1 1

Wintersemester 2019/20

Herzlich willkommen!

1basierend auf Folien von Prof. Georg Schnitger und Prof. Ulrich MeyerSortieren Theoretische Informatik 1 31. Oktober 2019 1 / 90

Page 3: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wer ist wer?

Wir: Professur für Algorithmen und Komplexitätwww.algo.cs.uni-frankfurt.de

Martin Hoefer (Vorlesungen)R 115 - RMS 11-15, mhoefer AT cs.uni-frankfurt.deNiklas Hahn, Marco Schmalhofer (Übungskoordination)R 106 - RMS 11-15, nhahn AT em.uni-frankfurt.deKarl Fehrs, Marius Hagemann, Alexander Hengstmann, AlexanderKampf, Dayana Khadush, Martin Ludwig, Jan Marker, EliasPitschmann, Jonas Strauch, Luca von der Brelie (Tutoren)

Wer sind Sie?

Sortieren Theoretische Informatik 1 31. Oktober 2019 2 / 90

Page 4: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wer ist wer?

Wir: Professur für Algorithmen und Komplexitätwww.algo.cs.uni-frankfurt.de

Martin Hoefer (Vorlesungen)R 115 - RMS 11-15, mhoefer AT cs.uni-frankfurt.de

Niklas Hahn, Marco Schmalhofer (Übungskoordination)R 106 - RMS 11-15, nhahn AT em.uni-frankfurt.deKarl Fehrs, Marius Hagemann, Alexander Hengstmann, AlexanderKampf, Dayana Khadush, Martin Ludwig, Jan Marker, EliasPitschmann, Jonas Strauch, Luca von der Brelie (Tutoren)

Wer sind Sie?

Sortieren Theoretische Informatik 1 31. Oktober 2019 2 / 90

Page 5: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wer ist wer?

Wir: Professur für Algorithmen und Komplexitätwww.algo.cs.uni-frankfurt.de

Martin Hoefer (Vorlesungen)R 115 - RMS 11-15, mhoefer AT cs.uni-frankfurt.deNiklas Hahn, Marco Schmalhofer (Übungskoordination)R 106 - RMS 11-15, nhahn AT em.uni-frankfurt.de

Karl Fehrs, Marius Hagemann, Alexander Hengstmann, AlexanderKampf, Dayana Khadush, Martin Ludwig, Jan Marker, EliasPitschmann, Jonas Strauch, Luca von der Brelie (Tutoren)

Wer sind Sie?

Sortieren Theoretische Informatik 1 31. Oktober 2019 2 / 90

Page 6: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wer ist wer?

Wir: Professur für Algorithmen und Komplexitätwww.algo.cs.uni-frankfurt.de

Martin Hoefer (Vorlesungen)R 115 - RMS 11-15, mhoefer AT cs.uni-frankfurt.deNiklas Hahn, Marco Schmalhofer (Übungskoordination)R 106 - RMS 11-15, nhahn AT em.uni-frankfurt.deKarl Fehrs, Marius Hagemann, Alexander Hengstmann, AlexanderKampf, Dayana Khadush, Martin Ludwig, Jan Marker, EliasPitschmann, Jonas Strauch, Luca von der Brelie (Tutoren)

Wer sind Sie?

Sortieren Theoretische Informatik 1 31. Oktober 2019 2 / 90

Page 7: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wer ist wer?

Wir: Professur für Algorithmen und Komplexitätwww.algo.cs.uni-frankfurt.de

Martin Hoefer (Vorlesungen)R 115 - RMS 11-15, mhoefer AT cs.uni-frankfurt.deNiklas Hahn, Marco Schmalhofer (Übungskoordination)R 106 - RMS 11-15, nhahn AT em.uni-frankfurt.deKarl Fehrs, Marius Hagemann, Alexander Hengstmann, AlexanderKampf, Dayana Khadush, Martin Ludwig, Jan Marker, EliasPitschmann, Jonas Strauch, Luca von der Brelie (Tutoren)

Wer sind Sie?

Sortieren Theoretische Informatik 1 31. Oktober 2019 2 / 90

Page 8: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worum gehts? (1/2)

Was ist machbar?I Welche algorithmischen Probleme kann man mit welchen

Methoden effizient lösen?

Effizient = schnell

Und was nicht?I Welche Probleme erlauben keine effizienten Lösungen?I Welche Probleme lassen sich selbst dann nicht lösen,

wenn uns Laufzeit und Speicherplatz egal sind?

Und wenn ein Problem schwierig ist, was dann?

Sortieren Theoretische Informatik 1 31. Oktober 2019 3 / 90

Page 9: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worum gehts? (1/2)

Was ist machbar?I Welche algorithmischen Probleme kann man mit welchen

Methoden effizient lösen?

Effizient = schnell

Und was nicht?I Welche Probleme erlauben keine effizienten Lösungen?I Welche Probleme lassen sich selbst dann nicht lösen,

wenn uns Laufzeit und Speicherplatz egal sind?

Und wenn ein Problem schwierig ist, was dann?

Sortieren Theoretische Informatik 1 31. Oktober 2019 3 / 90

Page 10: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worum gehts? (1/2)

Was ist machbar?I Welche algorithmischen Probleme kann man mit welchen

Methoden effizient lösen?

Effizient = schnell

Und was nicht?I Welche Probleme erlauben keine effizienten Lösungen?I Welche Probleme lassen sich selbst dann nicht lösen,

wenn uns Laufzeit und Speicherplatz egal sind?

Und wenn ein Problem schwierig ist, was dann?

Sortieren Theoretische Informatik 1 31. Oktober 2019 3 / 90

Page 11: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worum gehts? (2/2)

Was ist machbar?- Probleme mit schnellen Algorithmen: Sortieren, Kürzeste Wege,

Minimale Spannbäume, String Matching, paarweises Alignment,Scheduling,.....

- Mächtige Entwurfsmethoden: Greedy Algorithmen, Divide &Conquer, dynamisches Programmieren.

Und was nicht?I NP-Vollständigkeit und NP-Härte.

- NP: Alle Probleme, in denen relativ kurze Lösungen zu raten sind unddie Lösungseigenschaft schnell verifiziert werden kann.

- NP-vollständig: die schwierigsten Probleme in NP

I Nicht-entscheidbare Entscheidungsprobleme undnicht-berechenbare Funktionen: Da geht absolut nichts!

Sortieren Theoretische Informatik 1 31. Oktober 2019 4 / 90

Page 12: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worum gehts? (2/2)

Was ist machbar?- Probleme mit schnellen Algorithmen: Sortieren, Kürzeste Wege,

Minimale Spannbäume, String Matching, paarweises Alignment,Scheduling,.....

- Mächtige Entwurfsmethoden: Greedy Algorithmen, Divide &Conquer, dynamisches Programmieren.

Und was nicht?I NP-Vollständigkeit und NP-Härte.

- NP: Alle Probleme, in denen relativ kurze Lösungen zu raten sind unddie Lösungseigenschaft schnell verifiziert werden kann.

- NP-vollständig: die schwierigsten Probleme in NP

I Nicht-entscheidbare Entscheidungsprobleme undnicht-berechenbare Funktionen: Da geht absolut nichts!

Sortieren Theoretische Informatik 1 31. Oktober 2019 4 / 90

Page 13: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worum gehts? (2/2)

Was ist machbar?- Probleme mit schnellen Algorithmen: Sortieren, Kürzeste Wege,

Minimale Spannbäume, String Matching, paarweises Alignment,Scheduling,.....

- Mächtige Entwurfsmethoden: Greedy Algorithmen, Divide &Conquer, dynamisches Programmieren.

Und was nicht?I NP-Vollständigkeit und NP-Härte.

- NP: Alle Probleme, in denen relativ kurze Lösungen zu raten sind unddie Lösungseigenschaft schnell verifiziert werden kann.

- NP-vollständig: die schwierigsten Probleme in NP

I Nicht-entscheidbare Entscheidungsprobleme undnicht-berechenbare Funktionen: Da geht absolut nichts!

Sortieren Theoretische Informatik 1 31. Oktober 2019 4 / 90

Page 14: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worum gehts? (2/2)

Was ist machbar?- Probleme mit schnellen Algorithmen: Sortieren, Kürzeste Wege,

Minimale Spannbäume, String Matching, paarweises Alignment,Scheduling,.....

- Mächtige Entwurfsmethoden: Greedy Algorithmen, Divide &Conquer, dynamisches Programmieren.

Und was nicht?I NP-Vollständigkeit und NP-Härte.

- NP: Alle Probleme, in denen relativ kurze Lösungen zu raten sind unddie Lösungseigenschaft schnell verifiziert werden kann.

- NP-vollständig: die schwierigsten Probleme in NP

I Nicht-entscheidbare Entscheidungsprobleme undnicht-berechenbare Funktionen: Da geht absolut nichts!

Sortieren Theoretische Informatik 1 31. Oktober 2019 4 / 90

Page 15: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worauf wird aufgebaut?

(1) Datenstrukturen:- Analyse der Laufzeit: O,o,Θ,Ω, ω and Rekursionsgleichungen- Listen, Schlangen, Stacks, Heaps, Bäume, Graphen.

(2) Analysis und Lineare Algebra:- Grenzwerte und- Logarithmus

(3) Diskrete Modellierung: Wie beweist man Aussagen?

Sortieren Theoretische Informatik 1 31. Oktober 2019 5 / 90

Page 16: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worauf wird aufgebaut?

(1) Datenstrukturen:- Analyse der Laufzeit: O,o,Θ,Ω, ω and Rekursionsgleichungen- Listen, Schlangen, Stacks, Heaps, Bäume, Graphen.

(2) Analysis und Lineare Algebra:- Grenzwerte und- Logarithmus

(3) Diskrete Modellierung: Wie beweist man Aussagen?

Sortieren Theoretische Informatik 1 31. Oktober 2019 5 / 90

Page 17: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Worauf wird aufgebaut?

(1) Datenstrukturen:- Analyse der Laufzeit: O,o,Θ,Ω, ω and Rekursionsgleichungen- Listen, Schlangen, Stacks, Heaps, Bäume, Graphen.

(2) Analysis und Lineare Algebra:- Grenzwerte und- Logarithmus

(3) Diskrete Modellierung: Wie beweist man Aussagen?

Sortieren Theoretische Informatik 1 31. Oktober 2019 5 / 90

Page 18: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Literatur

- J. Kleinberg und E. Tardos, Algorithm Design, Addison Wesley2005.

- K. Mehlhorn, P. Sanders, Algorithms and Data Structures – thebasic Toolbox, Springer, 2008.

- T. H. Cormen, C. E. Leiserson, R. L. Rivest und C. Stein,Introduction to Algorithms, Third Edition, MIT Press, 2009.

- Ein Skript zur Vorlesung, die Folien und Videos zur Vorlesung gibtes auf der Webseite http://www.algo.cs.uni-frankfurt.de→ LehreWinter 19/20→ Theoretische Informatik 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 6 / 90

Page 19: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Asymptotische Notation (1) multiple choice

Es seien f (n) = 0.3 · n0.75 −√

n und g(n) = 10 · n0.2. Was gilt dann?

(1) f (n) = O(g(n))

(2) f (n) = o(g(n))

(3) f (n) = Ω(g(n))

(4) f (n) = ω(g(n))

(5) f (n) = Θ(g(n))

Auflösung: (3) & (4)

Sortieren Theoretische Informatik 1 31. Oktober 2019 7 / 90

Page 20: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Asymptotische Notation (1) multiple choice

Es seien f (n) = 0.3 · n0.75 −√

n und g(n) = 10 · n0.2. Was gilt dann?

(1) f (n) = O(g(n))

(2) f (n) = o(g(n))

(3) f (n) = Ω(g(n))

(4) f (n) = ω(g(n))

(5) f (n) = Θ(g(n))

Auflösung:

(3) & (4)

Sortieren Theoretische Informatik 1 31. Oktober 2019 7 / 90

Page 21: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Asymptotische Notation (1) multiple choice

Es seien f (n) = 0.3 · n0.75 −√

n und g(n) = 10 · n0.2. Was gilt dann?

(1) f (n) = O(g(n))

(2) f (n) = o(g(n))

(3) f (n) = Ω(g(n))

(4) f (n) = ω(g(n))

(5) f (n) = Θ(g(n))

Auflösung: (3) & (4)

Sortieren Theoretische Informatik 1 31. Oktober 2019 7 / 90

Page 22: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Asymptotische Notation (2) multiple choice

Es seien f (n) = n log n + 4 · n2 und g(n) =∑n

i=n/2 i . Was gilt dann?

(1) f (n) = O(g(n))

(2) f (n) = o(g(n))

(3) f (n) = Ω(g(n))

(4) f (n) = ω(g(n))

(5) f (n) = Θ(g(n))

Auflösung: (1) & (3) & (5)

Sortieren Theoretische Informatik 1 31. Oktober 2019 8 / 90

Page 23: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Asymptotische Notation (2) multiple choice

Es seien f (n) = n log n + 4 · n2 und g(n) =∑n

i=n/2 i . Was gilt dann?

(1) f (n) = O(g(n))

(2) f (n) = o(g(n))

(3) f (n) = Ω(g(n))

(4) f (n) = ω(g(n))

(5) f (n) = Θ(g(n))

Auflösung:

(1) & (3) & (5)

Sortieren Theoretische Informatik 1 31. Oktober 2019 8 / 90

Page 24: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Asymptotische Notation (2) multiple choice

Es seien f (n) = n log n + 4 · n2 und g(n) =∑n

i=n/2 i . Was gilt dann?

(1) f (n) = O(g(n))

(2) f (n) = o(g(n))

(3) f (n) = Ω(g(n))

(4) f (n) = ω(g(n))

(5) f (n) = Θ(g(n))

Auflösung: (1) & (3) & (5)

Sortieren Theoretische Informatik 1 31. Oktober 2019 8 / 90

Page 25: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Asymptotische Notation (3) multiple choice

Es seien f (n) = 16log4 n und g(n) =√∑n

i=1 i2. Was gilt dann?

(1) f (n) = O(g(n))

(2) f (n) = o(g(n))

(3) f (n) = Ω(g(n))

(4) f (n) = ω(g(n))

(5) f (n) = Θ(g(n))

Auflösung: (3) & (4)

Sortieren Theoretische Informatik 1 31. Oktober 2019 9 / 90

Page 26: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Asymptotische Notation (3) multiple choice

Es seien f (n) = 16log4 n und g(n) =√∑n

i=1 i2. Was gilt dann?

(1) f (n) = O(g(n))

(2) f (n) = o(g(n))

(3) f (n) = Ω(g(n))

(4) f (n) = ω(g(n))

(5) f (n) = Θ(g(n))

Auflösung:

(3) & (4)

Sortieren Theoretische Informatik 1 31. Oktober 2019 9 / 90

Page 27: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Asymptotische Notation (3) multiple choice

Es seien f (n) = 16log4 n und g(n) =√∑n

i=1 i2. Was gilt dann?

(1) f (n) = O(g(n))

(2) f (n) = o(g(n))

(3) f (n) = Ω(g(n))

(4) f (n) = ω(g(n))

(5) f (n) = Θ(g(n))

Auflösung: (3) & (4)

Sortieren Theoretische Informatik 1 31. Oktober 2019 9 / 90

Page 28: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Rekursionsgleichungen (2) demogr.

Die Rekursion T (1) = c,T (n) = a · T(n

b

)+ t(n) sei zu lösen. n ist eine

Potenz der Zahl b > 1 und a > 1, c > 0 gelte.(a) Wenn t(n) = O

(n(logb a)−ε) für eine Konstante ε > 0,

dann ist T (n) = Θ(nlogb a).(b) Wenn t(n) = Θ(nlogb a), dann ist T (n) = Θ(nlogb a · logb n).(c) Wenn t(n) = Ω

(n(logb a)+ε) für eine Konstante ε > 0 und

a · t(n

b

)6 α · t(n) für eine Konstante α < 1, dann T (n) = Θ(t(n)).

Lösung für T (1) = Θ(1),T (n) = 2 · T (n/2) + Θ(n) ?

(1) T (n) = Θ(n2)

(2) T (n) = Θ(n · log n)

(3) T (n) = Θ(n · log2 n)

(4) T (n) = Θ(1)

(5) T (n) = Θ(n) Lsg: (2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 10 / 90

Page 29: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Rekursionsgleichungen (2) demogr.

Die Rekursion T (1) = c,T (n) = a · T(n

b

)+ t(n) sei zu lösen. n ist eine

Potenz der Zahl b > 1 und a > 1, c > 0 gelte.(a) Wenn t(n) = O

(n(logb a)−ε) für eine Konstante ε > 0,

dann ist T (n) = Θ(nlogb a).(b) Wenn t(n) = Θ(nlogb a), dann ist T (n) = Θ(nlogb a · logb n).(c) Wenn t(n) = Ω

(n(logb a)+ε) für eine Konstante ε > 0 und

a · t(n

b

)6 α · t(n) für eine Konstante α < 1, dann T (n) = Θ(t(n)).

Lösung für T (1) = Θ(1),T (n) = 2 · T (n/2) + Θ(n) ?

(1) T (n) = Θ(n2)

(2) T (n) = Θ(n · log n)

(3) T (n) = Θ(n · log2 n)

(4) T (n) = Θ(1)

(5) T (n) = Θ(n)

Lsg: (2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 10 / 90

Page 30: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Rekursionsgleichungen (2) demogr.

Die Rekursion T (1) = c,T (n) = a · T(n

b

)+ t(n) sei zu lösen. n ist eine

Potenz der Zahl b > 1 und a > 1, c > 0 gelte.(a) Wenn t(n) = O

(n(logb a)−ε) für eine Konstante ε > 0,

dann ist T (n) = Θ(nlogb a).(b) Wenn t(n) = Θ(nlogb a), dann ist T (n) = Θ(nlogb a · logb n).(c) Wenn t(n) = Ω

(n(logb a)+ε) für eine Konstante ε > 0 und

a · t(n

b

)6 α · t(n) für eine Konstante α < 1, dann T (n) = Θ(t(n)).

Lösung für T (1) = Θ(1),T (n) = 2 · T (n/2) + Θ(n) ?

(1) T (n) = Θ(n2)

(2) T (n) = Θ(n · log n)

(3) T (n) = Θ(n · log2 n)

(4) T (n) = Θ(1)

(5) T (n) = Θ(n) Lsg:

(2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 10 / 90

Page 31: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Rekursionsgleichungen (2) demogr.

Die Rekursion T (1) = c,T (n) = a · T(n

b

)+ t(n) sei zu lösen. n ist eine

Potenz der Zahl b > 1 und a > 1, c > 0 gelte.(a) Wenn t(n) = O

(n(logb a)−ε) für eine Konstante ε > 0,

dann ist T (n) = Θ(nlogb a).(b) Wenn t(n) = Θ(nlogb a), dann ist T (n) = Θ(nlogb a · logb n).(c) Wenn t(n) = Ω

(n(logb a)+ε) für eine Konstante ε > 0 und

a · t(n

b

)6 α · t(n) für eine Konstante α < 1, dann T (n) = Θ(t(n)).

Lösung für T (1) = Θ(1),T (n) = 2 · T (n/2) + Θ(n) ?

(1) T (n) = Θ(n2)

(2) T (n) = Θ(n · log n)

(3) T (n) = Θ(n · log2 n)

(4) T (n) = Θ(1)

(5) T (n) = Θ(n) Lsg: (2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 10 / 90

Page 32: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungen,

bitte unbedingt teilnehmen!

!!!

Sortieren Theoretische Informatik 1 31. Oktober 2019 11 / 90

Page 33: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungen,

bitte unbedingt teilnehmen!!

!!

Sortieren Theoretische Informatik 1 31. Oktober 2019 11 / 90

Page 34: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungen,

bitte unbedingt teilnehmen!!!

!

Sortieren Theoretische Informatik 1 31. Oktober 2019 11 / 90

Page 35: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungen,

bitte unbedingt teilnehmen!!!!

Sortieren Theoretische Informatik 1 31. Oktober 2019 11 / 90

Page 36: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungsbetrieb (1/2)

Die Teilnahme am Übungsbetrieb ist für einen erfolgreichen Besuchder Veranstaltung EXTREM WICHTIG!

Übungsblätter werden dienstags ausgegeben und in derdarauffolgenden Woche dienstags vor Beginn der Vorlesung –oder im Briefkasten zwischen Raum 115-116 bis 8:15 Uhr –abgegeben.In der kommenden Woche wird ein Präsenzblatt (WiederholungDS) besprochen.Das erste reguläre Blatt heute, Dienstag den 15. Oktober 2019,ausgegeben und Dienstag, den 22. Oktober abgegeben.Übungsgruppen treffen sich zum ersten Mal nächste Woche.

Sortieren Theoretische Informatik 1 31. Oktober 2019 12 / 90

Page 37: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungsbetrieb (1/2)

Die Teilnahme am Übungsbetrieb ist für einen erfolgreichen Besuchder Veranstaltung EXTREM WICHTIG!

Übungsblätter werden dienstags ausgegeben und in derdarauffolgenden Woche dienstags vor Beginn der Vorlesung –oder im Briefkasten zwischen Raum 115-116 bis 8:15 Uhr –abgegeben.

In der kommenden Woche wird ein Präsenzblatt (WiederholungDS) besprochen.Das erste reguläre Blatt heute, Dienstag den 15. Oktober 2019,ausgegeben und Dienstag, den 22. Oktober abgegeben.Übungsgruppen treffen sich zum ersten Mal nächste Woche.

Sortieren Theoretische Informatik 1 31. Oktober 2019 12 / 90

Page 38: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungsbetrieb (1/2)

Die Teilnahme am Übungsbetrieb ist für einen erfolgreichen Besuchder Veranstaltung EXTREM WICHTIG!

Übungsblätter werden dienstags ausgegeben und in derdarauffolgenden Woche dienstags vor Beginn der Vorlesung –oder im Briefkasten zwischen Raum 115-116 bis 8:15 Uhr –abgegeben.In der kommenden Woche wird ein Präsenzblatt (WiederholungDS) besprochen.Das erste reguläre Blatt heute, Dienstag den 15. Oktober 2019,ausgegeben und Dienstag, den 22. Oktober abgegeben.Übungsgruppen treffen sich zum ersten Mal nächste Woche.

Sortieren Theoretische Informatik 1 31. Oktober 2019 12 / 90

Page 39: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungsbetrieb (2/2)

Elf Übungsgruppen werden angeboten.I Informationen zum Übgungsbetrieb (insb. zur Anmeldung) und

ganz allgemein zur Veranstaltung finden Sie auf der Webseite.I Anmeldung noch bis Donnerstag, 17.10., 23:55 Uhr.

Übungsaufgaben können in Gruppen bearbeitet werden, Lösun-gen müssen SELBSTSTÄNDIG aufgeschrieben werden.

I Plagiate werden beim ersten Mal nicht bepunktet,I beim zweiten Mal werden alle Bonuspunkte gestrichen.

Idee und formale Vorgehensweise sind stets zu erläutern.

Sortieren Theoretische Informatik 1 31. Oktober 2019 13 / 90

Page 40: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungsbetrieb (2/2)

Elf Übungsgruppen werden angeboten.I Informationen zum Übgungsbetrieb (insb. zur Anmeldung) und

ganz allgemein zur Veranstaltung finden Sie auf der Webseite.I Anmeldung noch bis Donnerstag, 17.10., 23:55 Uhr.

Übungsaufgaben können in Gruppen bearbeitet werden, Lösun-gen müssen SELBSTSTÄNDIG aufgeschrieben werden.

I Plagiate werden beim ersten Mal nicht bepunktet,I beim zweiten Mal werden alle Bonuspunkte gestrichen.

Idee und formale Vorgehensweise sind stets zu erläutern.

Sortieren Theoretische Informatik 1 31. Oktober 2019 13 / 90

Page 41: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Übungsbetrieb (2/2)

Elf Übungsgruppen werden angeboten.I Informationen zum Übgungsbetrieb (insb. zur Anmeldung) und

ganz allgemein zur Veranstaltung finden Sie auf der Webseite.I Anmeldung noch bis Donnerstag, 17.10., 23:55 Uhr.

Übungsaufgaben können in Gruppen bearbeitet werden, Lösun-gen müssen SELBSTSTÄNDIG aufgeschrieben werden.

I Plagiate werden beim ersten Mal nicht bepunktet,I beim zweiten Mal werden alle Bonuspunkte gestrichen.

Idee und formale Vorgehensweise sind stets zu erläutern.

Sortieren Theoretische Informatik 1 31. Oktober 2019 13 / 90

Page 42: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Klausur

Erstklausur: Dienstag, den 18. Februar 2020, 9:00-12:00 Uhr.Zweitklausur: Montag, den 2. April 2020, um 9:00-12:00 Uhr.Die Prüfung ist bestanden wenn eine der Klausuren bestanden ist.

Bonus: Wenn die Klausur bestanden ist, werden Übungspunktezur Vebesserung der Note mit bis zu 10% zum Klausurergebnishinzugerechnet.Für die Anrechnung der Bonuspunkte müssen Sie mindestenseinmal eine Aufgabe im Tutorium vorgerechnet haben.Je nach Prüfungsordnung haben Sie u.U. die Möglichkeit einesFreiversuchs.

Sortieren Theoretische Informatik 1 31. Oktober 2019 14 / 90

Page 43: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Klausur

Erstklausur: Dienstag, den 18. Februar 2020, 9:00-12:00 Uhr.Zweitklausur: Montag, den 2. April 2020, um 9:00-12:00 Uhr.Die Prüfung ist bestanden wenn eine der Klausuren bestanden ist.Bonus: Wenn die Klausur bestanden ist, werden Übungspunktezur Vebesserung der Note mit bis zu 10% zum Klausurergebnishinzugerechnet.Für die Anrechnung der Bonuspunkte müssen Sie mindestenseinmal eine Aufgabe im Tutorium vorgerechnet haben.

Je nach Prüfungsordnung haben Sie u.U. die Möglichkeit einesFreiversuchs.

Sortieren Theoretische Informatik 1 31. Oktober 2019 14 / 90

Page 44: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Klausur

Erstklausur: Dienstag, den 18. Februar 2020, 9:00-12:00 Uhr.Zweitklausur: Montag, den 2. April 2020, um 9:00-12:00 Uhr.Die Prüfung ist bestanden wenn eine der Klausuren bestanden ist.Bonus: Wenn die Klausur bestanden ist, werden Übungspunktezur Vebesserung der Note mit bis zu 10% zum Klausurergebnishinzugerechnet.Für die Anrechnung der Bonuspunkte müssen Sie mindestenseinmal eine Aufgabe im Tutorium vorgerechnet haben.Je nach Prüfungsordnung haben Sie u.U. die Möglichkeit einesFreiversuchs.

Sortieren Theoretische Informatik 1 31. Oktober 2019 14 / 90

Page 45: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortieren

Sortieren Theoretische Informatik 1 31. Oktober 2019 15 / 90

Page 46: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Das Sortierproblem

Eingabe: Schlüssel x1, . . . , xn aus einer totalgeordneten Menge S.

Zum Beispiel: S = R, S = Q, S = Σ∗.Aufgabe: Bestimme eine sortierte Reihenfolge, also eine Per-

mutation π mit

xπ(1) 6 xπ(2) 6 · · · 6 xπ(n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 16 / 90

Page 47: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Warum betrachten wir das Sortierproblem?

- Wichtiges Problem mit VIELEN Anwendungen .

- Können algorithmische Ideen modellhaft austesten:I Sortieren im Hauptspeicher,I Sortieren in einem Externspeicher,I würfelnde Algorithmen,I parallele Algorithmen,I untere Schranke: Wieviele Operationen sind notwendig?

Sortieren Theoretische Informatik 1 31. Oktober 2019 17 / 90

Page 48: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Warum betrachten wir das Sortierproblem?

- Wichtiges Problem mit VIELEN Anwendungen .

- Können algorithmische Ideen modellhaft austesten:

I Sortieren im Hauptspeicher,I Sortieren in einem Externspeicher,I würfelnde Algorithmen,I parallele Algorithmen,I untere Schranke: Wieviele Operationen sind notwendig?

Sortieren Theoretische Informatik 1 31. Oktober 2019 17 / 90

Page 49: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Warum betrachten wir das Sortierproblem?

- Wichtiges Problem mit VIELEN Anwendungen .

- Können algorithmische Ideen modellhaft austesten:I Sortieren im Hauptspeicher,

I Sortieren in einem Externspeicher,I würfelnde Algorithmen,I parallele Algorithmen,I untere Schranke: Wieviele Operationen sind notwendig?

Sortieren Theoretische Informatik 1 31. Oktober 2019 17 / 90

Page 50: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Warum betrachten wir das Sortierproblem?

- Wichtiges Problem mit VIELEN Anwendungen .

- Können algorithmische Ideen modellhaft austesten:I Sortieren im Hauptspeicher,I Sortieren in einem Externspeicher,

I würfelnde Algorithmen,I parallele Algorithmen,I untere Schranke: Wieviele Operationen sind notwendig?

Sortieren Theoretische Informatik 1 31. Oktober 2019 17 / 90

Page 51: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Warum betrachten wir das Sortierproblem?

- Wichtiges Problem mit VIELEN Anwendungen .

- Können algorithmische Ideen modellhaft austesten:I Sortieren im Hauptspeicher,I Sortieren in einem Externspeicher,I würfelnde Algorithmen,

I parallele Algorithmen,I untere Schranke: Wieviele Operationen sind notwendig?

Sortieren Theoretische Informatik 1 31. Oktober 2019 17 / 90

Page 52: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Warum betrachten wir das Sortierproblem?

- Wichtiges Problem mit VIELEN Anwendungen .

- Können algorithmische Ideen modellhaft austesten:I Sortieren im Hauptspeicher,I Sortieren in einem Externspeicher,I würfelnde Algorithmen,I parallele Algorithmen,

I untere Schranke: Wieviele Operationen sind notwendig?

Sortieren Theoretische Informatik 1 31. Oktober 2019 17 / 90

Page 53: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Warum betrachten wir das Sortierproblem?

- Wichtiges Problem mit VIELEN Anwendungen .

- Können algorithmische Ideen modellhaft austesten:I Sortieren im Hauptspeicher,I Sortieren in einem Externspeicher,I würfelnde Algorithmen,I parallele Algorithmen,I untere Schranke: Wieviele Operationen sind notwendig?

Sortieren Theoretische Informatik 1 31. Oktober 2019 17 / 90

Page 54: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubble Sort

Sortieren Theoretische Informatik 1 31. Oktober 2019 18 / 90

Page 55: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubble Sort und Kollegen

Wir beginnen mit den elementaren Sortierverfahren Bubble Sort,Selection Sort und Insertion Sort. Wie arbeitet Bubble Sort?

active = 1;for (i=1; active; i++) //Phase i beginnt:

active = 0;for (j=1; j <= n-i; j++)

if (A[j] > A[j+1]) active = 1; swap(A, j, j+1);

- Phase 1:I vergleicht Nachbarn sukzessive, von links nach rechts, und

vertauscht, wenn nötig.I Die größte Zahl erreicht Position n, wo sie auch hingehört.

- Phase i : maxA[1], . . . ,A[n − i + 1] endet in Position n − i + 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 19 / 90

Page 56: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubble Sort und Kollegen

Wir beginnen mit den elementaren Sortierverfahren Bubble Sort,Selection Sort und Insertion Sort. Wie arbeitet Bubble Sort?

active = 1;for (i=1; active; i++) //Phase i beginnt:

active = 0;for (j=1; j <= n-i; j++)

if (A[j] > A[j+1]) active = 1; swap(A, j, j+1);

- Phase 1:I vergleicht Nachbarn sukzessive, von links nach rechts, und

vertauscht, wenn nötig.I Die größte Zahl erreicht Position n, wo sie auch hingehört.

- Phase i : maxA[1], . . . ,A[n − i + 1] endet in Position n − i + 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 19 / 90

Page 57: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubble Sort und Kollegen

Wir beginnen mit den elementaren Sortierverfahren Bubble Sort,Selection Sort und Insertion Sort. Wie arbeitet Bubble Sort?

active = 1;for (i=1; active; i++) //Phase i beginnt:

active = 0;for (j=1; j <= n-i; j++)

if (A[j] > A[j+1]) active = 1; swap(A, j, j+1);

- Phase 1:I vergleicht Nachbarn sukzessive, von links nach rechts, und

vertauscht, wenn nötig.I Die größte Zahl erreicht Position n, wo sie auch hingehört.

- Phase i : maxA[1], . . . ,A[n − i + 1] endet in Position n − i + 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 19 / 90

Page 58: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubble Sort und Kollegen

Wir beginnen mit den elementaren Sortierverfahren Bubble Sort,Selection Sort und Insertion Sort. Wie arbeitet Bubble Sort?

active = 1;for (i=1; active; i++) //Phase i beginnt:

active = 0;for (j=1; j <= n-i; j++)

if (A[j] > A[j+1]) active = 1; swap(A, j, j+1);

- Phase 1:I vergleicht Nachbarn sukzessive, von links nach rechts, und

vertauscht, wenn nötig.I Die größte Zahl erreicht Position n, wo sie auch hingehört.

- Phase i : maxA[1], . . . ,A[n − i + 1] endet in Position n − i + 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 19 / 90

Page 59: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubble Sort und Kollegen

Wir beginnen mit den elementaren Sortierverfahren Bubble Sort,Selection Sort und Insertion Sort. Wie arbeitet Bubble Sort?

active = 1;for (i=1; active; i++) //Phase i beginnt:

active = 0;for (j=1; j <= n-i; j++)

if (A[j] > A[j+1]) active = 1; swap(A, j, j+1);

- Phase 1:I vergleicht Nachbarn sukzessive, von links nach rechts, und

vertauscht, wenn nötig.

I Die größte Zahl erreicht Position n, wo sie auch hingehört.

- Phase i : maxA[1], . . . ,A[n − i + 1] endet in Position n − i + 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 19 / 90

Page 60: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubble Sort und Kollegen

Wir beginnen mit den elementaren Sortierverfahren Bubble Sort,Selection Sort und Insertion Sort. Wie arbeitet Bubble Sort?

active = 1;for (i=1; active; i++) //Phase i beginnt:

active = 0;for (j=1; j <= n-i; j++)

if (A[j] > A[j+1]) active = 1; swap(A, j, j+1);

- Phase 1:I vergleicht Nachbarn sukzessive, von links nach rechts, und

vertauscht, wenn nötig.I Die größte Zahl erreicht Position n, wo sie auch hingehört.

- Phase i : maxA[1], . . . ,A[n − i + 1] endet in Position n − i + 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 19 / 90

Page 61: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubble Sort und Kollegen

Wir beginnen mit den elementaren Sortierverfahren Bubble Sort,Selection Sort und Insertion Sort. Wie arbeitet Bubble Sort?

active = 1;for (i=1; active; i++) //Phase i beginnt:

active = 0;for (j=1; j <= n-i; j++)

if (A[j] > A[j+1]) active = 1; swap(A, j, j+1);

- Phase 1:I vergleicht Nachbarn sukzessive, von links nach rechts, und

vertauscht, wenn nötig.I Die größte Zahl erreicht Position n, wo sie auch hingehört.

- Phase i : maxA[1], . . . ,A[n − i + 1] endet in Position

n − i + 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 19 / 90

Page 62: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubble Sort und Kollegen

Wir beginnen mit den elementaren Sortierverfahren Bubble Sort,Selection Sort und Insertion Sort. Wie arbeitet Bubble Sort?

active = 1;for (i=1; active; i++) //Phase i beginnt:

active = 0;for (j=1; j <= n-i; j++)

if (A[j] > A[j+1]) active = 1; swap(A, j, j+1);

- Phase 1:I vergleicht Nachbarn sukzessive, von links nach rechts, und

vertauscht, wenn nötig.I Die größte Zahl erreicht Position n, wo sie auch hingehört.

- Phase i : maxA[1], . . . ,A[n − i + 1] endet in Position n − i + 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 19 / 90

Page 63: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit Bubblesort (1) demogr.

Wie hoch ist die worst-case Laufzeit von Bubblesort für n Schlüssel?

(1) T (n) = Θ(log n)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n2)

(5) T (n) = Θ(2n)

Auflösung: (4) T (n) = Θ(n2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 20 / 90

Page 64: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit Bubblesort (1) demogr.

Wie hoch ist die worst-case Laufzeit von Bubblesort für n Schlüssel?

(1) T (n) = Θ(log n)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n2)

(5) T (n) = Θ(2n)

Auflösung:

(4) T (n) = Θ(n2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 20 / 90

Page 65: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit Bubblesort (1) demogr.

Wie hoch ist die worst-case Laufzeit von Bubblesort für n Schlüssel?

(1) T (n) = Θ(log n)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n2)

(5) T (n) = Θ(2n)

Auflösung: (4) T (n) = Θ(n2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 20 / 90

Page 66: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die worst-case Laufzeit

Wir zählen die Anzahl der Vergleiche.

n − 1 Phasen genügen.In Phase i gibt es n − i Vergleiche. Insgesamt:

n−1∑i=1

(n − i) =n−1∑j=1

j =n · (n − 1)

2

Vergleiche.Die Eingabe (2,3, . . . ,n − 1,n,1) erfordert n − 1 Phasen.

- Die worst-case Laufzeit für n Schlüssel ist Θ(n2).- Wird Bubblesort durch das worst-case Verhalten genau

beschrieben oder ist die erwartete Laufzeit besser?

Sortieren Theoretische Informatik 1 31. Oktober 2019 21 / 90

Page 67: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die worst-case Laufzeit

Wir zählen die Anzahl der Vergleiche.

n − 1 Phasen genügen.

In Phase i gibt es n − i Vergleiche. Insgesamt:

n−1∑i=1

(n − i) =n−1∑j=1

j =n · (n − 1)

2

Vergleiche.Die Eingabe (2,3, . . . ,n − 1,n,1) erfordert n − 1 Phasen.

- Die worst-case Laufzeit für n Schlüssel ist Θ(n2).- Wird Bubblesort durch das worst-case Verhalten genau

beschrieben oder ist die erwartete Laufzeit besser?

Sortieren Theoretische Informatik 1 31. Oktober 2019 21 / 90

Page 68: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die worst-case Laufzeit

Wir zählen die Anzahl der Vergleiche.

n − 1 Phasen genügen.In Phase i gibt es

n − i Vergleiche. Insgesamt:

n−1∑i=1

(n − i) =n−1∑j=1

j =n · (n − 1)

2

Vergleiche.Die Eingabe (2,3, . . . ,n − 1,n,1) erfordert n − 1 Phasen.

- Die worst-case Laufzeit für n Schlüssel ist Θ(n2).- Wird Bubblesort durch das worst-case Verhalten genau

beschrieben oder ist die erwartete Laufzeit besser?

Sortieren Theoretische Informatik 1 31. Oktober 2019 21 / 90

Page 69: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die worst-case Laufzeit

Wir zählen die Anzahl der Vergleiche.

n − 1 Phasen genügen.In Phase i gibt es n − i Vergleiche. Insgesamt:

n−1∑i=1

(n − i) =

n−1∑j=1

j =n · (n − 1)

2

Vergleiche.Die Eingabe (2,3, . . . ,n − 1,n,1) erfordert n − 1 Phasen.

- Die worst-case Laufzeit für n Schlüssel ist Θ(n2).- Wird Bubblesort durch das worst-case Verhalten genau

beschrieben oder ist die erwartete Laufzeit besser?

Sortieren Theoretische Informatik 1 31. Oktober 2019 21 / 90

Page 70: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die worst-case Laufzeit

Wir zählen die Anzahl der Vergleiche.

n − 1 Phasen genügen.In Phase i gibt es n − i Vergleiche. Insgesamt:

n−1∑i=1

(n − i) =n−1∑j=1

j =

n · (n − 1)

2

Vergleiche.Die Eingabe (2,3, . . . ,n − 1,n,1) erfordert n − 1 Phasen.

- Die worst-case Laufzeit für n Schlüssel ist Θ(n2).- Wird Bubblesort durch das worst-case Verhalten genau

beschrieben oder ist die erwartete Laufzeit besser?

Sortieren Theoretische Informatik 1 31. Oktober 2019 21 / 90

Page 71: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die worst-case Laufzeit

Wir zählen die Anzahl der Vergleiche.

n − 1 Phasen genügen.In Phase i gibt es n − i Vergleiche. Insgesamt:

n−1∑i=1

(n − i) =n−1∑j=1

j =n · (n − 1)

2

Vergleiche.

Die Eingabe (2,3, . . . ,n − 1,n,1) erfordert n − 1 Phasen.

- Die worst-case Laufzeit für n Schlüssel ist Θ(n2).- Wird Bubblesort durch das worst-case Verhalten genau

beschrieben oder ist die erwartete Laufzeit besser?

Sortieren Theoretische Informatik 1 31. Oktober 2019 21 / 90

Page 72: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die worst-case Laufzeit

Wir zählen die Anzahl der Vergleiche.

n − 1 Phasen genügen.In Phase i gibt es n − i Vergleiche. Insgesamt:

n−1∑i=1

(n − i) =n−1∑j=1

j =n · (n − 1)

2

Vergleiche.Die Eingabe (2,3, . . . ,n − 1,n,1) erfordert n − 1 Phasen.

- Die worst-case Laufzeit für n Schlüssel ist Θ(n2).- Wird Bubblesort durch das worst-case Verhalten genau

beschrieben oder ist die erwartete Laufzeit besser?

Sortieren Theoretische Informatik 1 31. Oktober 2019 21 / 90

Page 73: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die worst-case Laufzeit

Wir zählen die Anzahl der Vergleiche.

n − 1 Phasen genügen.In Phase i gibt es n − i Vergleiche. Insgesamt:

n−1∑i=1

(n − i) =n−1∑j=1

j =n · (n − 1)

2

Vergleiche.Die Eingabe (2,3, . . . ,n − 1,n,1) erfordert n − 1 Phasen.

- Die worst-case Laufzeit für n Schlüssel ist Θ(n2).

- Wird Bubblesort durch das worst-case Verhalten genaubeschrieben oder ist die erwartete Laufzeit besser?

Sortieren Theoretische Informatik 1 31. Oktober 2019 21 / 90

Page 74: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die worst-case Laufzeit

Wir zählen die Anzahl der Vergleiche.

n − 1 Phasen genügen.In Phase i gibt es n − i Vergleiche. Insgesamt:

n−1∑i=1

(n − i) =n−1∑j=1

j =n · (n − 1)

2

Vergleiche.Die Eingabe (2,3, . . . ,n − 1,n,1) erfordert n − 1 Phasen.

- Die worst-case Laufzeit für n Schlüssel ist Θ(n2).- Wird Bubblesort durch das worst-case Verhalten genau

beschrieben oder ist die erwartete Laufzeit besser?

Sortieren Theoretische Informatik 1 31. Oktober 2019 21 / 90

Page 75: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit Bubblesort (2) demogr.

Wie hoch ist die erwartete Laufzeit von Bubblesort für n Schlüssel?

(1) T (n) = Θ(log n)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n2)

(5) T (n) = Θ(2n)

Auflösung: (4) T (n) = Θ(n2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 22 / 90

Page 76: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit Bubblesort (2) demogr.

Wie hoch ist die erwartete Laufzeit von Bubblesort für n Schlüssel?

(1) T (n) = Θ(log n)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n2)

(5) T (n) = Θ(2n)

Auflösung:

(4) T (n) = Θ(n2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 22 / 90

Page 77: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit Bubblesort (2) demogr.

Wie hoch ist die erwartete Laufzeit von Bubblesort für n Schlüssel?

(1) T (n) = Θ(log n)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n2)

(5) T (n) = Θ(2n)

Auflösung: (4) T (n) = Θ(n2)

Sortieren Theoretische Informatik 1 31. Oktober 2019 22 / 90

Page 78: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.I Die 1 muss aber nach links zur Position 1 bewegt werden.I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 79: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.I Die 1 muss aber nach links zur Position 1 bewegt werden.I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 80: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.I Die 1 muss aber nach links zur Position 1 bewegt werden.I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 81: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.

I Die 1 muss aber nach links zur Position 1 bewegt werden.I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 82: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.I Die 1 muss aber nach links zur Position 1 bewegt werden.

I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 83: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.I Die 1 muss aber nach links zur Position 1 bewegt werden.I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 84: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.I Die 1 muss aber nach links zur Position 1 bewegt werden.I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 85: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.I Die 1 muss aber nach links zur Position 1 bewegt werden.I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 86: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.I Die 1 muss aber nach links zur Position 1 bewegt werden.I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =

n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 87: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Bubblesort: Die erwartete Laufzeit

Die erwartete Laufzeit, wenn alle Permutationen π = (π(1), . . . , π(n))der Eingabe (1, . . . ,n) gleichwahrscheinlich sind, ist

Erwartete Laufzeit =∑π

1n!· Vergleiche(π).

Für die Hälfte aller Permutationen liegt die 1 in der rechten Hälfte.I Die 1 muss aber nach links zur Position 1 bewegt werden.I Eine Iteration bewegt die 1 aber nur um eine Position nach links.

Mindestens die Hälfte aller Permutationen benötigen n2 Iterationen.

In n/2 Iterationen werden aber mindestens

n/2∑i=1

(n/2− i) =

n/2−1∑j=1

j =n4

(n2− 1)

Vergleiche ausgeführt.

Sortieren Theoretische Informatik 1 31. Oktober 2019 23 / 90

Page 88: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Laufzeit von Bubble Sort

Erwartete Laufzeit =∑

π1n! · Vergleiche(π).

Für mindestens die Hälfte aller Permutationen werden n4 (n

2 − 1)Operationen benötigt.Die erwartete Laufzeit ist mindestens n

8 (n2 − 1).

Θ(n2) ist die worst-case wie auch die erwartete Laufzeit vonBubble Sort.

Bubble Sort ist sehr langsam, aber relativ schnell, wenn sich alleSchlüssel bereits in der Nähe ihrer endgültigen Position befinden.

Sortieren Theoretische Informatik 1 31. Oktober 2019 24 / 90

Page 89: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Laufzeit von Bubble Sort

Erwartete Laufzeit =∑

π1n! · Vergleiche(π).

Für mindestens die Hälfte aller Permutationen werden n4 (n

2 − 1)Operationen benötigt.

Die erwartete Laufzeit ist mindestens n8 (n

2 − 1).

Θ(n2) ist die worst-case wie auch die erwartete Laufzeit vonBubble Sort.

Bubble Sort ist sehr langsam, aber relativ schnell, wenn sich alleSchlüssel bereits in der Nähe ihrer endgültigen Position befinden.

Sortieren Theoretische Informatik 1 31. Oktober 2019 24 / 90

Page 90: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Laufzeit von Bubble Sort

Erwartete Laufzeit =∑

π1n! · Vergleiche(π).

Für mindestens die Hälfte aller Permutationen werden n4 (n

2 − 1)Operationen benötigt.Die erwartete Laufzeit ist mindestens n

8 (n2 − 1).

Θ(n2) ist die worst-case wie auch die erwartete Laufzeit vonBubble Sort.

Bubble Sort ist sehr langsam, aber relativ schnell, wenn sich alleSchlüssel bereits in der Nähe ihrer endgültigen Position befinden.

Sortieren Theoretische Informatik 1 31. Oktober 2019 24 / 90

Page 91: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Laufzeit von Bubble Sort

Erwartete Laufzeit =∑

π1n! · Vergleiche(π).

Für mindestens die Hälfte aller Permutationen werden n4 (n

2 − 1)Operationen benötigt.Die erwartete Laufzeit ist mindestens n

8 (n2 − 1).

Θ(n2) ist die worst-case wie auch die erwartete Laufzeit vonBubble Sort.

Bubble Sort ist sehr langsam, aber relativ schnell, wenn sich alleSchlüssel bereits in der Nähe ihrer endgültigen Position befinden.

Sortieren Theoretische Informatik 1 31. Oktober 2019 24 / 90

Page 92: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Laufzeit von Bubble Sort

Erwartete Laufzeit =∑

π1n! · Vergleiche(π).

Für mindestens die Hälfte aller Permutationen werden n4 (n

2 − 1)Operationen benötigt.Die erwartete Laufzeit ist mindestens n

8 (n2 − 1).

Θ(n2) ist die worst-case wie auch die erwartete Laufzeit vonBubble Sort.

Bubble Sort ist sehr langsam, aber relativ schnell, wenn sich alleSchlüssel bereits in der Nähe ihrer endgültigen Position befinden.

Sortieren Theoretische Informatik 1 31. Oktober 2019 24 / 90

Page 93: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Selection Sort

Sortieren Theoretische Informatik 1 31. Oktober 2019 25 / 90

Page 94: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Selection Sort

for (i=1; i < n ; i++)finde die kleinste der Zahlen A[i],...,A[n] durch lineare Sucheund vertausche sie mit A[i].

Selection Sort besteht aus genau n − 1 Iterationen.In der i-ten Phase benötigt Selection Sort n − i Vergleiche, abernur eine Vertauschung.Insgesamt:

n−1∑i=1

(n − i) =n−1∑i=1

i =(n − 1) · n

2Operationen.

- Θ(n2) Vergleiche für JEDE Eingabe von n Schlüsseln.- Positiv: Nur n − 1 Vertauschungen. (Gut bei langen Datensätzen.)

Sortieren Theoretische Informatik 1 31. Oktober 2019 26 / 90

Page 95: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Selection Sort

for (i=1; i < n ; i++)finde die kleinste der Zahlen A[i],...,A[n] durch lineare Sucheund vertausche sie mit A[i].

Selection Sort besteht aus genau n − 1 Iterationen.

In der i-ten Phase benötigt Selection Sort n − i Vergleiche, abernur eine Vertauschung.Insgesamt:

n−1∑i=1

(n − i) =n−1∑i=1

i =(n − 1) · n

2Operationen.

- Θ(n2) Vergleiche für JEDE Eingabe von n Schlüsseln.- Positiv: Nur n − 1 Vertauschungen. (Gut bei langen Datensätzen.)

Sortieren Theoretische Informatik 1 31. Oktober 2019 26 / 90

Page 96: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Selection Sort

for (i=1; i < n ; i++)finde die kleinste der Zahlen A[i],...,A[n] durch lineare Sucheund vertausche sie mit A[i].

Selection Sort besteht aus genau n − 1 Iterationen.In der i-ten Phase benötigt Selection Sort n − i Vergleiche, abernur eine Vertauschung.

Insgesamt:n−1∑i=1

(n − i) =n−1∑i=1

i =(n − 1) · n

2Operationen.

- Θ(n2) Vergleiche für JEDE Eingabe von n Schlüsseln.- Positiv: Nur n − 1 Vertauschungen. (Gut bei langen Datensätzen.)

Sortieren Theoretische Informatik 1 31. Oktober 2019 26 / 90

Page 97: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Selection Sort

for (i=1; i < n ; i++)finde die kleinste der Zahlen A[i],...,A[n] durch lineare Sucheund vertausche sie mit A[i].

Selection Sort besteht aus genau n − 1 Iterationen.In der i-ten Phase benötigt Selection Sort n − i Vergleiche, abernur eine Vertauschung.Insgesamt:

n−1∑i=1

(n − i) =

n−1∑i=1

i =(n − 1) · n

2Operationen.

- Θ(n2) Vergleiche für JEDE Eingabe von n Schlüsseln.- Positiv: Nur n − 1 Vertauschungen. (Gut bei langen Datensätzen.)

Sortieren Theoretische Informatik 1 31. Oktober 2019 26 / 90

Page 98: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Selection Sort

for (i=1; i < n ; i++)finde die kleinste der Zahlen A[i],...,A[n] durch lineare Sucheund vertausche sie mit A[i].

Selection Sort besteht aus genau n − 1 Iterationen.In der i-ten Phase benötigt Selection Sort n − i Vergleiche, abernur eine Vertauschung.Insgesamt:

n−1∑i=1

(n − i) =n−1∑i=1

i =

(n − 1) · n2

Operationen.

- Θ(n2) Vergleiche für JEDE Eingabe von n Schlüsseln.- Positiv: Nur n − 1 Vertauschungen. (Gut bei langen Datensätzen.)

Sortieren Theoretische Informatik 1 31. Oktober 2019 26 / 90

Page 99: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Selection Sort

for (i=1; i < n ; i++)finde die kleinste der Zahlen A[i],...,A[n] durch lineare Sucheund vertausche sie mit A[i].

Selection Sort besteht aus genau n − 1 Iterationen.In der i-ten Phase benötigt Selection Sort n − i Vergleiche, abernur eine Vertauschung.Insgesamt:

n−1∑i=1

(n − i) =n−1∑i=1

i =(n − 1) · n

2Operationen.

- Θ(n2) Vergleiche für JEDE Eingabe von n Schlüsseln.- Positiv: Nur n − 1 Vertauschungen. (Gut bei langen Datensätzen.)

Sortieren Theoretische Informatik 1 31. Oktober 2019 26 / 90

Page 100: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Selection Sort

for (i=1; i < n ; i++)finde die kleinste der Zahlen A[i],...,A[n] durch lineare Sucheund vertausche sie mit A[i].

Selection Sort besteht aus genau n − 1 Iterationen.In der i-ten Phase benötigt Selection Sort n − i Vergleiche, abernur eine Vertauschung.Insgesamt:

n−1∑i=1

(n − i) =n−1∑i=1

i =(n − 1) · n

2Operationen.

- Θ(n2) Vergleiche für JEDE Eingabe von n Schlüsseln.

- Positiv: Nur n − 1 Vertauschungen. (Gut bei langen Datensätzen.)

Sortieren Theoretische Informatik 1 31. Oktober 2019 26 / 90

Page 101: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Selection Sort

for (i=1; i < n ; i++)finde die kleinste der Zahlen A[i],...,A[n] durch lineare Sucheund vertausche sie mit A[i].

Selection Sort besteht aus genau n − 1 Iterationen.In der i-ten Phase benötigt Selection Sort n − i Vergleiche, abernur eine Vertauschung.Insgesamt:

n−1∑i=1

(n − i) =n−1∑i=1

i =(n − 1) · n

2Operationen.

- Θ(n2) Vergleiche für JEDE Eingabe von n Schlüsseln.- Positiv: Nur n − 1 Vertauschungen. (Gut bei langen Datensätzen.)

Sortieren Theoretische Informatik 1 31. Oktober 2019 26 / 90

Page 102: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Insertion Sort

Sortieren Theoretische Informatik 1 31. Oktober 2019 27 / 90

Page 103: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Insertion Sort

for (i = 1; i < n; i++)

//Die Zahlen A[1], ...,A[i] sind bereits sortiert.Füge A[i + 1] in die Folge (A[1], ...,A[i]) ein. (Web)

Insertion Sort arbeitet wie das von Hand Sortieren vonSpielkarten.In Phase i wird A[i + 1] mit bis zu i Zahlen verglichen.Für die Eingabe (n,n − 1,n − 2, . . . ,3,2,1) werden

n−1∑i=1

i =(n − 1) · n

2Vergleiche durchgeführt.

Auch Insertion Sort führt Θ(n2) Operationen im worst-case aus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 28 / 90

Page 104: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Insertion Sort

for (i = 1; i < n; i++)//Die Zahlen A[1], ...,A[i] sind bereits sortiert.

Füge A[i + 1] in die Folge (A[1], ...,A[i]) ein. (Web)

Insertion Sort arbeitet wie das von Hand Sortieren vonSpielkarten.In Phase i wird A[i + 1] mit bis zu i Zahlen verglichen.Für die Eingabe (n,n − 1,n − 2, . . . ,3,2,1) werden

n−1∑i=1

i =(n − 1) · n

2Vergleiche durchgeführt.

Auch Insertion Sort führt Θ(n2) Operationen im worst-case aus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 28 / 90

Page 105: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Insertion Sort

for (i = 1; i < n; i++)//Die Zahlen A[1], ...,A[i] sind bereits sortiert.Füge A[i + 1] in die Folge (A[1], ...,A[i]) ein. (Web)

Insertion Sort arbeitet wie das von Hand Sortieren vonSpielkarten.In Phase i wird A[i + 1] mit bis zu i Zahlen verglichen.Für die Eingabe (n,n − 1,n − 2, . . . ,3,2,1) werden

n−1∑i=1

i =(n − 1) · n

2Vergleiche durchgeführt.

Auch Insertion Sort führt Θ(n2) Operationen im worst-case aus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 28 / 90

Page 106: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Insertion Sort

for (i = 1; i < n; i++)//Die Zahlen A[1], ...,A[i] sind bereits sortiert.Füge A[i + 1] in die Folge (A[1], ...,A[i]) ein. (Web)

Insertion Sort arbeitet wie das von Hand Sortieren vonSpielkarten.

In Phase i wird A[i + 1] mit bis zu i Zahlen verglichen.Für die Eingabe (n,n − 1,n − 2, . . . ,3,2,1) werden

n−1∑i=1

i =(n − 1) · n

2Vergleiche durchgeführt.

Auch Insertion Sort führt Θ(n2) Operationen im worst-case aus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 28 / 90

Page 107: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Insertion Sort

for (i = 1; i < n; i++)//Die Zahlen A[1], ...,A[i] sind bereits sortiert.Füge A[i + 1] in die Folge (A[1], ...,A[i]) ein. (Web)

Insertion Sort arbeitet wie das von Hand Sortieren vonSpielkarten.In Phase i wird A[i + 1] mit bis zu i Zahlen verglichen.

Für die Eingabe (n,n − 1,n − 2, . . . ,3,2,1) werden

n−1∑i=1

i =(n − 1) · n

2Vergleiche durchgeführt.

Auch Insertion Sort führt Θ(n2) Operationen im worst-case aus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 28 / 90

Page 108: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Insertion Sort

for (i = 1; i < n; i++)//Die Zahlen A[1], ...,A[i] sind bereits sortiert.Füge A[i + 1] in die Folge (A[1], ...,A[i]) ein. (Web)

Insertion Sort arbeitet wie das von Hand Sortieren vonSpielkarten.In Phase i wird A[i + 1] mit bis zu i Zahlen verglichen.Für die Eingabe (n,n − 1,n − 2, . . . ,3,2,1) werden

n−1∑i=1

i =

(n − 1) · n2

Vergleiche durchgeführt.

Auch Insertion Sort führt Θ(n2) Operationen im worst-case aus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 28 / 90

Page 109: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Insertion Sort

for (i = 1; i < n; i++)//Die Zahlen A[1], ...,A[i] sind bereits sortiert.Füge A[i + 1] in die Folge (A[1], ...,A[i]) ein. (Web)

Insertion Sort arbeitet wie das von Hand Sortieren vonSpielkarten.In Phase i wird A[i + 1] mit bis zu i Zahlen verglichen.Für die Eingabe (n,n − 1,n − 2, . . . ,3,2,1) werden

n−1∑i=1

i =(n − 1) · n

2Vergleiche durchgeführt.

Auch Insertion Sort führt Θ(n2) Operationen im worst-case aus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 28 / 90

Page 110: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Insertion Sort

for (i = 1; i < n; i++)//Die Zahlen A[1], ...,A[i] sind bereits sortiert.Füge A[i + 1] in die Folge (A[1], ...,A[i]) ein. (Web)

Insertion Sort arbeitet wie das von Hand Sortieren vonSpielkarten.In Phase i wird A[i + 1] mit bis zu i Zahlen verglichen.Für die Eingabe (n,n − 1,n − 2, . . . ,3,2,1) werden

n−1∑i=1

i =(n − 1) · n

2Vergleiche durchgeführt.

Auch Insertion Sort führt Θ(n2) Operationen im worst-case aus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 28 / 90

Page 111: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Vorwissen aus Datenstrukturen demogr.

Wir wissen schon wie man schneller sortiert: Heapsort!

Wie hoch ist die Laufzeit von Heapsort für n Schlüssel?

(1) T (n) = Θ(n)

(2) T (n) = Θ(n log log n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n log2 n)

(5) T (n) = Θ(n3/2)

Auflösung: (3) T (n) = Θ(n log n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 29 / 90

Page 112: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Vorwissen aus Datenstrukturen demogr.

Wir wissen schon wie man schneller sortiert: Heapsort!

Wie hoch ist die Laufzeit von Heapsort für n Schlüssel?

(1) T (n) = Θ(n)

(2) T (n) = Θ(n log log n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n log2 n)

(5) T (n) = Θ(n3/2)

Auflösung: (3) T (n) = Θ(n log n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 29 / 90

Page 113: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Vorwissen aus Datenstrukturen demogr.

Wir wissen schon wie man schneller sortiert: Heapsort!

Wie hoch ist die Laufzeit von Heapsort für n Schlüssel?

(1) T (n) = Θ(n)

(2) T (n) = Θ(n log log n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n log2 n)

(5) T (n) = Θ(n3/2)

Auflösung:

(3) T (n) = Θ(n log n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 29 / 90

Page 114: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Vorwissen aus Datenstrukturen demogr.

Wir wissen schon wie man schneller sortiert: Heapsort!

Wie hoch ist die Laufzeit von Heapsort für n Schlüssel?

(1) T (n) = Θ(n)

(2) T (n) = Θ(n log log n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n log2 n)

(5) T (n) = Θ(n3/2)

Auflösung: (3) T (n) = Θ(n log n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 29 / 90

Page 115: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Heapsort

Sortieren Theoretische Informatik 1 31. Oktober 2019 30 / 90

Page 116: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Heapsort

- Füge alle n Schlüssel in einen anfänglich leeren Heap ein. Diesgelingt in Zeit O(n ·

log2 n) –sogar Linearzeit O(n) ist möglich.- Dann produziere die sortierte Reihenfolge durch n-malige

Anwendung der Deletemin-Operation in Zeit O(n · log2 n).

Heapsort sortiert n Schlüssel in Zeit O(n · log2 n).Aber Heapsort ist nur ein „asymptotischer Weltmeister“. Es gibt(um konstante Faktoren) schnellere Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 31 / 90

Page 117: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Heapsort

- Füge alle n Schlüssel in einen anfänglich leeren Heap ein. Diesgelingt in Zeit O(n · log2 n) –sogar Linearzeit O(n) ist möglich.

- Dann produziere die sortierte Reihenfolge durch n-maligeAnwendung der Deletemin-Operation in Zeit O(n · log2 n).

Heapsort sortiert n Schlüssel in Zeit O(n · log2 n).Aber Heapsort ist nur ein „asymptotischer Weltmeister“. Es gibt(um konstante Faktoren) schnellere Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 31 / 90

Page 118: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Heapsort

- Füge alle n Schlüssel in einen anfänglich leeren Heap ein. Diesgelingt in Zeit O(n · log2 n) –sogar Linearzeit O(n) ist möglich.

- Dann produziere die sortierte Reihenfolge durch n-maligeAnwendung der Deletemin-Operation in Zeit O(n ·

log2 n).

Heapsort sortiert n Schlüssel in Zeit O(n · log2 n).Aber Heapsort ist nur ein „asymptotischer Weltmeister“. Es gibt(um konstante Faktoren) schnellere Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 31 / 90

Page 119: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Heapsort

- Füge alle n Schlüssel in einen anfänglich leeren Heap ein. Diesgelingt in Zeit O(n · log2 n) –sogar Linearzeit O(n) ist möglich.

- Dann produziere die sortierte Reihenfolge durch n-maligeAnwendung der Deletemin-Operation in Zeit O(n · log2 n).

Heapsort sortiert n Schlüssel in Zeit O(n · log2 n).Aber Heapsort ist nur ein „asymptotischer Weltmeister“. Es gibt(um konstante Faktoren) schnellere Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 31 / 90

Page 120: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Heapsort

- Füge alle n Schlüssel in einen anfänglich leeren Heap ein. Diesgelingt in Zeit O(n · log2 n) –sogar Linearzeit O(n) ist möglich.

- Dann produziere die sortierte Reihenfolge durch n-maligeAnwendung der Deletemin-Operation in Zeit O(n · log2 n).

Heapsort sortiert n Schlüssel in Zeit O(n · log2 n).

Aber Heapsort ist nur ein „asymptotischer Weltmeister“. Es gibt(um konstante Faktoren) schnellere Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 31 / 90

Page 121: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Heapsort

- Füge alle n Schlüssel in einen anfänglich leeren Heap ein. Diesgelingt in Zeit O(n · log2 n) –sogar Linearzeit O(n) ist möglich.

- Dann produziere die sortierte Reihenfolge durch n-maligeAnwendung der Deletemin-Operation in Zeit O(n · log2 n).

Heapsort sortiert n Schlüssel in Zeit O(n · log2 n).Aber Heapsort ist nur ein „asymptotischer Weltmeister“. Es gibt(um konstante Faktoren) schnellere Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 31 / 90

Page 122: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Quicksort

Sortieren Theoretische Informatik 1 31. Oktober 2019 32 / 90

Page 123: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

void quicksort (int links, int rechts)

// Das Array A = (A[links], . . . ,A[rechts]) ist zu sortieren.

int p, i;if (links < rechts) p = pivot (links, rechts);// A[p] dient als Pivot.i = partition (p, links, rechts);// Partition zerlegt A in ein Teilarray mit Schlüsseln 6 A[p],// gefolgt von A[p] in Position i und den Schlüsseln > A[p].quicksort (links, i-1);quicksort (i+1, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 33 / 90

Page 124: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

void quicksort (int links, int rechts)

// Das Array A = (A[links], . . . ,A[rechts]) ist zu sortieren. int p, i;if (links < rechts)

p = pivot (links, rechts);// A[p] dient als Pivot.i = partition (p, links, rechts);// Partition zerlegt A in ein Teilarray mit Schlüsseln 6 A[p],// gefolgt von A[p] in Position i und den Schlüsseln > A[p].quicksort (links, i-1);quicksort (i+1, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 33 / 90

Page 125: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

void quicksort (int links, int rechts)

// Das Array A = (A[links], . . . ,A[rechts]) ist zu sortieren. int p, i;if (links < rechts) p = pivot (links, rechts);// A[p] dient als Pivot.

i = partition (p, links, rechts);// Partition zerlegt A in ein Teilarray mit Schlüsseln 6 A[p],// gefolgt von A[p] in Position i und den Schlüsseln > A[p].quicksort (links, i-1);quicksort (i+1, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 33 / 90

Page 126: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

void quicksort (int links, int rechts)

// Das Array A = (A[links], . . . ,A[rechts]) ist zu sortieren. int p, i;if (links < rechts) p = pivot (links, rechts);// A[p] dient als Pivot.i = partition (p, links, rechts);// Partition zerlegt A in ein Teilarray mit Schlüsseln 6 A[p],// gefolgt von A[p] in Position i und den Schlüsseln > A[p].

quicksort (links, i-1);quicksort (i+1, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 33 / 90

Page 127: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

void quicksort (int links, int rechts)

// Das Array A = (A[links], . . . ,A[rechts]) ist zu sortieren. int p, i;if (links < rechts) p = pivot (links, rechts);// A[p] dient als Pivot.i = partition (p, links, rechts);// Partition zerlegt A in ein Teilarray mit Schlüsseln 6 A[p],// gefolgt von A[p] in Position i und den Schlüsseln > A[p].quicksort (links, i-1);

quicksort (i+1, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 33 / 90

Page 128: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

void quicksort (int links, int rechts)

// Das Array A = (A[links], . . . ,A[rechts]) ist zu sortieren. int p, i;if (links < rechts) p = pivot (links, rechts);// A[p] dient als Pivot.i = partition (p, links, rechts);// Partition zerlegt A in ein Teilarray mit Schlüsseln 6 A[p],// gefolgt von A[p] in Position i und den Schlüsseln > A[p].quicksort (links, i-1);quicksort (i+1, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 33 / 90

Page 129: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Quicksort

Mit induktivem Beweis: Wenn partition (p, links, rechts) korrekt ist,dann ist auch quicksort (links, rechts) korrekt.

Implementierung der Pivotfunktion. Zum BeispielI pivot (links, rechts) = linksI pivot (links, rechts) = die Position des mittleren Schlüssels ausA[links],A[ links+rechts

2 ],A[rechts]I pivot (links, rechts) = eine zufällige Zahl aus links, . . . , rechts.

Um Quicksort als Systemfunktion zu benutzen, müssen wir dasletzte Quentchen Geschwindigkeit herausquetschen.

I Wo müssen wir aufpassen?I Die Pivot-Funktion ist unproblematisch.I Die Partition-Funktion sollte sehr schnell sein und keinen

Speicherplatz neben dem Eingabearray verbrauchen.I Der für die rekursiven Aufrufe verwandte Stack sollte minimalen

Speicherplatz einnehmen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 34 / 90

Page 130: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Quicksort

Mit induktivem Beweis: Wenn partition (p, links, rechts) korrekt ist,dann ist auch quicksort (links, rechts) korrekt.Implementierung der Pivotfunktion. Zum Beispiel

I pivot (links, rechts) = links

I pivot (links, rechts) = die Position des mittleren Schlüssels ausA[links],A[ links+rechts

2 ],A[rechts]I pivot (links, rechts) = eine zufällige Zahl aus links, . . . , rechts.

Um Quicksort als Systemfunktion zu benutzen, müssen wir dasletzte Quentchen Geschwindigkeit herausquetschen.

I Wo müssen wir aufpassen?I Die Pivot-Funktion ist unproblematisch.I Die Partition-Funktion sollte sehr schnell sein und keinen

Speicherplatz neben dem Eingabearray verbrauchen.I Der für die rekursiven Aufrufe verwandte Stack sollte minimalen

Speicherplatz einnehmen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 34 / 90

Page 131: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Quicksort

Mit induktivem Beweis: Wenn partition (p, links, rechts) korrekt ist,dann ist auch quicksort (links, rechts) korrekt.Implementierung der Pivotfunktion. Zum Beispiel

I pivot (links, rechts) = linksI pivot (links, rechts) = die Position des mittleren Schlüssels ausA[links],A[ links+rechts

2 ],A[rechts]

I pivot (links, rechts) = eine zufällige Zahl aus links, . . . , rechts.Um Quicksort als Systemfunktion zu benutzen, müssen wir dasletzte Quentchen Geschwindigkeit herausquetschen.

I Wo müssen wir aufpassen?I Die Pivot-Funktion ist unproblematisch.I Die Partition-Funktion sollte sehr schnell sein und keinen

Speicherplatz neben dem Eingabearray verbrauchen.I Der für die rekursiven Aufrufe verwandte Stack sollte minimalen

Speicherplatz einnehmen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 34 / 90

Page 132: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Quicksort

Mit induktivem Beweis: Wenn partition (p, links, rechts) korrekt ist,dann ist auch quicksort (links, rechts) korrekt.Implementierung der Pivotfunktion. Zum Beispiel

I pivot (links, rechts) = linksI pivot (links, rechts) = die Position des mittleren Schlüssels ausA[links],A[ links+rechts

2 ],A[rechts]I pivot (links, rechts) = eine zufällige Zahl aus links, . . . , rechts.

Um Quicksort als Systemfunktion zu benutzen, müssen wir dasletzte Quentchen Geschwindigkeit herausquetschen.

I Wo müssen wir aufpassen?I Die Pivot-Funktion ist unproblematisch.I Die Partition-Funktion sollte sehr schnell sein und keinen

Speicherplatz neben dem Eingabearray verbrauchen.I Der für die rekursiven Aufrufe verwandte Stack sollte minimalen

Speicherplatz einnehmen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 34 / 90

Page 133: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Quicksort

Mit induktivem Beweis: Wenn partition (p, links, rechts) korrekt ist,dann ist auch quicksort (links, rechts) korrekt.Implementierung der Pivotfunktion. Zum Beispiel

I pivot (links, rechts) = linksI pivot (links, rechts) = die Position des mittleren Schlüssels ausA[links],A[ links+rechts

2 ],A[rechts]I pivot (links, rechts) = eine zufällige Zahl aus links, . . . , rechts.

Um Quicksort als Systemfunktion zu benutzen, müssen wir dasletzte Quentchen Geschwindigkeit herausquetschen.

I Wo müssen wir aufpassen?

I Die Pivot-Funktion ist unproblematisch.I Die Partition-Funktion sollte sehr schnell sein und keinen

Speicherplatz neben dem Eingabearray verbrauchen.I Der für die rekursiven Aufrufe verwandte Stack sollte minimalen

Speicherplatz einnehmen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 34 / 90

Page 134: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Quicksort

Mit induktivem Beweis: Wenn partition (p, links, rechts) korrekt ist,dann ist auch quicksort (links, rechts) korrekt.Implementierung der Pivotfunktion. Zum Beispiel

I pivot (links, rechts) = linksI pivot (links, rechts) = die Position des mittleren Schlüssels ausA[links],A[ links+rechts

2 ],A[rechts]I pivot (links, rechts) = eine zufällige Zahl aus links, . . . , rechts.

Um Quicksort als Systemfunktion zu benutzen, müssen wir dasletzte Quentchen Geschwindigkeit herausquetschen.

I Wo müssen wir aufpassen?I Die Pivot-Funktion ist unproblematisch.

I Die Partition-Funktion sollte sehr schnell sein und keinenSpeicherplatz neben dem Eingabearray verbrauchen.

I Der für die rekursiven Aufrufe verwandte Stack sollte minimalenSpeicherplatz einnehmen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 34 / 90

Page 135: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Quicksort

Mit induktivem Beweis: Wenn partition (p, links, rechts) korrekt ist,dann ist auch quicksort (links, rechts) korrekt.Implementierung der Pivotfunktion. Zum Beispiel

I pivot (links, rechts) = linksI pivot (links, rechts) = die Position des mittleren Schlüssels ausA[links],A[ links+rechts

2 ],A[rechts]I pivot (links, rechts) = eine zufällige Zahl aus links, . . . , rechts.

Um Quicksort als Systemfunktion zu benutzen, müssen wir dasletzte Quentchen Geschwindigkeit herausquetschen.

I Wo müssen wir aufpassen?I Die Pivot-Funktion ist unproblematisch.I Die Partition-Funktion sollte sehr schnell sein und keinen

Speicherplatz neben dem Eingabearray verbrauchen.

I Der für die rekursiven Aufrufe verwandte Stack sollte minimalenSpeicherplatz einnehmen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 34 / 90

Page 136: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Quicksort

Mit induktivem Beweis: Wenn partition (p, links, rechts) korrekt ist,dann ist auch quicksort (links, rechts) korrekt.Implementierung der Pivotfunktion. Zum Beispiel

I pivot (links, rechts) = linksI pivot (links, rechts) = die Position des mittleren Schlüssels ausA[links],A[ links+rechts

2 ],A[rechts]I pivot (links, rechts) = eine zufällige Zahl aus links, . . . , rechts.

Um Quicksort als Systemfunktion zu benutzen, müssen wir dasletzte Quentchen Geschwindigkeit herausquetschen.

I Wo müssen wir aufpassen?I Die Pivot-Funktion ist unproblematisch.I Die Partition-Funktion sollte sehr schnell sein und keinen

Speicherplatz neben dem Eingabearray verbrauchen.I Der für die rekursiven Aufrufe verwandte Stack sollte minimalen

Speicherplatz einnehmen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 34 / 90

Page 137: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (1/3)

partition (int p, int links, int rechts)

(0) Wir arbeiten mit zwei Zeigern l und r . Weiterhin α = A[p].(1) Setze l = links − 1, r = rechts und vertausche A [rechts] und A[p].

// Das Pivot-Element ist jetzt rechtsaußen.(2) Wiederhole bis l > r :

(a) Berechne l++ und verschiebe den l-Zeiger so lange nach rechts bisA[l] > α. // Wir haben links einen Schlüssel > α gefunden.

(b) Berechne r −− und verschiebe den r -Zeiger so lange nach links bisA[r ] 6 α. // Wir haben rechts einen Schlüssel 6 α gefunden.

(c) Wenn (l < r ), dann vertausche A [l] und A[r ].

(3) Vertausche A [rechts] und A [l].// Das Pivot-Element kommt an die richtige Stelle?!

Sortieren Theoretische Informatik 1 31. Oktober 2019 35 / 90

Page 138: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (1/3)

partition (int p, int links, int rechts)

(0) Wir arbeiten mit zwei Zeigern l und r . Weiterhin α = A[p].

(1) Setze l = links − 1, r = rechts und vertausche A [rechts] und A[p].// Das Pivot-Element ist jetzt rechtsaußen.

(2) Wiederhole bis l > r :(a) Berechne l++ und verschiebe den l-Zeiger so lange nach rechts bis

A[l] > α. // Wir haben links einen Schlüssel > α gefunden.(b) Berechne r −− und verschiebe den r -Zeiger so lange nach links bis

A[r ] 6 α. // Wir haben rechts einen Schlüssel 6 α gefunden.(c) Wenn (l < r ), dann vertausche A [l] und A[r ].

(3) Vertausche A [rechts] und A [l].// Das Pivot-Element kommt an die richtige Stelle?!

Sortieren Theoretische Informatik 1 31. Oktober 2019 35 / 90

Page 139: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (1/3)

partition (int p, int links, int rechts)

(0) Wir arbeiten mit zwei Zeigern l und r . Weiterhin α = A[p].(1) Setze l = links − 1, r = rechts und vertausche A [rechts] und A[p].

// Das Pivot-Element ist jetzt rechtsaußen.

(2) Wiederhole bis l > r :(a) Berechne l++ und verschiebe den l-Zeiger so lange nach rechts bis

A[l] > α. // Wir haben links einen Schlüssel > α gefunden.(b) Berechne r −− und verschiebe den r -Zeiger so lange nach links bis

A[r ] 6 α. // Wir haben rechts einen Schlüssel 6 α gefunden.(c) Wenn (l < r ), dann vertausche A [l] und A[r ].

(3) Vertausche A [rechts] und A [l].// Das Pivot-Element kommt an die richtige Stelle?!

Sortieren Theoretische Informatik 1 31. Oktober 2019 35 / 90

Page 140: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (1/3)

partition (int p, int links, int rechts)

(0) Wir arbeiten mit zwei Zeigern l und r . Weiterhin α = A[p].(1) Setze l = links − 1, r = rechts und vertausche A [rechts] und A[p].

// Das Pivot-Element ist jetzt rechtsaußen.(2) Wiederhole bis l > r :

(a) Berechne l++ und verschiebe den l-Zeiger so lange nach rechts bisA[l] > α. // Wir haben links einen Schlüssel > α gefunden.

(b) Berechne r −− und verschiebe den r -Zeiger so lange nach links bisA[r ] 6 α. // Wir haben rechts einen Schlüssel 6 α gefunden.

(c) Wenn (l < r ), dann vertausche A [l] und A[r ].

(3) Vertausche A [rechts] und A [l].// Das Pivot-Element kommt an die richtige Stelle?!

Sortieren Theoretische Informatik 1 31. Oktober 2019 35 / 90

Page 141: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (1/3)

partition (int p, int links, int rechts)

(0) Wir arbeiten mit zwei Zeigern l und r . Weiterhin α = A[p].(1) Setze l = links − 1, r = rechts und vertausche A [rechts] und A[p].

// Das Pivot-Element ist jetzt rechtsaußen.(2) Wiederhole bis l > r :

(a) Berechne l++ und verschiebe den l-Zeiger so lange nach rechts bisA[l] > α. // Wir haben links einen Schlüssel > α gefunden.

(b) Berechne r −− und verschiebe den r -Zeiger so lange nach links bisA[r ] 6 α. // Wir haben rechts einen Schlüssel 6 α gefunden.

(c) Wenn (l < r ), dann vertausche A [l] und A[r ].

(3) Vertausche A [rechts] und A [l].// Das Pivot-Element kommt an die richtige Stelle?!

Sortieren Theoretische Informatik 1 31. Oktober 2019 35 / 90

Page 142: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (1/3)

partition (int p, int links, int rechts)

(0) Wir arbeiten mit zwei Zeigern l und r . Weiterhin α = A[p].(1) Setze l = links − 1, r = rechts und vertausche A [rechts] und A[p].

// Das Pivot-Element ist jetzt rechtsaußen.(2) Wiederhole bis l > r :

(a) Berechne l++ und verschiebe den l-Zeiger so lange nach rechts bisA[l] > α. // Wir haben links einen Schlüssel > α gefunden.

(b) Berechne r −− und verschiebe den r -Zeiger so lange nach links bisA[r ] 6 α. // Wir haben rechts einen Schlüssel 6 α gefunden.

(c) Wenn (l < r ), dann vertausche A [l] und A[r ].

(3) Vertausche A [rechts] und A [l].// Das Pivot-Element kommt an die richtige Stelle?!

Sortieren Theoretische Informatik 1 31. Oktober 2019 35 / 90

Page 143: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (1/3)

partition (int p, int links, int rechts)

(0) Wir arbeiten mit zwei Zeigern l und r . Weiterhin α = A[p].(1) Setze l = links − 1, r = rechts und vertausche A [rechts] und A[p].

// Das Pivot-Element ist jetzt rechtsaußen.(2) Wiederhole bis l > r :

(a) Berechne l++ und verschiebe den l-Zeiger so lange nach rechts bisA[l] > α. // Wir haben links einen Schlüssel > α gefunden.

(b) Berechne r −− und verschiebe den r -Zeiger so lange nach links bisA[r ] 6 α. // Wir haben rechts einen Schlüssel 6 α gefunden.

(c) Wenn (l < r ), dann vertausche A [l] und A[r ].

(3) Vertausche A [rechts] und A [l].// Das Pivot-Element kommt an die richtige Stelle?!

Sortieren Theoretische Informatik 1 31. Oktober 2019 35 / 90

Page 144: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (1/3)

partition (int p, int links, int rechts)

(0) Wir arbeiten mit zwei Zeigern l und r . Weiterhin α = A[p].(1) Setze l = links − 1, r = rechts und vertausche A [rechts] und A[p].

// Das Pivot-Element ist jetzt rechtsaußen.(2) Wiederhole bis l > r :

(a) Berechne l++ und verschiebe den l-Zeiger so lange nach rechts bisA[l] > α. // Wir haben links einen Schlüssel > α gefunden.

(b) Berechne r −− und verschiebe den r -Zeiger so lange nach links bisA[r ] 6 α. // Wir haben rechts einen Schlüssel 6 α gefunden.

(c) Wenn (l < r ), dann vertausche A [l] und A[r ].

(3) Vertausche A [rechts] und

A [l].// Das Pivot-Element kommt an die richtige Stelle?!

Sortieren Theoretische Informatik 1 31. Oktober 2019 35 / 90

Page 145: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (1/3)

partition (int p, int links, int rechts)

(0) Wir arbeiten mit zwei Zeigern l und r . Weiterhin α = A[p].(1) Setze l = links − 1, r = rechts und vertausche A [rechts] und A[p].

// Das Pivot-Element ist jetzt rechtsaußen.(2) Wiederhole bis l > r :

(a) Berechne l++ und verschiebe den l-Zeiger so lange nach rechts bisA[l] > α. // Wir haben links einen Schlüssel > α gefunden.

(b) Berechne r −− und verschiebe den r -Zeiger so lange nach links bisA[r ] 6 α. // Wir haben rechts einen Schlüssel 6 α gefunden.

(c) Wenn (l < r ), dann vertausche A [l] und A[r ].

(3) Vertausche A [rechts] und A [l].// Das Pivot-Element kommt an die richtige Stelle?!

Sortieren Theoretische Informatik 1 31. Oktober 2019 35 / 90

Page 146: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:

Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 147: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.

Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 148: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!

Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechts

von l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 149: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 150: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 151: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti!

Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 152: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti!

Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 153: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 154: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Position

rechts durch das Pivot-Element gestoppt.- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 155: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 156: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf?

Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 157: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (2/3)

Nach Initialisierung der Zeiger gilt die Invariante:Alle Zellen links von l (einschließlich l) besitzen nur Zahlen 6 α,alle Zellen rechts von r (einschließlich r ) besitzen nur Zahlen > α.Fall 1: Wenn beide Zeiger zur Ruhe gekommen sind, ist l < r :Die Invariante gilt nach Vertauschen von A[l] und A[r ]!Fall 2: Wenn beide Zeiger zur Ruhe gekommen sind, ist l > r .

I Alle Zahlen links von l sind kleiner oder gleich α. Alle Zahlen rechtsvon l , sind auch rechts von r und damit größer oder gleich α. Alsoist l die endgültige Posititon von α.

I Alles Paletti! Nix Paletti! Wir haben angenommen, dass beideZeiger zur Ruhe kommen!

- Der l-Zeiger kommt zur Ruhe, er wird spätestens von Positionrechts durch das Pivot-Element gestoppt.

- Wer hält den r -Zeiger auf? Möglicherweise niemand!

Sortieren Theoretische Informatik 1 31. Oktober 2019 36 / 90

Page 158: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber

diese Abfrage wird häufig gestellt!Wir versuchen, ohne Abfragen auszukommen. Setze A[0] = −∞.

I r wird beim ersten Aufruf durch A[0] gestoppt.I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)

und quicksort (i + 1,n)?F A[0] dient als Stopper für den ersten Aufruf undF das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 159: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber diese Abfrage wird häufig gestellt!

Wir versuchen, ohne Abfragen auszukommen. Setze A[0] = −∞.I r wird beim ersten Aufruf durch A[0] gestoppt.I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)

und quicksort (i + 1,n)?F A[0] dient als Stopper für den ersten Aufruf undF das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 160: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber diese Abfrage wird häufig gestellt!Wir versuchen, ohne Abfragen auszukommen.

Setze A[0] = −∞.I r wird beim ersten Aufruf durch A[0] gestoppt.I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)

und quicksort (i + 1,n)?F A[0] dient als Stopper für den ersten Aufruf undF das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 161: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber diese Abfrage wird häufig gestellt!Wir versuchen, ohne Abfragen auszukommen. Setze A[0] = −∞.

I r wird beim ersten Aufruf durch A[0] gestoppt.

I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)und quicksort (i + 1,n)?

F A[0] dient als Stopper für den ersten Aufruf undF das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 162: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber diese Abfrage wird häufig gestellt!Wir versuchen, ohne Abfragen auszukommen. Setze A[0] = −∞.

I r wird beim ersten Aufruf durch A[0] gestoppt.I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)

und quicksort (i + 1,n)?

F A[0] dient als Stopper für den ersten Aufruf undF das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 163: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber diese Abfrage wird häufig gestellt!Wir versuchen, ohne Abfragen auszukommen. Setze A[0] = −∞.

I r wird beim ersten Aufruf durch A[0] gestoppt.I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)

und quicksort (i + 1,n)?F A[0] dient als Stopper für den ersten Aufruf und

F das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 164: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber diese Abfrage wird häufig gestellt!Wir versuchen, ohne Abfragen auszukommen. Setze A[0] = −∞.

I r wird beim ersten Aufruf durch A[0] gestoppt.I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)

und quicksort (i + 1,n)?F A[0] dient als Stopper für den ersten Aufruf undF das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 165: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber diese Abfrage wird häufig gestellt!Wir versuchen, ohne Abfragen auszukommen. Setze A[0] = −∞.

I r wird beim ersten Aufruf durch A[0] gestoppt.I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)

und quicksort (i + 1,n)?F A[0] dient als Stopper für den ersten Aufruf undF das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.

Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 166: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber diese Abfrage wird häufig gestellt!Wir versuchen, ohne Abfragen auszukommen. Setze A[0] = −∞.

I r wird beim ersten Aufruf durch A[0] gestoppt.I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)

und quicksort (i + 1,n)?F A[0] dient als Stopper für den ersten Aufruf undF das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 167: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die Partition-Funktion (3/3)

Wir könnten den r -Zeiger durch eine Abfrage r < links stoppen,aber diese Abfrage wird häufig gestellt!Wir versuchen, ohne Abfragen auszukommen. Setze A[0] = −∞.

I r wird beim ersten Aufruf durch A[0] gestoppt.I Was passiert in weiteren rekursiven Aufrufen quicksort (1, i − 1)

und quicksort (i + 1,n)?F A[0] dient als Stopper für den ersten Aufruf undF das Pivotelement in Position i als Stopper für den zweiten Aufruf!

partition (p, links, rechts) benötigt O(rechts-links + 1) Schritte.Partition benötigt neben dem Eingabearray keinen zusätzlichenSpeicherplatz.

Quicksort ist ein „in place“ Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 37 / 90

Page 168: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Weitere Verbesserungen von Quicksort

Zufällige Wahl des Pivot-Elementes: Für jede Eingabe wirdQuicksort hochwahrscheinlich schnell sein.

Beweis später.Der administrative Aufwand für die Rekursion rechnet sich beikleinen Teilproblemen nicht. Sortiere Teilprobleme der Größehöchstens 25(?!) mit Insertion Sort.Ein nicht-rekursiver Quicksort:

I Führe pivot und dann partition aus.I Dann lege eines der beiden Teilprobleme auf den Stack.

Aber welches, das kleinere oder das größere?

Sortieren Theoretische Informatik 1 31. Oktober 2019 38 / 90

Page 169: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Weitere Verbesserungen von Quicksort

Zufällige Wahl des Pivot-Elementes: Für jede Eingabe wirdQuicksort hochwahrscheinlich schnell sein. Beweis später.

Der administrative Aufwand für die Rekursion rechnet sich beikleinen Teilproblemen nicht. Sortiere Teilprobleme der Größehöchstens 25(?!) mit Insertion Sort.Ein nicht-rekursiver Quicksort:

I Führe pivot und dann partition aus.I Dann lege eines der beiden Teilprobleme auf den Stack.

Aber welches, das kleinere oder das größere?

Sortieren Theoretische Informatik 1 31. Oktober 2019 38 / 90

Page 170: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Weitere Verbesserungen von Quicksort

Zufällige Wahl des Pivot-Elementes: Für jede Eingabe wirdQuicksort hochwahrscheinlich schnell sein. Beweis später.Der administrative Aufwand für die Rekursion rechnet sich beikleinen Teilproblemen nicht. Sortiere Teilprobleme der Größehöchstens 25(?!) mit Insertion Sort.

Ein nicht-rekursiver Quicksort:I Führe pivot und dann partition aus.I Dann lege eines der beiden Teilprobleme auf den Stack.

Aber welches, das kleinere oder das größere?

Sortieren Theoretische Informatik 1 31. Oktober 2019 38 / 90

Page 171: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Weitere Verbesserungen von Quicksort

Zufällige Wahl des Pivot-Elementes: Für jede Eingabe wirdQuicksort hochwahrscheinlich schnell sein. Beweis später.Der administrative Aufwand für die Rekursion rechnet sich beikleinen Teilproblemen nicht. Sortiere Teilprobleme der Größehöchstens 25(?!) mit Insertion Sort.Ein nicht-rekursiver Quicksort:

I Führe pivot und dann partition aus.

I Dann lege eines der beiden Teilprobleme auf den Stack.

Aber welches, das kleinere oder das größere?

Sortieren Theoretische Informatik 1 31. Oktober 2019 38 / 90

Page 172: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Weitere Verbesserungen von Quicksort

Zufällige Wahl des Pivot-Elementes: Für jede Eingabe wirdQuicksort hochwahrscheinlich schnell sein. Beweis später.Der administrative Aufwand für die Rekursion rechnet sich beikleinen Teilproblemen nicht. Sortiere Teilprobleme der Größehöchstens 25(?!) mit Insertion Sort.Ein nicht-rekursiver Quicksort:

I Führe pivot und dann partition aus.I Dann lege eines der beiden Teilprobleme auf den Stack.

Aber welches, das kleinere oder das größere?

Sortieren Theoretische Informatik 1 31. Oktober 2019 38 / 90

Page 173: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Weitere Verbesserungen von Quicksort

Zufällige Wahl des Pivot-Elementes: Für jede Eingabe wirdQuicksort hochwahrscheinlich schnell sein. Beweis später.Der administrative Aufwand für die Rekursion rechnet sich beikleinen Teilproblemen nicht. Sortiere Teilprobleme der Größehöchstens 25(?!) mit Insertion Sort.Ein nicht-rekursiver Quicksort:

I Führe pivot und dann partition aus.I Dann lege eines der beiden Teilprobleme auf den Stack.

Aber welches, das kleinere oder das größere?

Sortieren Theoretische Informatik 1 31. Oktober 2019 38 / 90

Page 174: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Stackmimimierung bei Quicksort demogr.

Wenn der Stack immer möglichst klein sein soll,

(1) dann lege das größere Teilproblem auf den Stack.(2) dann lege das kleinere Teilproblem auf den Stack.(3) ist vollkommen egal.

Auflösung: (1)

Sortieren Theoretische Informatik 1 31. Oktober 2019 39 / 90

Page 175: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Stackmimimierung bei Quicksort demogr.

Wenn der Stack immer möglichst klein sein soll,

(1) dann lege das größere Teilproblem auf den Stack.(2) dann lege das kleinere Teilproblem auf den Stack.(3) ist vollkommen egal.

Auflösung:

(1)

Sortieren Theoretische Informatik 1 31. Oktober 2019 39 / 90

Page 176: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Stackmimimierung bei Quicksort demogr.

Wenn der Stack immer möglichst klein sein soll,

(1) dann lege das größere Teilproblem auf den Stack.(2) dann lege das kleinere Teilproblem auf den Stack.(3) ist vollkommen egal.

Auflösung: (1)

Sortieren Theoretische Informatik 1 31. Oktober 2019 39 / 90

Page 177: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wenn der Stack immer möglichst klein sein soll,

dann lege das

größere Teilproblem auf den Stack.

Die Stackhöhe ist durch blog2 nc beschränkt. Warum?I Zuerst wird ein Problem der Größe m > n

2 auf den Stack gelegt undQuicksort arbeitet auf einem Problem der Größe n −m 6 n

2 weiter.I Nach Induktionsannahme wird ein Stack der Höhe höchstensblog2(n −m)c 6 blog2 n/2c = blog2 nc − 1 ausreichen, um dasProblem der Größe n −m erfolgreich abzuarbeiten.

I Die Stackhöhe wird in dieser Zeit also (blog2 nc − 1) + 1 = blog2 ncnicht überschreiten.

I Das zuunterst liegende Problem hat eine Größe kleiner als n undwird nach Induktionsannahme mit Stackhöhe höchstens blog2 ncabgearbeitet.

Sortieren Theoretische Informatik 1 31. Oktober 2019 40 / 90

Page 178: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wenn der Stack immer möglichst klein sein soll,

dann lege das größere Teilproblem auf den Stack.

Die Stackhöhe ist durch blog2 nc beschränkt. Warum?

I Zuerst wird ein Problem der Größe m > n2 auf den Stack gelegt und

Quicksort arbeitet auf einem Problem der Größe n −m 6 n2 weiter.

I Nach Induktionsannahme wird ein Stack der Höhe höchstensblog2(n −m)c 6 blog2 n/2c = blog2 nc − 1 ausreichen, um dasProblem der Größe n −m erfolgreich abzuarbeiten.

I Die Stackhöhe wird in dieser Zeit also (blog2 nc − 1) + 1 = blog2 ncnicht überschreiten.

I Das zuunterst liegende Problem hat eine Größe kleiner als n undwird nach Induktionsannahme mit Stackhöhe höchstens blog2 ncabgearbeitet.

Sortieren Theoretische Informatik 1 31. Oktober 2019 40 / 90

Page 179: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wenn der Stack immer möglichst klein sein soll,

dann lege das größere Teilproblem auf den Stack.

Die Stackhöhe ist durch blog2 nc beschränkt. Warum?I Zuerst wird ein Problem der Größe m > n

2 auf den Stack gelegt undQuicksort arbeitet auf einem Problem der Größe n −m 6 n

2 weiter.

I Nach Induktionsannahme wird ein Stack der Höhe höchstensblog2(n −m)c 6 blog2 n/2c = blog2 nc − 1 ausreichen, um dasProblem der Größe n −m erfolgreich abzuarbeiten.

I Die Stackhöhe wird in dieser Zeit also (blog2 nc − 1) + 1 = blog2 ncnicht überschreiten.

I Das zuunterst liegende Problem hat eine Größe kleiner als n undwird nach Induktionsannahme mit Stackhöhe höchstens blog2 ncabgearbeitet.

Sortieren Theoretische Informatik 1 31. Oktober 2019 40 / 90

Page 180: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wenn der Stack immer möglichst klein sein soll,

dann lege das größere Teilproblem auf den Stack.

Die Stackhöhe ist durch blog2 nc beschränkt. Warum?I Zuerst wird ein Problem der Größe m > n

2 auf den Stack gelegt undQuicksort arbeitet auf einem Problem der Größe n −m 6 n

2 weiter.I Nach Induktionsannahme wird ein Stack der Höhe höchstensblog2(n −m)c

6 blog2 n/2c = blog2 nc − 1 ausreichen, um dasProblem der Größe n −m erfolgreich abzuarbeiten.

I Die Stackhöhe wird in dieser Zeit also (blog2 nc − 1) + 1 = blog2 ncnicht überschreiten.

I Das zuunterst liegende Problem hat eine Größe kleiner als n undwird nach Induktionsannahme mit Stackhöhe höchstens blog2 ncabgearbeitet.

Sortieren Theoretische Informatik 1 31. Oktober 2019 40 / 90

Page 181: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wenn der Stack immer möglichst klein sein soll,

dann lege das größere Teilproblem auf den Stack.

Die Stackhöhe ist durch blog2 nc beschränkt. Warum?I Zuerst wird ein Problem der Größe m > n

2 auf den Stack gelegt undQuicksort arbeitet auf einem Problem der Größe n −m 6 n

2 weiter.I Nach Induktionsannahme wird ein Stack der Höhe höchstensblog2(n −m)c 6 blog2 n/2c

= blog2 nc − 1 ausreichen, um dasProblem der Größe n −m erfolgreich abzuarbeiten.

I Die Stackhöhe wird in dieser Zeit also (blog2 nc − 1) + 1 = blog2 ncnicht überschreiten.

I Das zuunterst liegende Problem hat eine Größe kleiner als n undwird nach Induktionsannahme mit Stackhöhe höchstens blog2 ncabgearbeitet.

Sortieren Theoretische Informatik 1 31. Oktober 2019 40 / 90

Page 182: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wenn der Stack immer möglichst klein sein soll,

dann lege das größere Teilproblem auf den Stack.

Die Stackhöhe ist durch blog2 nc beschränkt. Warum?I Zuerst wird ein Problem der Größe m > n

2 auf den Stack gelegt undQuicksort arbeitet auf einem Problem der Größe n −m 6 n

2 weiter.I Nach Induktionsannahme wird ein Stack der Höhe höchstensblog2(n −m)c 6 blog2 n/2c = blog2 nc − 1 ausreichen, um dasProblem der Größe n −m erfolgreich abzuarbeiten.

I Die Stackhöhe wird in dieser Zeit also (blog2 nc − 1) + 1 = blog2 ncnicht überschreiten.

I Das zuunterst liegende Problem hat eine Größe kleiner als n undwird nach Induktionsannahme mit Stackhöhe höchstens blog2 ncabgearbeitet.

Sortieren Theoretische Informatik 1 31. Oktober 2019 40 / 90

Page 183: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wenn der Stack immer möglichst klein sein soll,

dann lege das größere Teilproblem auf den Stack.

Die Stackhöhe ist durch blog2 nc beschränkt. Warum?I Zuerst wird ein Problem der Größe m > n

2 auf den Stack gelegt undQuicksort arbeitet auf einem Problem der Größe n −m 6 n

2 weiter.I Nach Induktionsannahme wird ein Stack der Höhe höchstensblog2(n −m)c 6 blog2 n/2c = blog2 nc − 1 ausreichen, um dasProblem der Größe n −m erfolgreich abzuarbeiten.

I Die Stackhöhe wird in dieser Zeit also (blog2 nc − 1) + 1 = blog2 ncnicht überschreiten.

I Das zuunterst liegende Problem hat eine Größe kleiner als n undwird nach Induktionsannahme mit Stackhöhe höchstens blog2 ncabgearbeitet.

Sortieren Theoretische Informatik 1 31. Oktober 2019 40 / 90

Page 184: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wenn der Stack immer möglichst klein sein soll,

dann lege das größere Teilproblem auf den Stack.

Die Stackhöhe ist durch blog2 nc beschränkt. Warum?I Zuerst wird ein Problem der Größe m > n

2 auf den Stack gelegt undQuicksort arbeitet auf einem Problem der Größe n −m 6 n

2 weiter.I Nach Induktionsannahme wird ein Stack der Höhe höchstensblog2(n −m)c 6 blog2 n/2c = blog2 nc − 1 ausreichen, um dasProblem der Größe n −m erfolgreich abzuarbeiten.

I Die Stackhöhe wird in dieser Zeit also (blog2 nc − 1) + 1 = blog2 ncnicht überschreiten.

I Das zuunterst liegende Problem hat eine Größe kleiner als n undwird nach Induktionsannahme mit Stackhöhe höchstens blog2 ncabgearbeitet.

Sortieren Theoretische Informatik 1 31. Oktober 2019 40 / 90

Page 185: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):

Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 186: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n),

quicksort (2,n), quicksort (3,n), . . . ,I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleiche

ausführen.I Also werden insgesamt mindestens

n∑i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 187: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n),

quicksort (3,n), . . . ,I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleiche

ausführen.I Also werden insgesamt mindestens

n∑i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 188: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 189: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 190: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i)

= 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 191: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 =

=n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 192: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.

Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 193: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit:

Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 194: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen.

Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 195: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 196: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Die worst case Laufzeit (wenn partition(i,links,rechts) = links):Das sortierte Array (1,2, . . . ,n) produziert die rekursiven Aufrufequicksort (1,n), quicksort (2,n), quicksort (3,n), . . . ,

I quicksort (i ,n) wird, über seine Partitionsfunktion, n − i Vergleicheausführen.

I Also werden insgesamt mindestensn∑

i=1

(n − i) = 1 + 2 + 3 + · · ·+ n − 1 = =n · (n − 1)

2

Vergleiche benötigt.Die best case Laufzeit: Das jeweilige Sortierproblem wird stets ingleich große Teilprobleme aufgebrochen. Wir erhalten dieRekursionsgleichung

T (n) 6 2 · T (n/2) + c · nfür eine Konstante c. Und die Lösung ist

T (n) = O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 41 / 90

Page 197: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Fazit- Die worst-case Laufzeit von Quicksort ist Θ(n2), die best-case

Laufzeit ist Θ(n log2 n).

- Wem sollen wir trauen, der worst case oder der best caseLaufzeit?

- In der Praxis wird ein sehr gutes Laufzeitverhalten beobachtet:Wir untersuchen die erwartete Laufzeit.

Die Annahme: Alle Permutationen π = (π(1), . . . , π(n)) von(1, . . . ,n) sind gleichwahrscheinlich.Dann ist

En =∑π

1n!· Vergleiche(π)

die erwartete Anzahl durchgeführter Vergleiche.

Sortieren Theoretische Informatik 1 31. Oktober 2019 42 / 90

Page 198: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Fazit- Die worst-case Laufzeit von Quicksort ist Θ(n2), die best-case

Laufzeit ist Θ(n log2 n).- Wem sollen wir trauen, der worst case oder der best case

Laufzeit?

- In der Praxis wird ein sehr gutes Laufzeitverhalten beobachtet:Wir untersuchen die erwartete Laufzeit.

Die Annahme: Alle Permutationen π = (π(1), . . . , π(n)) von(1, . . . ,n) sind gleichwahrscheinlich.Dann ist

En =∑π

1n!· Vergleiche(π)

die erwartete Anzahl durchgeführter Vergleiche.

Sortieren Theoretische Informatik 1 31. Oktober 2019 42 / 90

Page 199: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Fazit- Die worst-case Laufzeit von Quicksort ist Θ(n2), die best-case

Laufzeit ist Θ(n log2 n).- Wem sollen wir trauen, der worst case oder der best case

Laufzeit?- In der Praxis wird ein sehr gutes Laufzeitverhalten beobachtet:

Wir untersuchen die erwartete Laufzeit.

Die Annahme: Alle Permutationen π = (π(1), . . . , π(n)) von(1, . . . ,n) sind gleichwahrscheinlich.Dann ist

En =∑π

1n!· Vergleiche(π)

die erwartete Anzahl durchgeführter Vergleiche.

Sortieren Theoretische Informatik 1 31. Oktober 2019 42 / 90

Page 200: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Fazit- Die worst-case Laufzeit von Quicksort ist Θ(n2), die best-case

Laufzeit ist Θ(n log2 n).- Wem sollen wir trauen, der worst case oder der best case

Laufzeit?- In der Praxis wird ein sehr gutes Laufzeitverhalten beobachtet:

Wir untersuchen die erwartete Laufzeit.

Die Annahme: Alle Permutationen π = (π(1), . . . , π(n)) von(1, . . . ,n) sind gleichwahrscheinlich.

Dann istEn =

∑π

1n!· Vergleiche(π)

die erwartete Anzahl durchgeführter Vergleiche.

Sortieren Theoretische Informatik 1 31. Oktober 2019 42 / 90

Page 201: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Quicksort für n Schlüssel

Fazit- Die worst-case Laufzeit von Quicksort ist Θ(n2), die best-case

Laufzeit ist Θ(n log2 n).- Wem sollen wir trauen, der worst case oder der best case

Laufzeit?- In der Praxis wird ein sehr gutes Laufzeitverhalten beobachtet:

Wir untersuchen die erwartete Laufzeit.

Die Annahme: Alle Permutationen π = (π(1), . . . , π(n)) von(1, . . . ,n) sind gleichwahrscheinlich.Dann ist

En =∑π

1n!· Vergleiche(π)

die erwartete Anzahl durchgeführter Vergleiche.

Sortieren Theoretische Informatik 1 31. Oktober 2019 42 / 90

Page 202: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit En

Wir definieren für jedes Paar (i , j) mit i < j eine Zufallsvariable

Vi,j =

1 falls es zum Vergleich der Werte i und j kommt,0 sonst.

Dann ist

En = die erwartete Anzahl der Vergleiche

= Erwartungswert

n∑i=1

n∑j=i+1

Vi,j

=

n∑i=1

n∑j=i+1

Erwartungswert[Vi,j ].

Wir müssen den Erwartungswert von Vi,j bestimmen!Sei pi,j die Wahrscheinlichkeit für das Ereignis Vi,j = 1. Dann ist

Erwartungswert[Vi,j ] = pi,j · 1 + (1− pi,j) · 0 = pi,j .

Sortieren Theoretische Informatik 1 31. Oktober 2019 43 / 90

Page 203: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit En

Wir definieren für jedes Paar (i , j) mit i < j eine Zufallsvariable

Vi,j =

1 falls es zum Vergleich der Werte i und j kommt,0 sonst.

Dann ist

En = die erwartete Anzahl der Vergleiche

= Erwartungswert

n∑i=1

n∑j=i+1

Vi,j

=

n∑i=1

n∑j=i+1

Erwartungswert[Vi,j ].

Wir müssen den Erwartungswert von Vi,j bestimmen!Sei pi,j die Wahrscheinlichkeit für das Ereignis Vi,j = 1. Dann ist

Erwartungswert[Vi,j ] = pi,j · 1 + (1− pi,j) · 0 = pi,j .

Sortieren Theoretische Informatik 1 31. Oktober 2019 43 / 90

Page 204: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit En

Wir definieren für jedes Paar (i , j) mit i < j eine Zufallsvariable

Vi,j =

1 falls es zum Vergleich der Werte i und j kommt,0 sonst.

Dann ist

En = die erwartete Anzahl der Vergleiche

= Erwartungswert

n∑i=1

n∑j=i+1

Vi,j

=n∑

i=1

n∑j=i+1

Erwartungswert[Vi,j ].

Wir müssen den Erwartungswert von Vi,j bestimmen!Sei pi,j die Wahrscheinlichkeit für das Ereignis Vi,j = 1. Dann ist

Erwartungswert[Vi,j ] = pi,j · 1 + (1− pi,j) · 0 = pi,j .

Sortieren Theoretische Informatik 1 31. Oktober 2019 43 / 90

Page 205: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit En

Wir definieren für jedes Paar (i , j) mit i < j eine Zufallsvariable

Vi,j =

1 falls es zum Vergleich der Werte i und j kommt,0 sonst.

Dann ist

En = die erwartete Anzahl der Vergleiche

= Erwartungswert

n∑i=1

n∑j=i+1

Vi,j

=

n∑i=1

n∑j=i+1

Erwartungswert[Vi,j ].

Wir müssen den Erwartungswert von Vi,j bestimmen!Sei pi,j die Wahrscheinlichkeit für das Ereignis Vi,j = 1. Dann ist

Erwartungswert[Vi,j ] = pi,j · 1 + (1− pi,j) · 0 = pi,j .

Sortieren Theoretische Informatik 1 31. Oktober 2019 43 / 90

Page 206: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit En

Wir definieren für jedes Paar (i , j) mit i < j eine Zufallsvariable

Vi,j =

1 falls es zum Vergleich der Werte i und j kommt,0 sonst.

Dann ist

En = die erwartete Anzahl der Vergleiche

= Erwartungswert

n∑i=1

n∑j=i+1

Vi,j

=

n∑i=1

n∑j=i+1

Erwartungswert[Vi,j ].

Wir müssen den Erwartungswert von Vi,j bestimmen!

Sei pi,j die Wahrscheinlichkeit für das Ereignis Vi,j = 1. Dann ist

Erwartungswert[Vi,j ] = pi,j · 1 + (1− pi,j) · 0 = pi,j .

Sortieren Theoretische Informatik 1 31. Oktober 2019 43 / 90

Page 207: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit En

Wir definieren für jedes Paar (i , j) mit i < j eine Zufallsvariable

Vi,j =

1 falls es zum Vergleich der Werte i und j kommt,0 sonst.

Dann ist

En = die erwartete Anzahl der Vergleiche

= Erwartungswert

n∑i=1

n∑j=i+1

Vi,j

=

n∑i=1

n∑j=i+1

Erwartungswert[Vi,j ].

Wir müssen den Erwartungswert von Vi,j bestimmen!Sei pi,j die Wahrscheinlichkeit für das Ereignis Vi,j = 1. Dann ist

Erwartungswert[Vi,j ]

= pi,j · 1 + (1− pi,j) · 0 = pi,j .

Sortieren Theoretische Informatik 1 31. Oktober 2019 43 / 90

Page 208: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit En

Wir definieren für jedes Paar (i , j) mit i < j eine Zufallsvariable

Vi,j =

1 falls es zum Vergleich der Werte i und j kommt,0 sonst.

Dann ist

En = die erwartete Anzahl der Vergleiche

= Erwartungswert

n∑i=1

n∑j=i+1

Vi,j

=

n∑i=1

n∑j=i+1

Erwartungswert[Vi,j ].

Wir müssen den Erwartungswert von Vi,j bestimmen!Sei pi,j die Wahrscheinlichkeit für das Ereignis Vi,j = 1. Dann ist

Erwartungswert[Vi,j ] = pi,j · 1 + (1− pi,j) · 0

= pi,j .

Sortieren Theoretische Informatik 1 31. Oktober 2019 43 / 90

Page 209: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit En

Wir definieren für jedes Paar (i , j) mit i < j eine Zufallsvariable

Vi,j =

1 falls es zum Vergleich der Werte i und j kommt,0 sonst.

Dann ist

En = die erwartete Anzahl der Vergleiche

= Erwartungswert

n∑i=1

n∑j=i+1

Vi,j

=

n∑i=1

n∑j=i+1

Erwartungswert[Vi,j ].

Wir müssen den Erwartungswert von Vi,j bestimmen!Sei pi,j die Wahrscheinlichkeit für das Ereignis Vi,j = 1. Dann ist

Erwartungswert[Vi,j ] = pi,j · 1 + (1− pi,j) · 0 = pi,j .

Sortieren Theoretische Informatik 1 31. Oktober 2019 43 / 90

Page 210: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn das Pivot-Element kleiner als i oder größerals j ist.Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da sie

durch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j = 2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 211: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn

sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn das Pivot-Element kleiner als i oder größerals j ist.Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da sie

durch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j = 2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 212: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.

i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn das Pivot-Element kleiner als i oder größerals j ist.Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da sie

durch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j = 2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 213: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn

das Pivot-Element kleiner als i oder größerals j ist.Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da sie

durch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j = 2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 214: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn das Pivot-Element kleiner als i oder größerals j ist.

Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da sie

durch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j = 2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 215: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn das Pivot-Element kleiner als i oder größerals j ist.Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da sie

durch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j = 2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 216: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn das Pivot-Element kleiner als i oder größerals j ist.Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.

I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da siedurch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j = 2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 217: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn das Pivot-Element kleiner als i oder größerals j ist.Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da sie

durch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j = 2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 218: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn das Pivot-Element kleiner als i oder größerals j ist.Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da sie

durch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j =

2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 219: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mit welcher Wahrscheinlichkeit pi ,j werden i und jverglichen?

Es sei i < j .

i und j werden genau dann verglichen, wenn sich beide im selbenrekursiven Aufruf befinden und einer das Pivotelement ist.i und j werden genau dann in denselben rekursiven Aufrufweitergeleitet, wenn das Pivot-Element kleiner als i oder größerals j ist.Entscheidend: Welcher Schlüssel k aus dem Intervall [i , j] wirdals Erster zum Pivot-Element?

I k = i oder k = j : i und j werden verglichen.I k 6= i und k 6= j : i und j werden nicht miteinander verglichen, da sie

durch das Pivot-Element k in verschiedene rekursive Aufrufeweitergeleitet werden.

Erwartungswert[Vi,j ] = pi,j = 2j−i+1 .

Sortieren Theoretische Informatik 1 31. Oktober 2019 44 / 90

Page 220: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Anzahl En der Vergleiche

Was ist die erwartete Anzahl En aller Vergleiche?

En =n∑

i=1

n∑j=i+1

Erwartungswert[Vi,j ]

=n∑

i=1

n∑j=i+1

pi,j

=n∑

i=1

n∑j=i+1

2j − i + 1

=n∑

i=1

(22

+23

+24

+ · · · 2n − i + 1

)

6n∑

i=1

2 · log2 n

= O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 45 / 90

Page 221: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Anzahl En der Vergleiche

Was ist die erwartete Anzahl En aller Vergleiche?

En =n∑

i=1

n∑j=i+1

Erwartungswert[Vi,j ]

=n∑

i=1

n∑j=i+1

pi,j

=n∑

i=1

n∑j=i+1

2j − i + 1

=n∑

i=1

(22

+23

+24

+ · · · 2n − i + 1

)

6n∑

i=1

2 · log2 n

= O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 45 / 90

Page 222: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Anzahl En der Vergleiche

Was ist die erwartete Anzahl En aller Vergleiche?

En =n∑

i=1

n∑j=i+1

Erwartungswert[Vi,j ]

=n∑

i=1

n∑j=i+1

pi,j

=n∑

i=1

n∑j=i+1

2j − i + 1

=n∑

i=1

(22

+23

+24

+ · · · 2n − i + 1

)

6n∑

i=1

2 · log2 n

= O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 45 / 90

Page 223: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Anzahl En der Vergleiche

Was ist die erwartete Anzahl En aller Vergleiche?

En =n∑

i=1

n∑j=i+1

Erwartungswert[Vi,j ]

=n∑

i=1

n∑j=i+1

pi,j

=n∑

i=1

n∑j=i+1

2j − i + 1

=n∑

i=1

(22

+23

+24

+ · · · 2n − i + 1

)

6n∑

i=1

2 · log2 n

= O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 45 / 90

Page 224: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Anzahl En der Vergleiche

Was ist die erwartete Anzahl En aller Vergleiche?

En =n∑

i=1

n∑j=i+1

Erwartungswert[Vi,j ]

=n∑

i=1

n∑j=i+1

pi,j

=n∑

i=1

n∑j=i+1

2j − i + 1

=n∑

i=1

(22

+23

+24

+ · · · 2n − i + 1

)

6n∑

i=1

2 · log2 n

= O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 45 / 90

Page 225: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Anzahl En der Vergleiche

Was ist die erwartete Anzahl En aller Vergleiche?

En =n∑

i=1

n∑j=i+1

Erwartungswert[Vi,j ]

=n∑

i=1

n∑j=i+1

pi,j

=n∑

i=1

n∑j=i+1

2j − i + 1

=n∑

i=1

(22

+23

+24

+ · · · 2n − i + 1

)

6n∑

i=1

2 · log2 n

= O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 45 / 90

Page 226: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Anzahl En der Vergleiche

Was ist die erwartete Anzahl En aller Vergleiche?

En =n∑

i=1

n∑j=i+1

Erwartungswert[Vi,j ]

=n∑

i=1

n∑j=i+1

pi,j

=n∑

i=1

n∑j=i+1

2j − i + 1

=n∑

i=1

(22

+23

+24

+ · · · 2n − i + 1

)

6n∑

i=1

2 · log2 n

= O(n · log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 45 / 90

Page 227: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Zusammenfassung

Die Laufzeit von Quicksort(a) Die worst-case Laufzeit ist Θ(n2).(b) Die best-case und die erwartete Laufzeit ist Θ(n · log2 n).

Wir fixieren eine beliebige Eingabe und wählen das Pivot-Elementzufällig. Was ist die erwartete Laufzeit?

Zufällige Pivotwahl- Für jede Eingabe von n Schlüsseln ist Θ(n log2 n) die erwartete

Laufzeit bei zufälliger Pivotwahl.- Die Performance von Quicksort ist bei zufälliger Pivotwahl nicht

mehr von der Eingabe abhängig!

Sortieren Theoretische Informatik 1 31. Oktober 2019 46 / 90

Page 228: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Zusammenfassung

Die Laufzeit von Quicksort(a) Die worst-case Laufzeit ist Θ(n2).(b) Die best-case und die erwartete Laufzeit ist Θ(n · log2 n).

Wir fixieren eine beliebige Eingabe und wählen das Pivot-Elementzufällig. Was ist die erwartete Laufzeit?

Zufällige Pivotwahl- Für jede Eingabe von n Schlüsseln ist Θ(n log2 n) die erwartete

Laufzeit bei zufälliger Pivotwahl.- Die Performance von Quicksort ist bei zufälliger Pivotwahl nicht

mehr von der Eingabe abhängig!

Sortieren Theoretische Informatik 1 31. Oktober 2019 46 / 90

Page 229: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Zusammenfassung

Die Laufzeit von Quicksort(a) Die worst-case Laufzeit ist Θ(n2).(b) Die best-case und die erwartete Laufzeit ist Θ(n · log2 n).

Wir fixieren eine beliebige Eingabe und wählen das Pivot-Elementzufällig. Was ist die erwartete Laufzeit?

Zufällige Pivotwahl- Für jede Eingabe von n Schlüsseln ist Θ(n log2 n) die erwartete

Laufzeit bei zufälliger Pivotwahl.

- Die Performance von Quicksort ist bei zufälliger Pivotwahl nichtmehr von der Eingabe abhängig!

Sortieren Theoretische Informatik 1 31. Oktober 2019 46 / 90

Page 230: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Zusammenfassung

Die Laufzeit von Quicksort(a) Die worst-case Laufzeit ist Θ(n2).(b) Die best-case und die erwartete Laufzeit ist Θ(n · log2 n).

Wir fixieren eine beliebige Eingabe und wählen das Pivot-Elementzufällig. Was ist die erwartete Laufzeit?

Zufällige Pivotwahl- Für jede Eingabe von n Schlüsseln ist Θ(n log2 n) die erwartete

Laufzeit bei zufälliger Pivotwahl.- Die Performance von Quicksort ist bei zufälliger Pivotwahl nicht

mehr von der Eingabe abhängig!

Sortieren Theoretische Informatik 1 31. Oktober 2019 46 / 90

Page 231: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Das Auswahlproblem

Sortieren Theoretische Informatik 1 31. Oktober 2019 47 / 90

Page 232: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Das Auswahlproblem

Eingabe: Ein Array A, zwei Positionen links und rechts in Asowie die Zahl s

Aufgabe: Bestimme den s-kleinsten Schlüssel des Arrays(A[links], . . . ,A[rechts]).

Das Auswahlproblem ist leichter als das Sortierproblem:Baue einen superschnellen Algorithmus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 48 / 90

Page 233: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Das Auswahlproblem

Eingabe: Ein Array A, zwei Positionen links und rechts in Asowie die Zahl s

Aufgabe: Bestimme den s-kleinsten Schlüssel des Arrays(A[links], . . . ,A[rechts]).

Das Auswahlproblem ist leichter als das Sortierproblem:Baue einen superschnellen Algorithmus.

Sortieren Theoretische Informatik 1 31. Oktober 2019 48 / 90

Page 234: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wende die Ideen von Quicksort an

Wähle einen Pivot und zerlege das Array mit partition.Sei i die neue Position des Pivot-Elements.

I Wenn s 6 i−links, dann ist der s-kleinste Schlüssel im TeilarrayA[links], . . . ,A[i − 1] zu finden.

I Wenn s = i−links+1, dann stimmt der s-kleinste Schlüssel mit demPivotelement überein.

I Ansonsten müssen wir im Teilarray (A[i + 1], . . . ,A [rechts])weitersuchen. (Mit s = s − (i − links + 1).)

Und die Laufzeit?

Sortieren Theoretische Informatik 1 31. Oktober 2019 49 / 90

Page 235: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wende die Ideen von Quicksort an

Wähle einen Pivot und zerlege das Array mit partition.Sei i die neue Position des Pivot-Elements.

I Wenn s 6 i−links, dann ist der s-kleinste Schlüssel im Teilarray

A[links], . . . ,A[i − 1] zu finden.I Wenn s = i−links+1, dann stimmt der s-kleinste Schlüssel mit dem

Pivotelement überein.I Ansonsten müssen wir im Teilarray (A[i + 1], . . . ,A [rechts])

weitersuchen. (Mit s = s − (i − links + 1).)

Und die Laufzeit?

Sortieren Theoretische Informatik 1 31. Oktober 2019 49 / 90

Page 236: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wende die Ideen von Quicksort an

Wähle einen Pivot und zerlege das Array mit partition.Sei i die neue Position des Pivot-Elements.

I Wenn s 6 i−links, dann ist der s-kleinste Schlüssel im TeilarrayA[links], . . . ,A[i − 1] zu finden.

I Wenn s = i−links+1, dann stimmt der s-kleinste Schlüssel mit demPivotelement überein.

I Ansonsten müssen wir im Teilarray (A[i + 1], . . . ,A [rechts])weitersuchen. (Mit s = s − (i − links + 1).)

Und die Laufzeit?

Sortieren Theoretische Informatik 1 31. Oktober 2019 49 / 90

Page 237: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wende die Ideen von Quicksort an

Wähle einen Pivot und zerlege das Array mit partition.Sei i die neue Position des Pivot-Elements.

I Wenn s 6 i−links, dann ist der s-kleinste Schlüssel im TeilarrayA[links], . . . ,A[i − 1] zu finden.

I Wenn s = i−links+1,

dann stimmt der s-kleinste Schlüssel mit demPivotelement überein.

I Ansonsten müssen wir im Teilarray (A[i + 1], . . . ,A [rechts])weitersuchen. (Mit s = s − (i − links + 1).)

Und die Laufzeit?

Sortieren Theoretische Informatik 1 31. Oktober 2019 49 / 90

Page 238: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wende die Ideen von Quicksort an

Wähle einen Pivot und zerlege das Array mit partition.Sei i die neue Position des Pivot-Elements.

I Wenn s 6 i−links, dann ist der s-kleinste Schlüssel im TeilarrayA[links], . . . ,A[i − 1] zu finden.

I Wenn s = i−links+1, dann stimmt der s-kleinste Schlüssel mit demPivotelement überein.

I Ansonsten müssen wir im Teilarray (A[i + 1], . . . ,A [rechts])weitersuchen. (Mit s = s − (i − links + 1).)

Und die Laufzeit?

Sortieren Theoretische Informatik 1 31. Oktober 2019 49 / 90

Page 239: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wende die Ideen von Quicksort an

Wähle einen Pivot und zerlege das Array mit partition.Sei i die neue Position des Pivot-Elements.

I Wenn s 6 i−links, dann ist der s-kleinste Schlüssel im TeilarrayA[links], . . . ,A[i − 1] zu finden.

I Wenn s = i−links+1, dann stimmt der s-kleinste Schlüssel mit demPivotelement überein.

I Ansonsten müssen wir im Teilarray (A[i + 1], . . . ,A [rechts])weitersuchen. (Mit s =

s − (i − links + 1).)

Und die Laufzeit?

Sortieren Theoretische Informatik 1 31. Oktober 2019 49 / 90

Page 240: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wende die Ideen von Quicksort an

Wähle einen Pivot und zerlege das Array mit partition.Sei i die neue Position des Pivot-Elements.

I Wenn s 6 i−links, dann ist der s-kleinste Schlüssel im TeilarrayA[links], . . . ,A[i − 1] zu finden.

I Wenn s = i−links+1, dann stimmt der s-kleinste Schlüssel mit demPivotelement überein.

I Ansonsten müssen wir im Teilarray (A[i + 1], . . . ,A [rechts])weitersuchen. (Mit s = s − (i − links + 1).)

Und die Laufzeit?

Sortieren Theoretische Informatik 1 31. Oktober 2019 49 / 90

Page 241: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Wende die Ideen von Quicksort an

Wähle einen Pivot und zerlege das Array mit partition.Sei i die neue Position des Pivot-Elements.

I Wenn s 6 i−links, dann ist der s-kleinste Schlüssel im TeilarrayA[links], . . . ,A[i − 1] zu finden.

I Wenn s = i−links+1, dann stimmt der s-kleinste Schlüssel mit demPivotelement überein.

I Ansonsten müssen wir im Teilarray (A[i + 1], . . . ,A [rechts])weitersuchen. (Mit s = s − (i − links + 1).)

Und die Laufzeit?

Sortieren Theoretische Informatik 1 31. Oktober 2019 49 / 90

Page 242: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Erwartete Laufzeit des Auswahlproblems demogr.

Wie hoch ist die erwartete Laufzeit für das Auswahlproblem bein Schlüsseln?

(1) T (n) = Θ(n/ log n)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log log n)

(4) T (n) = Θ(n log n)

(5) T (n) = Θ(n log2 n)

Auflösung: (2) T (n) = Θ(n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 50 / 90

Page 243: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Erwartete Laufzeit des Auswahlproblems demogr.

Wie hoch ist die erwartete Laufzeit für das Auswahlproblem bein Schlüsseln?

(1) T (n) = Θ(n/ log n)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log log n)

(4) T (n) = Θ(n log n)

(5) T (n) = Θ(n log2 n)

Auflösung:

(2) T (n) = Θ(n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 50 / 90

Page 244: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Erwartete Laufzeit des Auswahlproblems demogr.

Wie hoch ist die erwartete Laufzeit für das Auswahlproblem bein Schlüsseln?

(1) T (n) = Θ(n/ log n)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log log n)

(4) T (n) = Θ(n log n)

(5) T (n) = Θ(n log2 n)

Auflösung: (2) T (n) = Θ(n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 50 / 90

Page 245: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit

Im Unterschied zu Quicksort erhalten wir stets nur ein Teilproblem.

Wenn wir das Pivot-Element zufällig auswürfeln, dann sollte dieerwartete Größe des EINEN Teilproblems ungefähr n/2 betragen.Die Laufzeit „sollte ungefähr“ die Rekursion

T (n) = T (n/2) + c · n

für eine Konstante c besitzen.

Wahl des s-kleinsten SchlüsselsWenn das Pivot-Element zufällig ausgewürfelt wird, dann kann ders-kleinste aus n Schlüsseln in erwarteter Zeit O(n) bestimmt werden.

Beweis analog zur Analyse von Quicksort.

Sortieren Theoretische Informatik 1 31. Oktober 2019 51 / 90

Page 246: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit

Im Unterschied zu Quicksort erhalten wir stets nur ein Teilproblem.Wenn wir das Pivot-Element zufällig auswürfeln, dann sollte dieerwartete Größe des EINEN Teilproblems

ungefähr n/2 betragen.Die Laufzeit „sollte ungefähr“ die Rekursion

T (n) = T (n/2) + c · n

für eine Konstante c besitzen.

Wahl des s-kleinsten SchlüsselsWenn das Pivot-Element zufällig ausgewürfelt wird, dann kann ders-kleinste aus n Schlüsseln in erwarteter Zeit O(n) bestimmt werden.

Beweis analog zur Analyse von Quicksort.

Sortieren Theoretische Informatik 1 31. Oktober 2019 51 / 90

Page 247: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit

Im Unterschied zu Quicksort erhalten wir stets nur ein Teilproblem.Wenn wir das Pivot-Element zufällig auswürfeln, dann sollte dieerwartete Größe des EINEN Teilproblems ungefähr n/2 betragen.

Die Laufzeit „sollte ungefähr“ die Rekursion

T (n) = T (n/2) + c · n

für eine Konstante c besitzen.

Wahl des s-kleinsten SchlüsselsWenn das Pivot-Element zufällig ausgewürfelt wird, dann kann ders-kleinste aus n Schlüsseln in erwarteter Zeit O(n) bestimmt werden.

Beweis analog zur Analyse von Quicksort.

Sortieren Theoretische Informatik 1 31. Oktober 2019 51 / 90

Page 248: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit

Im Unterschied zu Quicksort erhalten wir stets nur ein Teilproblem.Wenn wir das Pivot-Element zufällig auswürfeln, dann sollte dieerwartete Größe des EINEN Teilproblems ungefähr n/2 betragen.Die Laufzeit „sollte ungefähr“ die Rekursion

T (n) = T (n/2) +

c · n

für eine Konstante c besitzen.

Wahl des s-kleinsten SchlüsselsWenn das Pivot-Element zufällig ausgewürfelt wird, dann kann ders-kleinste aus n Schlüsseln in erwarteter Zeit O(n) bestimmt werden.

Beweis analog zur Analyse von Quicksort.

Sortieren Theoretische Informatik 1 31. Oktober 2019 51 / 90

Page 249: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit

Im Unterschied zu Quicksort erhalten wir stets nur ein Teilproblem.Wenn wir das Pivot-Element zufällig auswürfeln, dann sollte dieerwartete Größe des EINEN Teilproblems ungefähr n/2 betragen.Die Laufzeit „sollte ungefähr“ die Rekursion

T (n) = T (n/2) + c · n

für eine Konstante c besitzen.

Wahl des s-kleinsten SchlüsselsWenn das Pivot-Element zufällig ausgewürfelt wird, dann kann ders-kleinste aus n Schlüsseln in erwarteter Zeit O(n) bestimmt werden.

Beweis analog zur Analyse von Quicksort.

Sortieren Theoretische Informatik 1 31. Oktober 2019 51 / 90

Page 250: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Die erwartete Laufzeit

Im Unterschied zu Quicksort erhalten wir stets nur ein Teilproblem.Wenn wir das Pivot-Element zufällig auswürfeln, dann sollte dieerwartete Größe des EINEN Teilproblems ungefähr n/2 betragen.Die Laufzeit „sollte ungefähr“ die Rekursion

T (n) = T (n/2) + c · n

für eine Konstante c besitzen.

Wahl des s-kleinsten SchlüsselsWenn das Pivot-Element zufällig ausgewürfelt wird, dann kann ders-kleinste aus n Schlüsseln in erwarteter Zeit O(n) bestimmt werden.

Beweis analog zur Analyse von Quicksort.

Sortieren Theoretische Informatik 1 31. Oktober 2019 51 / 90

Page 251: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mergesort

Sortieren Theoretische Informatik 1 31. Oktober 2019 52 / 90

Page 252: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mergesort

Wir sortieren, indem wir

zuerst die linke und rechte Hälfte rekursiv sortieren unddann die beiden sortierten Hälften „mischen“. (Web)

void mergesort (int links, int rechts) int mitte;if (rechts > links) mitte = (links + rechts)/2;mergesort (links, mitte);mergesort (mitte + 1, rechts);merge (links, mitte, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 53 / 90

Page 253: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mergesort

Wir sortieren, indem wirzuerst die linke und rechte Hälfte rekursiv sortieren und

dann die beiden sortierten Hälften „mischen“. (Web)

void mergesort (int links, int rechts) int mitte;if (rechts > links) mitte = (links + rechts)/2;mergesort (links, mitte);mergesort (mitte + 1, rechts);merge (links, mitte, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 53 / 90

Page 254: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mergesort

Wir sortieren, indem wirzuerst die linke und rechte Hälfte rekursiv sortieren unddann die beiden sortierten Hälften „mischen“. (Web)

void mergesort (int links, int rechts) int mitte;if (rechts > links) mitte = (links + rechts)/2;mergesort (links, mitte);mergesort (mitte + 1, rechts);merge (links, mitte, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 53 / 90

Page 255: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mergesort

Wir sortieren, indem wirzuerst die linke und rechte Hälfte rekursiv sortieren unddann die beiden sortierten Hälften „mischen“. (Web)

void mergesort (int links, int rechts) int mitte;

if (rechts > links) mitte = (links + rechts)/2;mergesort (links, mitte);mergesort (mitte + 1, rechts);merge (links, mitte, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 53 / 90

Page 256: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mergesort

Wir sortieren, indem wirzuerst die linke und rechte Hälfte rekursiv sortieren unddann die beiden sortierten Hälften „mischen“. (Web)

void mergesort (int links, int rechts) int mitte;if (rechts > links) mitte = (links + rechts)/2;

mergesort (links, mitte);mergesort (mitte + 1, rechts);merge (links, mitte, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 53 / 90

Page 257: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mergesort

Wir sortieren, indem wirzuerst die linke und rechte Hälfte rekursiv sortieren unddann die beiden sortierten Hälften „mischen“. (Web)

void mergesort (int links, int rechts) int mitte;if (rechts > links) mitte = (links + rechts)/2;mergesort (links, mitte);

mergesort (mitte + 1, rechts);merge (links, mitte, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 53 / 90

Page 258: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mergesort

Wir sortieren, indem wirzuerst die linke und rechte Hälfte rekursiv sortieren unddann die beiden sortierten Hälften „mischen“. (Web)

void mergesort (int links, int rechts) int mitte;if (rechts > links) mitte = (links + rechts)/2;mergesort (links, mitte);mergesort (mitte + 1, rechts);

merge (links, mitte, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 53 / 90

Page 259: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mergesort

Wir sortieren, indem wirzuerst die linke und rechte Hälfte rekursiv sortieren unddann die beiden sortierten Hälften „mischen“. (Web)

void mergesort (int links, int rechts) int mitte;if (rechts > links) mitte = (links + rechts)/2;mergesort (links, mitte);mergesort (mitte + 1, rechts);merge (links, mitte, rechts);

Sortieren Theoretische Informatik 1 31. Oktober 2019 53 / 90

Page 260: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mischen

Mergesort funktioniert, wenn Merge die beiden sortierten Teilfolgenkorrekt sortiert.

void merge (int links, int mitte, int rechts)

int i, j, k;for (i = links; i <= mitte; i++)

B[i] = A[i];// B ist ein global definiertes integer-Array.// Das erste Teilarray wird nach B kopiert.for (i = mitte + 1; i <= rechts; i++)

B[i] = A[rechts - i + mitte + 1];// Das zweite Teilarray wird in umgekehrter Reihenfolge nach// B kopiert. Jetzt kann gemischt werden.i = links, j = rechts;for (k = links; k <= rechts; k++)

A[k] = (B[i] < B[j])? B[i++] : B[j- -];

Sortieren Theoretische Informatik 1 31. Oktober 2019 54 / 90

Page 261: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mischen

Mergesort funktioniert, wenn Merge die beiden sortierten Teilfolgenkorrekt sortiert.

void merge (int links, int mitte, int rechts) int i, j, k;

for (i = links; i <= mitte; i++)B[i] = A[i];

// B ist ein global definiertes integer-Array.// Das erste Teilarray wird nach B kopiert.for (i = mitte + 1; i <= rechts; i++)

B[i] = A[rechts - i + mitte + 1];// Das zweite Teilarray wird in umgekehrter Reihenfolge nach// B kopiert. Jetzt kann gemischt werden.i = links, j = rechts;for (k = links; k <= rechts; k++)

A[k] = (B[i] < B[j])? B[i++] : B[j- -];

Sortieren Theoretische Informatik 1 31. Oktober 2019 54 / 90

Page 262: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mischen

Mergesort funktioniert, wenn Merge die beiden sortierten Teilfolgenkorrekt sortiert.

void merge (int links, int mitte, int rechts) int i, j, k;for (i = links; i <= mitte; i++)

B[i] = A[i];// B ist ein global definiertes integer-Array.// Das erste Teilarray wird nach B kopiert.

for (i = mitte + 1; i <= rechts; i++)B[i] = A[rechts - i + mitte + 1];

// Das zweite Teilarray wird in umgekehrter Reihenfolge nach// B kopiert. Jetzt kann gemischt werden.i = links, j = rechts;for (k = links; k <= rechts; k++)

A[k] = (B[i] < B[j])? B[i++] : B[j- -];

Sortieren Theoretische Informatik 1 31. Oktober 2019 54 / 90

Page 263: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mischen

Mergesort funktioniert, wenn Merge die beiden sortierten Teilfolgenkorrekt sortiert.

void merge (int links, int mitte, int rechts) int i, j, k;for (i = links; i <= mitte; i++)

B[i] = A[i];// B ist ein global definiertes integer-Array.// Das erste Teilarray wird nach B kopiert.for (i = mitte + 1; i <= rechts; i++)

B[i] = A[rechts - i + mitte + 1];// Das zweite Teilarray wird in umgekehrter Reihenfolge nach// B kopiert. Jetzt kann gemischt werden.

i = links, j = rechts;for (k = links; k <= rechts; k++)

A[k] = (B[i] < B[j])? B[i++] : B[j- -];

Sortieren Theoretische Informatik 1 31. Oktober 2019 54 / 90

Page 264: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mischen

Mergesort funktioniert, wenn Merge die beiden sortierten Teilfolgenkorrekt sortiert.

void merge (int links, int mitte, int rechts) int i, j, k;for (i = links; i <= mitte; i++)

B[i] = A[i];// B ist ein global definiertes integer-Array.// Das erste Teilarray wird nach B kopiert.for (i = mitte + 1; i <= rechts; i++)

B[i] = A[rechts - i + mitte + 1];// Das zweite Teilarray wird in umgekehrter Reihenfolge nach// B kopiert. Jetzt kann gemischt werden.i = links, j = rechts;for (k = links; k <= rechts; k++)

A[k] = (B[i] < B[j])? B[i++] : B[j- -];

Sortieren Theoretische Informatik 1 31. Oktober 2019 54 / 90

Page 265: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Mischen

Mergesort funktioniert, wenn Merge die beiden sortierten Teilfolgenkorrekt sortiert.

void merge (int links, int mitte, int rechts) int i, j, k;for (i = links; i <= mitte; i++)

B[i] = A[i];// B ist ein global definiertes integer-Array.// Das erste Teilarray wird nach B kopiert.for (i = mitte + 1; i <= rechts; i++)

B[i] = A[rechts - i + mitte + 1];// Das zweite Teilarray wird in umgekehrter Reihenfolge nach// B kopiert. Jetzt kann gemischt werden.i = links, j = rechts;for (k = links; k <= rechts; k++)

A[k] = (B[i] < B[j])? B[i++] : B[j- -]; Sortieren Theoretische Informatik 1 31. Oktober 2019 54 / 90

Page 266: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Mergesort

Merge mischt die beiden sortierten Teilarrays, indem essukzessive nach der kleinsten Zahl in beiden Teilarrays fragt.

n = rechts− links + 1 ist die Anzahl der beteiligten Schlüssel.Merge rechnet in Zeit O(n).Für Mergesort erhalten wir die Rekursionsgleichung

T (n) = 2T (n/2) + O(n).

Mergesort sortiert n Schlüssel in Zeit O(n · log2 n).

+ Positiv: Mergesort ist sehr schnell.- Negativ: Mergesort benötigt das zusätzliche Array B und ist damit

kein in place Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 55 / 90

Page 267: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Mergesort

Merge mischt die beiden sortierten Teilarrays, indem essukzessive nach der kleinsten Zahl in beiden Teilarrays fragt.n = rechts− links + 1 ist die Anzahl der beteiligten Schlüssel.Merge rechnet in Zeit

O(n).Für Mergesort erhalten wir die Rekursionsgleichung

T (n) = 2T (n/2) + O(n).

Mergesort sortiert n Schlüssel in Zeit O(n · log2 n).

+ Positiv: Mergesort ist sehr schnell.- Negativ: Mergesort benötigt das zusätzliche Array B und ist damit

kein in place Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 55 / 90

Page 268: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Mergesort

Merge mischt die beiden sortierten Teilarrays, indem essukzessive nach der kleinsten Zahl in beiden Teilarrays fragt.n = rechts− links + 1 ist die Anzahl der beteiligten Schlüssel.Merge rechnet in Zeit O(n).

Für Mergesort erhalten wir die Rekursionsgleichung

T (n) = 2T (n/2) + O(n).

Mergesort sortiert n Schlüssel in Zeit O(n · log2 n).

+ Positiv: Mergesort ist sehr schnell.- Negativ: Mergesort benötigt das zusätzliche Array B und ist damit

kein in place Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 55 / 90

Page 269: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Mergesort

Merge mischt die beiden sortierten Teilarrays, indem essukzessive nach der kleinsten Zahl in beiden Teilarrays fragt.n = rechts− links + 1 ist die Anzahl der beteiligten Schlüssel.Merge rechnet in Zeit O(n).Für Mergesort erhalten wir die Rekursionsgleichung

T (n) = 2T (n/2) + O(n).

Mergesort sortiert n Schlüssel in Zeit O(n · log2 n).

+ Positiv: Mergesort ist sehr schnell.- Negativ: Mergesort benötigt das zusätzliche Array B und ist damit

kein in place Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 55 / 90

Page 270: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Mergesort

Merge mischt die beiden sortierten Teilarrays, indem essukzessive nach der kleinsten Zahl in beiden Teilarrays fragt.n = rechts− links + 1 ist die Anzahl der beteiligten Schlüssel.Merge rechnet in Zeit O(n).Für Mergesort erhalten wir die Rekursionsgleichung

T (n) = 2T (n/2) + O(n).

Mergesort sortiert n Schlüssel in Zeit O(n · log2 n).

+ Positiv: Mergesort ist sehr schnell.- Negativ: Mergesort benötigt das zusätzliche Array B und ist damit

kein in place Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 55 / 90

Page 271: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Mergesort

Merge mischt die beiden sortierten Teilarrays, indem essukzessive nach der kleinsten Zahl in beiden Teilarrays fragt.n = rechts− links + 1 ist die Anzahl der beteiligten Schlüssel.Merge rechnet in Zeit O(n).Für Mergesort erhalten wir die Rekursionsgleichung

T (n) = 2T (n/2) + O(n).

Mergesort sortiert n Schlüssel in Zeit O(n · log2 n).

+ Positiv: Mergesort ist sehr schnell.

- Negativ: Mergesort benötigt das zusätzliche Array B und ist damitkein in place Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 55 / 90

Page 272: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit von Mergesort

Merge mischt die beiden sortierten Teilarrays, indem essukzessive nach der kleinsten Zahl in beiden Teilarrays fragt.n = rechts− links + 1 ist die Anzahl der beteiligten Schlüssel.Merge rechnet in Zeit O(n).Für Mergesort erhalten wir die Rekursionsgleichung

T (n) = 2T (n/2) + O(n).

Mergesort sortiert n Schlüssel in Zeit O(n · log2 n).

+ Positiv: Mergesort ist sehr schnell.- Negativ: Mergesort benötigt das zusätzliche Array B und ist damit

kein in place Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 55 / 90

Page 273: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Ein nicht-rekursiver Mergesort

n ist eine Zweierpotenz. Sortiere das Array (A[1], . . . ,A[n]).

Die rekursive Sichtweise: Für mergesort(i , j) führezuerst mergesort(i , (i + j)/2) und mergesort((i + j)/2 + 1, j) aus.Dann mische.Eine nicht-rekursive Sichtweise:

I Zuerst mische alle Paare

(A[2i + 1],A[2 · (i + 1)])

für i = 0, . . . , n2 − 1.

I Dann mische Vierergruppen

(A[4i + 1],A[4i + 2],A[4i + 3],A[4 · (i + 1)])

für i = 0, . . . , n4 − 1.

I Allgemein, in der k ten Phase, mische

(A[2k i + 1],A[2k i + 2], . . . ,A[2k i + 2k − 1],A[2k · (i + 1)])

für i = 0, . . . , n2k − 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 56 / 90

Page 274: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Ein nicht-rekursiver Mergesort

n ist eine Zweierpotenz. Sortiere das Array (A[1], . . . ,A[n]).

Die rekursive Sichtweise: Für mergesort(i , j) führezuerst mergesort(i , (i + j)/2) und mergesort((i + j)/2 + 1, j) aus.Dann mische.Eine nicht-rekursive Sichtweise:

I Zuerst mische alle Paare

(A[2i + 1],A[2 · (i + 1)])

für i = 0, . . . , n2 − 1.

I Dann mische Vierergruppen

(A[4i + 1],A[4i + 2],A[4i + 3],A[4 · (i + 1)])

für i = 0, . . . , n4 − 1.

I Allgemein, in der k ten Phase, mische

(A[2k i + 1],A[2k i + 2], . . . ,A[2k i + 2k − 1],A[2k · (i + 1)])

für i = 0, . . . , n2k − 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 56 / 90

Page 275: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Ein nicht-rekursiver Mergesort

n ist eine Zweierpotenz. Sortiere das Array (A[1], . . . ,A[n]).

Die rekursive Sichtweise: Für mergesort(i , j) führezuerst mergesort(i , (i + j)/2) und mergesort((i + j)/2 + 1, j) aus.Dann mische.Eine nicht-rekursive Sichtweise:

I Zuerst mische alle Paare

(A[2i + 1],A[2 · (i + 1)])

für i = 0, . . . , n2 − 1.

I Dann mische Vierergruppen

(A[4i + 1],A[4i + 2],A[4i + 3],A[4 · (i + 1)])

für i = 0, . . . , n4 − 1.

I Allgemein, in der k ten Phase, mische

(A[2k i + 1],A[2k i + 2], . . . ,A[2k i + 2k − 1],A[2k · (i + 1)])

für i = 0, . . . , n2k − 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 56 / 90

Page 276: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Ein nicht-rekursiver Mergesort

n ist eine Zweierpotenz. Sortiere das Array (A[1], . . . ,A[n]).

Die rekursive Sichtweise: Für mergesort(i , j) führezuerst mergesort(i , (i + j)/2) und mergesort((i + j)/2 + 1, j) aus.Dann mische.Eine nicht-rekursive Sichtweise:

I Zuerst mische alle Paare

(A[2i + 1],A[2 · (i + 1)])

für i = 0, . . . , n2 − 1.

I Dann mische Vierergruppen

(A[4i + 1],A[4i + 2],A[4i + 3],A[4 · (i + 1)])

für i = 0, . . . , n4 − 1.

I Allgemein, in der k ten Phase, mische

(A[2k i + 1],A[2k i + 2], . . . ,A[2k i + 2k − 1],A[2k · (i + 1)])

für i = 0, . . . , n2k − 1.

Sortieren Theoretische Informatik 1 31. Oktober 2019 56 / 90

Page 277: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Externspeicher (1/2)

Modell eines Externspeichers

Problemgröße n Hauptspeichergröße M⇒ Daten liegen auf Festplatte.Festplattenzugriffe sind um einen Faktor 104 bis 106

langsamer als der Prozessortakt.Aber in einem Zugriff können B ∼ 103 bis 105

aufeinanderfolgende Daten eingelesen werden.

Schnelle Sortierverfahren für Externspeicher arbeiten auf großenBlöcken aufeinanderfolgender Daten.

Sortieren Theoretische Informatik 1 31. Oktober 2019 57 / 90

Page 278: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Externspeicher (1/2)

Modell eines Externspeichers

Problemgröße n Hauptspeichergröße M⇒ Daten liegen auf Festplatte.Festplattenzugriffe sind um einen Faktor 104 bis 106

langsamer als der Prozessortakt.Aber in einem Zugriff können B ∼ 103 bis 105

aufeinanderfolgende Daten eingelesen werden.

Schnelle Sortierverfahren für Externspeicher arbeiten auf großenBlöcken aufeinanderfolgender Daten.

Sortieren Theoretische Informatik 1 31. Oktober 2019 57 / 90

Page 279: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 280: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.

Zeit = O( nB · B · log2 B) = O(n · log2 B).

Jetzt wende den nicht-rekursiven Mergesort auf die nB sortierten

Teilfolgen an.I Wieviele Iterationen? Nur log2

nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 281: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B

· B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 282: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) =

O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 283: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).

Jetzt wende den nicht-rekursiven Mergesort auf die nB sortierten

Teilfolgen an.I Wieviele Iterationen? Nur log2

nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 284: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 285: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen?

Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 286: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 287: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 288: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort

O( nB ) Zugriffe.

I In log2nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 289: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.

I In log2nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 290: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils

O( nB ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 291: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 292: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 293: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Einfaches Externspeichersortieren

Es gilt M ≥ 3 · B, in der Praxis passen oft sogar 103 bis 106 Blöcke inden Hauptspeicher.

Sortiere die Teilfolgen (A[B · i + 1], . . . ,A[B · (i + 1)]) der Größe Bnacheinander mit Quicksort im Hauptspeicher.Zeit = O( n

B · B · log2 B) = O(n · log2 B).Jetzt wende den nicht-rekursiven Mergesort auf die n

B sortiertenTeilfolgen an.

I Wieviele Iterationen? Nur log2nB Iterationen.

I Laufzeit des nicht rekursiven Mergesort = O(n · log2nB ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In log2

nB Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 B) + O(n · log2nB ) = O(n · log2 n).

- Anzahl der Festplattenzugriffe = O( nB log2

nB ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 58 / 90

Page 294: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.

Zeit = O( nM ·M · log2 M) = O(n · log2 M).

Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 295: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M

·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 296: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) =

O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 297: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).

Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 298: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 299: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 300: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 301: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort

O( nB ) Zugriffe.

I In O(logM/BnM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 302: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.

I In O(logM/BnM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 303: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils

O( nB ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 304: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 305: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 306: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Verbessertes Externspeichersortieren

Sortiere die Teilfolgen der Größe Θ(M) (statt B) nacheinander mitQuicksort im Hauptspeicher.Zeit = O( n

M ·M · log2 M) = O(n · log2 M).Mische anschließend pro Iteration Θ(M/B) (statt 2) sortierteTeilfolgen zusammmen.

I Nur noch O(logM/BnM ) (statt log2

nB ) Iterationen.

I Laufzeit fürs Mischen = O(n · logM/BnM · log2

MB ) = O(n · log2

nM ).

Wieviele Festplattenzugriffe?I Für das anfängliche Sortieren mit Quicksort O( n

B ) Zugriffe.I In O(logM/B

nM ) Iterationen jeweils O( n

B ) weitere Zugriffe.

- Laufzeit insgesamt = O(n · log2 M) + O(n · log2nM ) = O(n · log2 n).

- Anzahl der Diskzugriffe = O( nB logM/B

nM ) (statt O( n

B log2nB )).

Sortieren Theoretische Informatik 1 31. Oktober 2019 59 / 90

Page 307: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Externspeicher-Sortieren demogr.

Sei B =√

M und n = M2. Wieviele Mergephasen braucht dann dasverbesserte Externspeicher-Sortieren?

(1) Θ(1) Phasen(2) Θ(log M

B ) Phasen(3) Θ(log n) Phasen(4) Θ(n) Phasen(5) Hä?

Auflösung: (1) Θ(1) Phasen

Sortieren Theoretische Informatik 1 31. Oktober 2019 60 / 90

Page 308: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Externspeicher-Sortieren demogr.

Sei B =√

M und n = M2. Wieviele Mergephasen braucht dann dasverbesserte Externspeicher-Sortieren?

(1) Θ(1) Phasen(2) Θ(log M

B ) Phasen(3) Θ(log n) Phasen(4) Θ(n) Phasen(5) Hä?

Auflösung:

(1) Θ(1) Phasen

Sortieren Theoretische Informatik 1 31. Oktober 2019 60 / 90

Page 309: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Externspeicher-Sortieren demogr.

Sei B =√

M und n = M2. Wieviele Mergephasen braucht dann dasverbesserte Externspeicher-Sortieren?

(1) Θ(1) Phasen(2) Θ(log M

B ) Phasen(3) Θ(log n) Phasen(4) Θ(n) Phasen(5) Hä?

Auflösung: (1) Θ(1) Phasen

Sortieren Theoretische Informatik 1 31. Oktober 2019 60 / 90

Page 310: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Zusammenfassung: Quicksort und Mergesort

Quicksort mit zufälliger Pivot-Wahl(a) Quicksort sortiert jede Folge von n Schlüsseln in place in

erwarteter Zeit Θ(n · log2 n).

(b) Mit einem Quicksort-Ansatz wird die s-kleinste Zahl in erwarteterZeit Θ(n) bestimmt.

Der nicht-rekursive Mergesort(a) n Schlüssel werden durch Mergesort in worst-case Zeit

Θ(n · log2 n) sortiert.(b) Höchstens O( n

B logM/BnM ) Zugriffe auf den Externspeicher.

Sortieren Theoretische Informatik 1 31. Oktober 2019 61 / 90

Page 311: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Zusammenfassung: Quicksort und Mergesort

Quicksort mit zufälliger Pivot-Wahl(a) Quicksort sortiert jede Folge von n Schlüsseln in place in

erwarteter Zeit Θ(n · log2 n).(b) Mit einem Quicksort-Ansatz wird die s-kleinste Zahl in erwarteter

Zeit Θ(n) bestimmt.

Der nicht-rekursive Mergesort(a) n Schlüssel werden durch Mergesort in worst-case Zeit

Θ(n · log2 n) sortiert.(b) Höchstens O( n

B logM/BnM ) Zugriffe auf den Externspeicher.

Sortieren Theoretische Informatik 1 31. Oktober 2019 61 / 90

Page 312: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Zusammenfassung: Quicksort und Mergesort

Quicksort mit zufälliger Pivot-Wahl(a) Quicksort sortiert jede Folge von n Schlüsseln in place in

erwarteter Zeit Θ(n · log2 n).(b) Mit einem Quicksort-Ansatz wird die s-kleinste Zahl in erwarteter

Zeit Θ(n) bestimmt.

Der nicht-rekursive Mergesort(a) n Schlüssel werden durch Mergesort in worst-case Zeit

Θ(n · log2 n) sortiert.

(b) Höchstens O( nB logM/B

nM ) Zugriffe auf den Externspeicher.

Sortieren Theoretische Informatik 1 31. Oktober 2019 61 / 90

Page 313: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Zusammenfassung: Quicksort und Mergesort

Quicksort mit zufälliger Pivot-Wahl(a) Quicksort sortiert jede Folge von n Schlüsseln in place in

erwarteter Zeit Θ(n · log2 n).(b) Mit einem Quicksort-Ansatz wird die s-kleinste Zahl in erwarteter

Zeit Θ(n) bestimmt.

Der nicht-rekursive Mergesort(a) n Schlüssel werden durch Mergesort in worst-case Zeit

Θ(n · log2 n) sortiert.(b) Höchstens O( n

B logM/BnM ) Zugriffe auf den Externspeicher.

Sortieren Theoretische Informatik 1 31. Oktober 2019 61 / 90

Page 314: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Kann man in linearer Zeit sortieren?

Sortieren Theoretische Informatik 1 31. Oktober 2019 62 / 90

Page 315: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Ist Ω(n · log2 n) eine Schallmauer?

- Alle bisher betrachteten Sortierverfahren(Heap-, Bubble-, Selection-, Insertion-, Quick- und Mergesort)

sortieren, indem sie Schlüssel miteinander vergleichen.- Wir haben nie die Laufzeit O(n · log2 n) schlagen können.

Wir zeigen, dass Ω(n · log2 n) eine Schallmauer für

vergleichsorientierte

Sortierverfahren ist.

Sortieren Theoretische Informatik 1 31. Oktober 2019 63 / 90

Page 316: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Ist Ω(n · log2 n) eine Schallmauer?

- Alle bisher betrachteten Sortierverfahren(Heap-, Bubble-, Selection-, Insertion-, Quick- und Mergesort)

sortieren, indem sie Schlüssel miteinander vergleichen.- Wir haben nie die Laufzeit O(n · log2 n) schlagen können.

Wir zeigen, dass Ω(n · log2 n) eine Schallmauer für

vergleichsorientierte

Sortierverfahren ist.

Sortieren Theoretische Informatik 1 31. Oktober 2019 63 / 90

Page 317: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Vergleichsorientierte Sortierverfahren

Vergleichsorientierte Algorithmen können durchVergleichsbäume modelliert werden:

Der Ordnungstyp einer Eingabe a = (a1, . . . ,an) ist diePermutation π, die a sortiert; also

aπ(1) < aπ(2) < · · · < aπ(n).

Ein Vergleichsbaum für n Eingaben x1, . . . , xn ist ein binärerBaum, so dass jedem inneren Knoten genau ein Vergleich derForm xi < xj zugeordnet ist.

I Eine Eingabe (a1, . . . ,an) durchläuft den Baum, beginnend mit derWurzel.

I Falls der Knoten v erreicht wird und falls xi < xj auszuführen ist,dann weiter mit dem linken (rechten) Kind, falls ai < aj (ai > aj ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 64 / 90

Page 318: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Vergleichsorientierte Sortierverfahren

Vergleichsorientierte Algorithmen können durchVergleichsbäume modelliert werden:

Der Ordnungstyp einer Eingabe a = (a1, . . . ,an) ist diePermutation π, die a sortiert; also

aπ(1) < aπ(2) < · · · < aπ(n).

Ein Vergleichsbaum für n Eingaben x1, . . . , xn ist ein binärerBaum, so dass jedem inneren Knoten genau ein Vergleich derForm xi < xj zugeordnet ist.

I Eine Eingabe (a1, . . . ,an) durchläuft den Baum, beginnend mit derWurzel.

I Falls der Knoten v erreicht wird und falls xi < xj auszuführen ist,dann weiter mit dem linken (rechten) Kind, falls ai < aj (ai > aj ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 64 / 90

Page 319: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Vergleichsorientierte Sortierverfahren

Vergleichsorientierte Algorithmen können durchVergleichsbäume modelliert werden:

Der Ordnungstyp einer Eingabe a = (a1, . . . ,an) ist diePermutation π, die a sortiert; also

aπ(1) < aπ(2) < · · · < aπ(n).

Ein Vergleichsbaum für n Eingaben x1, . . . , xn ist ein binärerBaum, so dass jedem inneren Knoten genau ein Vergleich derForm xi < xj zugeordnet ist.

I Eine Eingabe (a1, . . . ,an) durchläuft den Baum, beginnend mit derWurzel.

I Falls der Knoten v erreicht wird und falls xi < xj auszuführen ist,dann weiter mit dem linken (rechten) Kind, falls ai < aj (ai > aj ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 64 / 90

Page 320: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Vergleichsorientierte Sortierverfahren

Vergleichsorientierte Algorithmen können durchVergleichsbäume modelliert werden:

Der Ordnungstyp einer Eingabe a = (a1, . . . ,an) ist diePermutation π, die a sortiert; also

aπ(1) < aπ(2) < · · · < aπ(n).

Ein Vergleichsbaum für n Eingaben x1, . . . , xn ist ein binärerBaum, so dass jedem inneren Knoten genau ein Vergleich derForm xi < xj zugeordnet ist.

I Eine Eingabe (a1, . . . ,an) durchläuft den Baum, beginnend mit derWurzel.

I Falls der Knoten v erreicht wird und falls xi < xj auszuführen ist,dann weiter mit dem linken (rechten) Kind,

falls ai < aj (ai > aj ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 64 / 90

Page 321: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Vergleichsorientierte Sortierverfahren

Vergleichsorientierte Algorithmen können durchVergleichsbäume modelliert werden:

Der Ordnungstyp einer Eingabe a = (a1, . . . ,an) ist diePermutation π, die a sortiert; also

aπ(1) < aπ(2) < · · · < aπ(n).

Ein Vergleichsbaum für n Eingaben x1, . . . , xn ist ein binärerBaum, so dass jedem inneren Knoten genau ein Vergleich derForm xi < xj zugeordnet ist.

I Eine Eingabe (a1, . . . ,an) durchläuft den Baum, beginnend mit derWurzel.

I Falls der Knoten v erreicht wird und falls xi < xj auszuführen ist,dann weiter mit dem linken (rechten) Kind, falls ai < aj (ai > aj ).

Sortieren Theoretische Informatik 1 31. Oktober 2019 64 / 90

Page 322: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierbäume

- Ein Vergleichsbaum sortiert, falls alle Eingaben, die dasselbe Blatterreichen, denselben Ordnungstyp besitzen.

- In diesem Fall sprechen wir von einem Sortierbaum.

Der Sortierbaum von Bubblesort für n = 3 Schlüssel:

AAA

AAA

AAA

@@@

@@@

!!!!

!!

aaaa

aax1 < x2

x2 < x3

x1 < x3

x1 < x3

x2 < x1 x2 < x3

ja ja janein nein nein

ja janein nein

ja nein

Sortieren Theoretische Informatik 1 31. Oktober 2019 65 / 90

Page 323: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierbäume

- Ein Vergleichsbaum sortiert, falls alle Eingaben, die dasselbe Blatterreichen, denselben Ordnungstyp besitzen.

- In diesem Fall sprechen wir von einem Sortierbaum.

Der Sortierbaum von Bubblesort für n = 3 Schlüssel:

AAA

AAA

AAA

@@@

@@@

!!!!

!!

aaaa

aax1 < x2

x2 < x3

x1 < x3

x1 < x3

x2 < x1 x2 < x3

ja ja janein nein nein

ja janein nein

ja nein

Sortieren Theoretische Informatik 1 31. Oktober 2019 65 / 90

Page 324: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierbäume

- Ein Vergleichsbaum sortiert, falls alle Eingaben, die dasselbe Blatterreichen, denselben Ordnungstyp besitzen.

- In diesem Fall sprechen wir von einem Sortierbaum.

Der Sortierbaum von Bubblesort für n = 3 Schlüssel:

AAA

AAA

AAA

@@@

@@@

!!!!

!!

aaaa

aax1 < x2

x2 < x3

x1 < x3

x1 < x3

x2 < x1 x2 < x3

ja ja janein nein nein

ja janein nein

ja nein

Sortieren Theoretische Informatik 1 31. Oktober 2019 65 / 90

Page 325: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe

T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 326: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 327: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?

I Mindestens n! Blätter.Ein Sortierbaum ist ein Binärbaum.

I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 328: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 329: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?

I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 330: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 331: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten:

2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 332: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 333: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!)

> log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 334: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 335: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren und ihre Sortierbäume

Wenn ein vergleichsorientiertes Sortierverfahren im worst case mitT (n) Vergleichen sortiert, dann hat sein Sortierbaum die Tiefe T (n).

Mindestens ein Blatt pro Ordnungstyp.I Wieviele Blätter hat ein Sortierbaum mindestens?I Mindestens n! Blätter.

Ein Sortierbaum ist ein Binärbaum.I Wieviele Blätter hat ein Sortierbaum der Tiefe t höchstens?I Höchstens 2t Blätter.

Wenn Tiefe t ausreicht, dann muss gelten: 2t > n!.⇒

t > log2(n!) > log2(n) + log2(n − 1) + · · ·+ log2(n2

)

>n2· log2

n2.

Sortieren Theoretische Informatik 1 31. Oktober 2019 66 / 90

Page 336: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine untere Schranke

Satz

- Jeder Sortierbaum für n Schlüssel hat Tiefe Ω(n · log2 n).

- Jedes vergleichsorientierte Sortierverfahren führt mindestensΩ(n · log2 n) Vergleiche durch.

Sortieren Theoretische Informatik 1 31. Oktober 2019 67 / 90

Page 337: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Entscheidungsbäume demogr.

Der Entscheidungsbaum für einen Sortieralgorithmus A habe fürEingaben der Größe n eine maximale Tiefe tA(n).

Kann man daraus folgern, dass für die durchschnittliche LaufzeitE [TA(n)] folgendes gilt: E [TA(n)] = Θ(tA(n)) ?

(1) ja, das gilt.(2) nein, das gilt nicht.(3) kann mich gerade nicht entscheiden.

Auflösung: (2) nein.

Sortieren Theoretische Informatik 1 31. Oktober 2019 68 / 90

Page 338: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Entscheidungsbäume demogr.

Der Entscheidungsbaum für einen Sortieralgorithmus A habe fürEingaben der Größe n eine maximale Tiefe tA(n).

Kann man daraus folgern, dass für die durchschnittliche LaufzeitE [TA(n)] folgendes gilt: E [TA(n)] = Θ(tA(n)) ?

(1) ja, das gilt.(2) nein, das gilt nicht.(3) kann mich gerade nicht entscheiden.

Auflösung:

(2) nein.

Sortieren Theoretische Informatik 1 31. Oktober 2019 68 / 90

Page 339: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Entscheidungsbäume demogr.

Der Entscheidungsbaum für einen Sortieralgorithmus A habe fürEingaben der Größe n eine maximale Tiefe tA(n).

Kann man daraus folgern, dass für die durchschnittliche LaufzeitE [TA(n)] folgendes gilt: E [TA(n)] = Θ(tA(n)) ?

(1) ja, das gilt.(2) nein, das gilt nicht.(3) kann mich gerade nicht entscheiden.

Auflösung: (2) nein.

Sortieren Theoretische Informatik 1 31. Oktober 2019 68 / 90

Page 340: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Distribution Counting

Sortieren Theoretische Informatik 1 31. Oktober 2019 69 / 90

Page 341: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren müssen Vergleiche benutzen und deshalb sindmindestens Ω(n · log2 n) Vergleiche notwendig!

Schwachsinn!

Sortieren Theoretische Informatik 1 31. Oktober 2019 70 / 90

Page 342: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortierverfahren müssen Vergleiche benutzen und deshalb sindmindestens Ω(n · log2 n) Vergleiche notwendig!

Schwachsinn!

Sortieren Theoretische Informatik 1 31. Oktober 2019 70 / 90

Page 343: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Distribution Counting

Sortiere Array (A[1], . . . ,A[n]) mit A[i] ∈ 0, . . .m − 1:

void counting ( ) int Zaehle[m]; int wo = 0;for (int i = 0; i < m; i++) // m Iterationen

Zaehle[i] = 0;for (int j = 1; j <= n; j++) // n Iterationen

Zaehle[A[j]]++;// Füge A[j] in die Zelle mit Position A[j] ein.

for (i = 0; i < m; i++) // n + m Iterationen for (j = 1; j <= Zaehle[i]; j++)

A[wo + j] = i;wo = wo + Zaehle[i];

Sortieren Theoretische Informatik 1 31. Oktober 2019 71 / 90

Page 344: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Distribution Counting

Sortiere Array (A[1], . . . ,A[n]) mit A[i] ∈ 0, . . .m − 1:

void counting ( )

int Zaehle[m]; int wo = 0;for (int i = 0; i < m; i++) // m Iterationen

Zaehle[i] = 0;for (int j = 1; j <= n; j++) // n Iterationen

Zaehle[A[j]]++;// Füge A[j] in die Zelle mit Position A[j] ein.

for (i = 0; i < m; i++) // n + m Iterationen for (j = 1; j <= Zaehle[i]; j++)

A[wo + j] = i;wo = wo + Zaehle[i];

Sortieren Theoretische Informatik 1 31. Oktober 2019 71 / 90

Page 345: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Distribution Counting

Sortiere Array (A[1], . . . ,A[n]) mit A[i] ∈ 0, . . .m − 1:

void counting ( ) int Zaehle[m]; int wo = 0;

for (int i = 0; i < m; i++) // m IterationenZaehle[i] = 0;

for (int j = 1; j <= n; j++) // n IterationenZaehle[A[j]]++;// Füge A[j] in die Zelle mit Position A[j] ein.

for (i = 0; i < m; i++) // n + m Iterationen for (j = 1; j <= Zaehle[i]; j++)

A[wo + j] = i;wo = wo + Zaehle[i];

Sortieren Theoretische Informatik 1 31. Oktober 2019 71 / 90

Page 346: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Distribution Counting

Sortiere Array (A[1], . . . ,A[n]) mit A[i] ∈ 0, . . .m − 1:

void counting ( ) int Zaehle[m]; int wo = 0;for (int i = 0; i < m; i++) // m Iterationen

Zaehle[i] = 0;

for (int j = 1; j <= n; j++) // n IterationenZaehle[A[j]]++;// Füge A[j] in die Zelle mit Position A[j] ein.

for (i = 0; i < m; i++) // n + m Iterationen for (j = 1; j <= Zaehle[i]; j++)

A[wo + j] = i;wo = wo + Zaehle[i];

Sortieren Theoretische Informatik 1 31. Oktober 2019 71 / 90

Page 347: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Distribution Counting

Sortiere Array (A[1], . . . ,A[n]) mit A[i] ∈ 0, . . .m − 1:

void counting ( ) int Zaehle[m]; int wo = 0;for (int i = 0; i < m; i++) // m Iterationen

Zaehle[i] = 0;for (int j = 1; j <= n; j++) // n Iterationen

Zaehle[A[j]]++;

// Füge A[j] in die Zelle mit Position A[j] ein.for (i = 0; i < m; i++) // n + m Iterationen for (j = 1; j <= Zaehle[i]; j++)

A[wo + j] = i;wo = wo + Zaehle[i];

Sortieren Theoretische Informatik 1 31. Oktober 2019 71 / 90

Page 348: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Distribution Counting

Sortiere Array (A[1], . . . ,A[n]) mit A[i] ∈ 0, . . .m − 1:

void counting ( ) int Zaehle[m]; int wo = 0;for (int i = 0; i < m; i++) // m Iterationen

Zaehle[i] = 0;for (int j = 1; j <= n; j++) // n Iterationen

Zaehle[A[j]]++;// Füge A[j] in die Zelle mit Position A[j] ein.

for (i = 0; i < m; i++) // n + m Iterationen for (j = 1; j <= Zaehle[i]; j++)

A[wo + j] = i;wo = wo + Zaehle[i];

Sortieren Theoretische Informatik 1 31. Oktober 2019 71 / 90

Page 349: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Distribution Counting

Sortiere Array (A[1], . . . ,A[n]) mit A[i] ∈ 0, . . .m − 1:

void counting ( ) int Zaehle[m]; int wo = 0;for (int i = 0; i < m; i++) // m Iterationen

Zaehle[i] = 0;for (int j = 1; j <= n; j++) // n Iterationen

Zaehle[A[j]]++;// Füge A[j] in die Zelle mit Position A[j] ein.

for (i = 0; i < m; i++) // n + m Iterationen for (j = 1; j <= Zaehle[i]; j++)

A[wo + j] = i;wo = wo + Zaehle[i];

Sortieren Theoretische Informatik 1 31. Oktober 2019 71 / 90

Page 350: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine Verallgemeinerung von Distribution Counting

Distribution CountingDistribution Counting sortiert n Zahlen aus der Menge 0, . . . ,m − 1in Zeit

O(n + m).

+ Extrem schnell, solange nur kleine Zahlen zu sortieren sind.- Völlig unpraktikabel, wenn die Zahlen etwa so groß wie n2 sein

können.

Kann Distribution Counting auf größere Zahlen effizient verallge-meinert werden?

Sortieren Theoretische Informatik 1 31. Oktober 2019 72 / 90

Page 351: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine Verallgemeinerung von Distribution Counting

Distribution CountingDistribution Counting sortiert n Zahlen aus der Menge 0, . . . ,m − 1in Zeit O(n + m).

+ Extrem schnell, solange nur kleine Zahlen zu sortieren sind.- Völlig unpraktikabel, wenn die Zahlen etwa so groß wie n2 sein

können.

Kann Distribution Counting auf größere Zahlen effizient verallge-meinert werden?

Sortieren Theoretische Informatik 1 31. Oktober 2019 72 / 90

Page 352: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine Verallgemeinerung von Distribution Counting

Distribution CountingDistribution Counting sortiert n Zahlen aus der Menge 0, . . . ,m − 1in Zeit O(n + m).

+ Extrem schnell, solange nur kleine Zahlen zu sortieren sind.

- Völlig unpraktikabel, wenn die Zahlen etwa so groß wie n2 seinkönnen.

Kann Distribution Counting auf größere Zahlen effizient verallge-meinert werden?

Sortieren Theoretische Informatik 1 31. Oktober 2019 72 / 90

Page 353: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine Verallgemeinerung von Distribution Counting

Distribution CountingDistribution Counting sortiert n Zahlen aus der Menge 0, . . . ,m − 1in Zeit O(n + m).

+ Extrem schnell, solange nur kleine Zahlen zu sortieren sind.- Völlig unpraktikabel, wenn die Zahlen etwa so groß wie n2 sein

können.

Kann Distribution Counting auf größere Zahlen effizient verallge-meinert werden?

Sortieren Theoretische Informatik 1 31. Oktober 2019 72 / 90

Page 354: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine Verallgemeinerung von Distribution Counting

Distribution CountingDistribution Counting sortiert n Zahlen aus der Menge 0, . . . ,m − 1in Zeit O(n + m).

+ Extrem schnell, solange nur kleine Zahlen zu sortieren sind.- Völlig unpraktikabel, wenn die Zahlen etwa so groß wie n2 sein

können.

Kann Distribution Counting auf größere Zahlen effizient verallge-meinert werden?

Sortieren Theoretische Informatik 1 31. Oktober 2019 72 / 90

Page 355: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit Integersortieren demogr.

Was vermuten Sie?In welcher optimalen worst-case Zeit kann man n ganze Zahlen ausdem Bereich 1, . . . ,n1.5 sortieren?

(1) T (n) = Θ(n1/1.5)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n1.5)

(5) T (n) = Θ(n2)

Auflösung: (2) T (n) = Θ(n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 73 / 90

Page 356: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit Integersortieren demogr.

Was vermuten Sie?In welcher optimalen worst-case Zeit kann man n ganze Zahlen ausdem Bereich 1, . . . ,n1.5 sortieren?

(1) T (n) = Θ(n1/1.5)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n1.5)

(5) T (n) = Θ(n2)

Auflösung:

(2) T (n) = Θ(n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 73 / 90

Page 357: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Laufzeit Integersortieren demogr.

Was vermuten Sie?In welcher optimalen worst-case Zeit kann man n ganze Zahlen ausdem Bereich 1, . . . ,n1.5 sortieren?

(1) T (n) = Θ(n1/1.5)

(2) T (n) = Θ(n)

(3) T (n) = Θ(n log n)

(4) T (n) = Θ(n1.5)

(5) T (n) = Θ(n2)

Auflösung: (2) T (n) = Θ(n)

Sortieren Theoretische Informatik 1 31. Oktober 2019 73 / 90

Page 358: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort

Sortieren Theoretische Informatik 1 31. Oktober 2019 74 / 90

Page 359: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort: Die Idee

Arbeite mit einer Basis b 6 n.

Berechne die b-äre Darstellung für jede Zahl.I Wende Distribution Counting an, um die Zahlen nach ihrer

niedrigstwertigen Ziffer zu sortieren.I Dann wende wieder Distribution Counting an, um die Zahlen nach

ihrer zweitniedrigstwertigen Ziffer zu sortieren.F Aber wie behalten wir die bisherigen Vergleiche (bei gleicher zweiter

Ziffer) in Erinnerung?

Sortieren Theoretische Informatik 1 31. Oktober 2019 75 / 90

Page 360: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort: Die Idee

Arbeite mit einer Basis b 6 n.Berechne die b-äre Darstellung für jede Zahl.

I Wende Distribution Counting an, um die Zahlen nach ihrerniedrigstwertigen Ziffer zu sortieren.

I Dann wende wieder Distribution Counting an, um die Zahlen nachihrer zweitniedrigstwertigen Ziffer zu sortieren.

F Aber wie behalten wir die bisherigen Vergleiche (bei gleicher zweiterZiffer) in Erinnerung?

Sortieren Theoretische Informatik 1 31. Oktober 2019 75 / 90

Page 361: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort: Die Idee

Arbeite mit einer Basis b 6 n.Berechne die b-äre Darstellung für jede Zahl.

I Wende Distribution Counting an, um die Zahlen nach ihrerniedrigstwertigen Ziffer zu sortieren.

I Dann wende wieder Distribution Counting an, um die Zahlen nachihrer zweitniedrigstwertigen Ziffer zu sortieren.

F Aber wie behalten wir die bisherigen Vergleiche (bei gleicher zweiterZiffer) in Erinnerung?

Sortieren Theoretische Informatik 1 31. Oktober 2019 75 / 90

Page 362: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort: Die Idee

Arbeite mit einer Basis b 6 n.Berechne die b-äre Darstellung für jede Zahl.

I Wende Distribution Counting an, um die Zahlen nach ihrerniedrigstwertigen Ziffer zu sortieren.

I Dann wende wieder Distribution Counting an, um die Zahlen nachihrer zweitniedrigstwertigen Ziffer zu sortieren.

F Aber wie behalten wir die bisherigen Vergleiche (bei gleicher zweiterZiffer) in Erinnerung?

Sortieren Theoretische Informatik 1 31. Oktober 2019 75 / 90

Page 363: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort: Die Idee

Arbeite mit einer Basis b 6 n.Berechne die b-äre Darstellung für jede Zahl.

I Wende Distribution Counting an, um die Zahlen nach ihrerniedrigstwertigen Ziffer zu sortieren.

I Dann wende wieder Distribution Counting an, um die Zahlen nachihrer zweitniedrigstwertigen Ziffer zu sortieren.

F Aber wie behalten wir die bisherigen Vergleiche (bei gleicher zweiterZiffer) in Erinnerung?

Sortieren Theoretische Informatik 1 31. Oktober 2019 75 / 90

Page 364: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort

1. Bestimme die b-äre Darstellung für alle Zahlen:

A[i] =L∑

k=0

zi,k · bk : zi,k ist die k te Ziffer von A[i].

2. for (k=0; k 6 L; k++)// Die Verteilphase beginnt. for (i=1; i 6 n, i++)

Füge A[i] in die Schlange mit Nummer zi,k ein.// Die Sammelphase beginnt. (Ist die Phase notwendig?)

for (s=0;s 6 b, s++)Entleere die Schlange mit Nummer s in das Array A.

- Bevor die k te Ziffer untersucht wird, möge A[i] vor A[j] stehen.- Dann steht A[i] vor A[j] nach Untersuchung der k ten Ziffer,

solange zi,k 6 zj,k . Warum? (Animation)

Sortieren Theoretische Informatik 1 31. Oktober 2019 76 / 90

Page 365: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort

1. Bestimme die b-äre Darstellung für alle Zahlen:

A[i] =L∑

k=0

zi,k · bk : zi,k ist die k te Ziffer von A[i].

2. for (k=0; k 6 L; k++)// Die Verteilphase beginnt. for (i=1; i 6 n, i++)

Füge A[i] in die Schlange mit Nummer zi,k ein.// Die Sammelphase beginnt. (Ist die Phase notwendig?)

for (s=0;s 6 b, s++)Entleere die Schlange mit Nummer s in das Array A.

- Bevor die k te Ziffer untersucht wird, möge A[i] vor A[j] stehen.- Dann steht A[i] vor A[j] nach Untersuchung der k ten Ziffer,

solange zi,k 6 zj,k . Warum? (Animation)

Sortieren Theoretische Informatik 1 31. Oktober 2019 76 / 90

Page 366: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort

1. Bestimme die b-äre Darstellung für alle Zahlen:

A[i] =L∑

k=0

zi,k · bk : zi,k ist die k te Ziffer von A[i].

2. for (k=0; k 6 L; k++)

// Die Verteilphase beginnt. for (i=1; i 6 n, i++)

Füge A[i] in die Schlange mit Nummer zi,k ein.// Die Sammelphase beginnt. (Ist die Phase notwendig?)

for (s=0;s 6 b, s++)Entleere die Schlange mit Nummer s in das Array A.

- Bevor die k te Ziffer untersucht wird, möge A[i] vor A[j] stehen.- Dann steht A[i] vor A[j] nach Untersuchung der k ten Ziffer,

solange zi,k 6 zj,k . Warum? (Animation)

Sortieren Theoretische Informatik 1 31. Oktober 2019 76 / 90

Page 367: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort

1. Bestimme die b-äre Darstellung für alle Zahlen:

A[i] =L∑

k=0

zi,k · bk : zi,k ist die k te Ziffer von A[i].

2. for (k=0; k 6 L; k++)// Die Verteilphase beginnt. for (i=1; i 6 n, i++)

Füge A[i] in die Schlange mit Nummer zi,k ein.

// Die Sammelphase beginnt. (Ist die Phase notwendig?)for (s=0;s 6 b, s++)

Entleere die Schlange mit Nummer s in das Array A.

- Bevor die k te Ziffer untersucht wird, möge A[i] vor A[j] stehen.- Dann steht A[i] vor A[j] nach Untersuchung der k ten Ziffer,

solange zi,k 6 zj,k . Warum? (Animation)

Sortieren Theoretische Informatik 1 31. Oktober 2019 76 / 90

Page 368: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort

1. Bestimme die b-äre Darstellung für alle Zahlen:

A[i] =L∑

k=0

zi,k · bk : zi,k ist die k te Ziffer von A[i].

2. for (k=0; k 6 L; k++)// Die Verteilphase beginnt. for (i=1; i 6 n, i++)

Füge A[i] in die Schlange mit Nummer zi,k ein.// Die Sammelphase beginnt. (Ist die Phase notwendig?)

for (s=0;s 6 b, s++)Entleere die Schlange mit Nummer s in das Array A.

- Bevor die k te Ziffer untersucht wird, möge A[i] vor A[j] stehen.- Dann steht A[i] vor A[j] nach Untersuchung der k ten Ziffer,

solange zi,k 6 zj,k . Warum? (Animation)

Sortieren Theoretische Informatik 1 31. Oktober 2019 76 / 90

Page 369: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort

1. Bestimme die b-äre Darstellung für alle Zahlen:

A[i] =L∑

k=0

zi,k · bk : zi,k ist die k te Ziffer von A[i].

2. for (k=0; k 6 L; k++)// Die Verteilphase beginnt. for (i=1; i 6 n, i++)

Füge A[i] in die Schlange mit Nummer zi,k ein.// Die Sammelphase beginnt. (Ist die Phase notwendig?)

for (s=0;s 6 b, s++)Entleere die Schlange mit Nummer s in das Array A.

- Bevor die k te Ziffer untersucht wird, möge A[i] vor A[j] stehen.- Dann steht A[i] vor A[j] nach Untersuchung der k ten Ziffer,

solange zi,k 6 zj,k . Warum? (Animation)

Sortieren Theoretische Informatik 1 31. Oktober 2019 76 / 90

Page 370: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort

1. Bestimme die b-äre Darstellung für alle Zahlen:

A[i] =L∑

k=0

zi,k · bk : zi,k ist die k te Ziffer von A[i].

2. for (k=0; k 6 L; k++)// Die Verteilphase beginnt. for (i=1; i 6 n, i++)

Füge A[i] in die Schlange mit Nummer zi,k ein.// Die Sammelphase beginnt. (Ist die Phase notwendig?)

for (s=0;s 6 b, s++)Entleere die Schlange mit Nummer s in das Array A.

- Bevor die k te Ziffer untersucht wird, möge A[i] vor A[j] stehen.- Dann steht A[i] vor A[j] nach Untersuchung der k ten Ziffer,

solange

zi,k 6 zj,k . Warum? (Animation)

Sortieren Theoretische Informatik 1 31. Oktober 2019 76 / 90

Page 371: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort

1. Bestimme die b-äre Darstellung für alle Zahlen:

A[i] =L∑

k=0

zi,k · bk : zi,k ist die k te Ziffer von A[i].

2. for (k=0; k 6 L; k++)// Die Verteilphase beginnt. for (i=1; i 6 n, i++)

Füge A[i] in die Schlange mit Nummer zi,k ein.// Die Sammelphase beginnt. (Ist die Phase notwendig?)

for (s=0;s 6 b, s++)Entleere die Schlange mit Nummer s in das Array A.

- Bevor die k te Ziffer untersucht wird, möge A[i] vor A[j] stehen.- Dann steht A[i] vor A[j] nach Untersuchung der k ten Ziffer,

solange zi,k 6 zj,k . Warum? (Animation)

Sortieren Theoretische Informatik 1 31. Oktober 2019 76 / 90

Page 372: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Stabilität

Ein Sortierverfahren heißt stabil, wenn es die Reihenfolge vonElementen mit gleichem Schlüssel bewahrt.

Wird z.B. eine nach Vornamen geordnete Namensliste stabil nachden Nachnamen sortiert, so erhält man eine Liste, in derPersonen mit gleichem Nachnamen nach Vornamen sortiert sind.

Ist Radixsort ein stabiles Sortierverfahren?Welche Basis b sollte man wählen?Warum führt b < n auf keine wesentlich bessere Laufzeit alsb = n?

Sortieren Theoretische Informatik 1 31. Oktober 2019 77 / 90

Page 373: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Stabilität

Ein Sortierverfahren heißt stabil, wenn es die Reihenfolge vonElementen mit gleichem Schlüssel bewahrt.

Wird z.B. eine nach Vornamen geordnete Namensliste stabil nachden Nachnamen sortiert, so erhält man eine Liste, in derPersonen mit gleichem Nachnamen nach Vornamen sortiert sind.

Ist Radixsort ein stabiles Sortierverfahren?

Welche Basis b sollte man wählen?Warum führt b < n auf keine wesentlich bessere Laufzeit alsb = n?

Sortieren Theoretische Informatik 1 31. Oktober 2019 77 / 90

Page 374: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Stabilität

Ein Sortierverfahren heißt stabil, wenn es die Reihenfolge vonElementen mit gleichem Schlüssel bewahrt.

Wird z.B. eine nach Vornamen geordnete Namensliste stabil nachden Nachnamen sortiert, so erhält man eine Liste, in derPersonen mit gleichem Nachnamen nach Vornamen sortiert sind.

Ist Radixsort ein stabiles Sortierverfahren?Welche Basis b sollte man wählen?Warum führt b < n auf keine wesentlich bessere Laufzeit alsb = n?

Sortieren Theoretische Informatik 1 31. Oktober 2019 77 / 90

Page 375: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Radixssort & Wahl der Basis

- Radixsort sortiert n Schlüssel aus der Menge 0, . . . ,bL − 1 inZeit O(L · (n + b)).

- Welche Basis b sollte gewählt werden? Wähle b = n.I Jede Verteil- und Sammelphase läuft in Zeit O(n).I Wenn alle n Schlüssel natürliche Zahlen kleiner als nL sind, dann

sortiert Radixsort in Zeit O(n · L).I Selbst n Schlüssel, die nur durch n2 beschränkt sind, werden in

Linearzeit sortiert!

- Radixsort ist ein stabiles Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 78 / 90

Page 376: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Radixssort & Wahl der Basis

- Radixsort sortiert n Schlüssel aus der Menge 0, . . . ,bL − 1 inZeit O(L · (n + b)).

- Welche Basis b sollte gewählt werden?

Wähle b = n.I Jede Verteil- und Sammelphase läuft in Zeit O(n).I Wenn alle n Schlüssel natürliche Zahlen kleiner als nL sind, dann

sortiert Radixsort in Zeit O(n · L).I Selbst n Schlüssel, die nur durch n2 beschränkt sind, werden in

Linearzeit sortiert!

- Radixsort ist ein stabiles Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 78 / 90

Page 377: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Radixssort & Wahl der Basis

- Radixsort sortiert n Schlüssel aus der Menge 0, . . . ,bL − 1 inZeit O(L · (n + b)).

- Welche Basis b sollte gewählt werden? Wähle b = n.I Jede Verteil- und Sammelphase läuft in Zeit O(n).

I Wenn alle n Schlüssel natürliche Zahlen kleiner als nL sind, dannsortiert Radixsort in Zeit O(n · L).

I Selbst n Schlüssel, die nur durch n2 beschränkt sind, werden inLinearzeit sortiert!

- Radixsort ist ein stabiles Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 78 / 90

Page 378: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Radixssort & Wahl der Basis

- Radixsort sortiert n Schlüssel aus der Menge 0, . . . ,bL − 1 inZeit O(L · (n + b)).

- Welche Basis b sollte gewählt werden? Wähle b = n.I Jede Verteil- und Sammelphase läuft in Zeit O(n).I Wenn alle n Schlüssel natürliche Zahlen kleiner als nL sind, dann

sortiert Radixsort in Zeit O(n · L).I Selbst n Schlüssel, die nur durch n2 beschränkt sind, werden in

Linearzeit sortiert!

- Radixsort ist ein stabiles Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 78 / 90

Page 379: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Radixssort & Wahl der Basis

- Radixsort sortiert n Schlüssel aus der Menge 0, . . . ,bL − 1 inZeit O(L · (n + b)).

- Welche Basis b sollte gewählt werden? Wähle b = n.I Jede Verteil- und Sammelphase läuft in Zeit O(n).I Wenn alle n Schlüssel natürliche Zahlen kleiner als nL sind, dann

sortiert Radixsort in Zeit O(n · L).I Selbst n Schlüssel, die nur durch n2 beschränkt sind, werden in

Linearzeit sortiert!

- Radixsort ist ein stabiles Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 78 / 90

Page 380: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eigenschaften von Radixssort & Wahl der Basis

- Radixsort sortiert n Schlüssel aus der Menge 0, . . . ,bL − 1 inZeit O(L · (n + b)).

- Welche Basis b sollte gewählt werden? Wähle b = n.I Jede Verteil- und Sammelphase läuft in Zeit O(n).I Wenn alle n Schlüssel natürliche Zahlen kleiner als nL sind, dann

sortiert Radixsort in Zeit O(n · L).I Selbst n Schlüssel, die nur durch n2 beschränkt sind, werden in

Linearzeit sortiert!

- Radixsort ist ein stabiles Sortierverfahren.

Sortieren Theoretische Informatik 1 31. Oktober 2019 78 / 90

Page 381: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort demogr.

Wie sollte die Basis b gewählt werden, wenn n Zahlen aus demBereich 0, . . . ,

√n − 1 sortiert werden sollen?

(1) b = 2.(2) b = log n.(3) b =

√n.

(4) b = n.(5) b = n2.(6) ist egal.

Auflösung: (3) b =√

n

Sortieren Theoretische Informatik 1 31. Oktober 2019 79 / 90

Page 382: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort demogr.

Wie sollte die Basis b gewählt werden, wenn n Zahlen aus demBereich 0, . . . ,

√n − 1 sortiert werden sollen?

(1) b = 2.(2) b = log n.(3) b =

√n.

(4) b = n.(5) b = n2.(6) ist egal.

Auflösung:

(3) b =√

n

Sortieren Theoretische Informatik 1 31. Oktober 2019 79 / 90

Page 383: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Radixsort demogr.

Wie sollte die Basis b gewählt werden, wenn n Zahlen aus demBereich 0, . . . ,

√n − 1 sortiert werden sollen?

(1) b = 2.(2) b = log n.(3) b =

√n.

(4) b = n.(5) b = n2.(6) ist egal.

Auflösung: (3) b =√

n

Sortieren Theoretische Informatik 1 31. Oktober 2019 79 / 90

Page 384: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort

Sortieren Theoretische Informatik 1 31. Oktober 2019 80 / 90

Page 385: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Message Passing Interface (MPI)

p Rechner sind durch ein Kommunikationsnetzwerk miteinanderverbunden. Zu den (MPI-)Kommunikationsfunktionen gehören:

I Send und Receive: Point-to-Point Kommunikation zwischen einemSender und einem Empfänger.

I Broadcast: Ein Sender schickt eine Nachricht an alle Rechner.I und personalisierter Broadcast: Ein Sender schickt individualisierte

Nachrichten an alle Rechner.

Sortieren Theoretische Informatik 1 31. Oktober 2019 81 / 90

Page 386: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Message Passing Interface (MPI)

p Rechner sind durch ein Kommunikationsnetzwerk miteinanderverbunden. Zu den (MPI-)Kommunikationsfunktionen gehören:

I Send und Receive: Point-to-Point Kommunikation zwischen einemSender und einem Empfänger.

I Broadcast: Ein Sender schickt eine Nachricht an alle Rechner.I und personalisierter Broadcast: Ein Sender schickt individualisierte

Nachrichten an alle Rechner.

Sortieren Theoretische Informatik 1 31. Oktober 2019 81 / 90

Page 387: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Paralleles Sortieren

Was ist zu tun?

Eingabe: Der i te Rechner erhält das i te Intervall der n Schlüs-sel.

Aufgabe: Die Rechner arbeiten parallel, um alle Schlüssel zusortieren. Der i te Rechner soll das i te Intervall dersortierten Folge ausgeben.

Sortieren Theoretische Informatik 1 31. Oktober 2019 82 / 90

Page 388: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine parallele Variante von Quicksort

Quicksort ist schon fast ein paralleler Algorithmus:I die Folge der Schlüssel, die kleiner als das Pivotelement sind, und

die Folge der Schlüssel, die größer als das Pivotelement sind,können unabhängig voneinander sortiert werden.

I Allerdings können wir nur zwei Rechner beschäftigen.

Stattdessen, wähle ein „Sample“ S von p − 1 Pivotelementen.I Jeder Rechner partitioniert seine Schlüssel gemäß S in p Intervalle,I verschickt p − 1 Intervalle mit personalisiertem BroadcastI und sortiert die erhaltenen und das verbliebene Intervall.

Berechnung der Stichprobe S:I Jeder Rechner sortiert seine n

p Schlüssel und sendet die pSchlüssel in den Positionen i · n

p2 (für i = 0, . . .p − 1) an Rechner 1.I Rechner 1 sortiert die p2 erhaltenen Schlüssel und „broadcastet“

die Schlüssel in den Positionen i · p (für i = 1, . . . ,p − 1) alsStichprobe S.

I Wieviele Schlüssel befinden sich zwischen zweiaufeinanderfolgenden Schlüsseln der Stichprobe?

Sortieren Theoretische Informatik 1 31. Oktober 2019 83 / 90

Page 389: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine parallele Variante von Quicksort

Quicksort ist schon fast ein paralleler Algorithmus:I die Folge der Schlüssel, die kleiner als das Pivotelement sind, und

die Folge der Schlüssel, die größer als das Pivotelement sind,können unabhängig voneinander sortiert werden.

I Allerdings können wir nur zwei Rechner beschäftigen.Stattdessen, wähle ein „Sample“ S von p − 1 Pivotelementen.

I Jeder Rechner partitioniert seine Schlüssel gemäß S in p Intervalle,I verschickt p − 1 Intervalle mit personalisiertem BroadcastI und sortiert die erhaltenen und das verbliebene Intervall.

Berechnung der Stichprobe S:I Jeder Rechner sortiert seine n

p Schlüssel und sendet die pSchlüssel in den Positionen i · n

p2 (für i = 0, . . .p − 1) an Rechner 1.I Rechner 1 sortiert die p2 erhaltenen Schlüssel und „broadcastet“

die Schlüssel in den Positionen i · p (für i = 1, . . . ,p − 1) alsStichprobe S.

I Wieviele Schlüssel befinden sich zwischen zweiaufeinanderfolgenden Schlüsseln der Stichprobe?

Sortieren Theoretische Informatik 1 31. Oktober 2019 83 / 90

Page 390: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine parallele Variante von Quicksort

Quicksort ist schon fast ein paralleler Algorithmus:I die Folge der Schlüssel, die kleiner als das Pivotelement sind, und

die Folge der Schlüssel, die größer als das Pivotelement sind,können unabhängig voneinander sortiert werden.

I Allerdings können wir nur zwei Rechner beschäftigen.Stattdessen, wähle ein „Sample“ S von p − 1 Pivotelementen.

I Jeder Rechner partitioniert seine Schlüssel gemäß S in p Intervalle,I verschickt p − 1 Intervalle mit personalisiertem BroadcastI und sortiert die erhaltenen und das verbliebene Intervall.

Berechnung der Stichprobe S:I Jeder Rechner sortiert seine n

p Schlüssel und sendet die pSchlüssel in den Positionen

i · np2 (für i = 0, . . .p − 1) an Rechner 1.

I Rechner 1 sortiert die p2 erhaltenen Schlüssel und „broadcastet“die Schlüssel in den Positionen i · p (für i = 1, . . . ,p − 1) alsStichprobe S.

I Wieviele Schlüssel befinden sich zwischen zweiaufeinanderfolgenden Schlüsseln der Stichprobe?

Sortieren Theoretische Informatik 1 31. Oktober 2019 83 / 90

Page 391: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine parallele Variante von Quicksort

Quicksort ist schon fast ein paralleler Algorithmus:I die Folge der Schlüssel, die kleiner als das Pivotelement sind, und

die Folge der Schlüssel, die größer als das Pivotelement sind,können unabhängig voneinander sortiert werden.

I Allerdings können wir nur zwei Rechner beschäftigen.Stattdessen, wähle ein „Sample“ S von p − 1 Pivotelementen.

I Jeder Rechner partitioniert seine Schlüssel gemäß S in p Intervalle,I verschickt p − 1 Intervalle mit personalisiertem BroadcastI und sortiert die erhaltenen und das verbliebene Intervall.

Berechnung der Stichprobe S:I Jeder Rechner sortiert seine n

p Schlüssel und sendet die pSchlüssel in den Positionen i · n

p2 (für i = 0, . . .p − 1) an Rechner 1.

I Rechner 1 sortiert die p2 erhaltenen Schlüssel und „broadcastet“die Schlüssel in den Positionen i · p (für i = 1, . . . ,p − 1) alsStichprobe S.

I Wieviele Schlüssel befinden sich zwischen zweiaufeinanderfolgenden Schlüsseln der Stichprobe?

Sortieren Theoretische Informatik 1 31. Oktober 2019 83 / 90

Page 392: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine parallele Variante von Quicksort

Quicksort ist schon fast ein paralleler Algorithmus:I die Folge der Schlüssel, die kleiner als das Pivotelement sind, und

die Folge der Schlüssel, die größer als das Pivotelement sind,können unabhängig voneinander sortiert werden.

I Allerdings können wir nur zwei Rechner beschäftigen.Stattdessen, wähle ein „Sample“ S von p − 1 Pivotelementen.

I Jeder Rechner partitioniert seine Schlüssel gemäß S in p Intervalle,I verschickt p − 1 Intervalle mit personalisiertem BroadcastI und sortiert die erhaltenen und das verbliebene Intervall.

Berechnung der Stichprobe S:I Jeder Rechner sortiert seine n

p Schlüssel und sendet die pSchlüssel in den Positionen i · n

p2 (für i = 0, . . .p − 1) an Rechner 1.I Rechner 1 sortiert die p2 erhaltenen Schlüssel und „broadcastet“

die Schlüssel in den Positionen

i · p (für i = 1, . . . ,p − 1) alsStichprobe S.

I Wieviele Schlüssel befinden sich zwischen zweiaufeinanderfolgenden Schlüsseln der Stichprobe?

Sortieren Theoretische Informatik 1 31. Oktober 2019 83 / 90

Page 393: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine parallele Variante von Quicksort

Quicksort ist schon fast ein paralleler Algorithmus:I die Folge der Schlüssel, die kleiner als das Pivotelement sind, und

die Folge der Schlüssel, die größer als das Pivotelement sind,können unabhängig voneinander sortiert werden.

I Allerdings können wir nur zwei Rechner beschäftigen.Stattdessen, wähle ein „Sample“ S von p − 1 Pivotelementen.

I Jeder Rechner partitioniert seine Schlüssel gemäß S in p Intervalle,I verschickt p − 1 Intervalle mit personalisiertem BroadcastI und sortiert die erhaltenen und das verbliebene Intervall.

Berechnung der Stichprobe S:I Jeder Rechner sortiert seine n

p Schlüssel und sendet die pSchlüssel in den Positionen i · n

p2 (für i = 0, . . .p − 1) an Rechner 1.I Rechner 1 sortiert die p2 erhaltenen Schlüssel und „broadcastet“

die Schlüssel in den Positionen i · p (für i = 1, . . . ,p − 1) alsStichprobe S.

I Wieviele Schlüssel befinden sich zwischen zweiaufeinanderfolgenden Schlüsseln der Stichprobe?

Sortieren Theoretische Informatik 1 31. Oktober 2019 83 / 90

Page 394: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Eine parallele Variante von Quicksort

Quicksort ist schon fast ein paralleler Algorithmus:I die Folge der Schlüssel, die kleiner als das Pivotelement sind, und

die Folge der Schlüssel, die größer als das Pivotelement sind,können unabhängig voneinander sortiert werden.

I Allerdings können wir nur zwei Rechner beschäftigen.Stattdessen, wähle ein „Sample“ S von p − 1 Pivotelementen.

I Jeder Rechner partitioniert seine Schlüssel gemäß S in p Intervalle,I verschickt p − 1 Intervalle mit personalisiertem BroadcastI und sortiert die erhaltenen und das verbliebene Intervall.

Berechnung der Stichprobe S:I Jeder Rechner sortiert seine n

p Schlüssel und sendet die pSchlüssel in den Positionen i · n

p2 (für i = 0, . . .p − 1) an Rechner 1.I Rechner 1 sortiert die p2 erhaltenen Schlüssel und „broadcastet“

die Schlüssel in den Positionen i · p (für i = 1, . . . ,p − 1) alsStichprobe S.

I Wieviele Schlüssel befinden sich zwischen zweiaufeinanderfolgenden Schlüsseln der Stichprobe?

Sortieren Theoretische Informatik 1 31. Oktober 2019 83 / 90

Page 395: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Paralleles Sortieren demogr.

Wieviele Schlüssel des Gesamtproblems befinden sich maximalzwischen zwei aufeinanderfolgenden Schlüsseln der Stichprobe?

(1) Θ(p)

(2) Θ (n/p)

(3) Θ (n/p · log n)

(4) Θ(n)

(5) Ohje . . .

Auflösung: (2) Θ (n/p)→ Übungsaufgabe im Skript

Sortieren Theoretische Informatik 1 31. Oktober 2019 84 / 90

Page 396: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Paralleles Sortieren demogr.

Wieviele Schlüssel des Gesamtproblems befinden sich maximalzwischen zwei aufeinanderfolgenden Schlüsseln der Stichprobe?

(1) Θ(p)

(2) Θ (n/p)

(3) Θ (n/p · log n)

(4) Θ(n)

(5) Ohje . . .Auflösung:

(2) Θ (n/p)→ Übungsaufgabe im Skript

Sortieren Theoretische Informatik 1 31. Oktober 2019 84 / 90

Page 397: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Paralleles Sortieren demogr.

Wieviele Schlüssel des Gesamtproblems befinden sich maximalzwischen zwei aufeinanderfolgenden Schlüsseln der Stichprobe?

(1) Θ(p)

(2) Θ (n/p)

(3) Θ (n/p · log n)

(4) Θ(n)

(5) Ohje . . .Auflösung: (2) Θ (n/p)→ Übungsaufgabe im Skript

Sortieren Theoretische Informatik 1 31. Oktober 2019 84 / 90

Page 398: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort

(1) Jeder Rechner sortiert seine np Schlüsssel und sendet eine

Stichprobe der Größe p an Rechner 1. // Zeit

O (n/p log2 n/p).

(2) Rechner 1 sortiert die erhaltenen (p − 1) · p Schlüssel zusammenmit den eigenen p Schlüsseln und versendet eine endgültigeStichprobe S der Größe p − 1 per Broadcast. // Zeit O(p2 log2 p2).

(3) Jeder Rechner partitioniert seine Schlüssel in die p durch Sdefinierten Intervalle I1 =]−∞, s1[, I2 = [s1, s2[, . . . , Ip = [sp−1,∞[.Dann werden die Schlüssel aus dem Intervall Ij an Rechner j mitpersonalisiertem Broadcast weitergeleitet. // Zeit O (n/p · log2 p).

(4) Jeder Rechner mischt seine p erhaltenen sortierten Folgen.// Zeit ?

Sortieren Theoretische Informatik 1 31. Oktober 2019 85 / 90

Page 399: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort

(1) Jeder Rechner sortiert seine np Schlüsssel und sendet eine

Stichprobe der Größe p an Rechner 1. // Zeit O (n/p log2 n/p).

(2) Rechner 1 sortiert die erhaltenen (p − 1) · p Schlüssel zusammenmit den eigenen p Schlüsseln und versendet eine endgültigeStichprobe S der Größe p − 1 per Broadcast. // Zeit O(p2 log2 p2).

(3) Jeder Rechner partitioniert seine Schlüssel in die p durch Sdefinierten Intervalle I1 =]−∞, s1[, I2 = [s1, s2[, . . . , Ip = [sp−1,∞[.Dann werden die Schlüssel aus dem Intervall Ij an Rechner j mitpersonalisiertem Broadcast weitergeleitet. // Zeit O (n/p · log2 p).

(4) Jeder Rechner mischt seine p erhaltenen sortierten Folgen.// Zeit ?

Sortieren Theoretische Informatik 1 31. Oktober 2019 85 / 90

Page 400: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort

(1) Jeder Rechner sortiert seine np Schlüsssel und sendet eine

Stichprobe der Größe p an Rechner 1. // Zeit O (n/p log2 n/p).

(2) Rechner 1 sortiert die erhaltenen (p − 1) · p Schlüssel zusammenmit den eigenen p Schlüsseln und versendet eine endgültigeStichprobe S der Größe p − 1 per Broadcast. // Zeit

O(p2 log2 p2).

(3) Jeder Rechner partitioniert seine Schlüssel in die p durch Sdefinierten Intervalle I1 =]−∞, s1[, I2 = [s1, s2[, . . . , Ip = [sp−1,∞[.Dann werden die Schlüssel aus dem Intervall Ij an Rechner j mitpersonalisiertem Broadcast weitergeleitet. // Zeit O (n/p · log2 p).

(4) Jeder Rechner mischt seine p erhaltenen sortierten Folgen.// Zeit ?

Sortieren Theoretische Informatik 1 31. Oktober 2019 85 / 90

Page 401: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort

(1) Jeder Rechner sortiert seine np Schlüsssel und sendet eine

Stichprobe der Größe p an Rechner 1. // Zeit O (n/p log2 n/p).

(2) Rechner 1 sortiert die erhaltenen (p − 1) · p Schlüssel zusammenmit den eigenen p Schlüsseln und versendet eine endgültigeStichprobe S der Größe p − 1 per Broadcast. // Zeit O(p2 log2 p2).

(3) Jeder Rechner partitioniert seine Schlüssel in die p durch Sdefinierten Intervalle I1 =]−∞, s1[, I2 = [s1, s2[, . . . , Ip = [sp−1,∞[.Dann werden die Schlüssel aus dem Intervall Ij an Rechner j mitpersonalisiertem Broadcast weitergeleitet. // Zeit O (n/p · log2 p).

(4) Jeder Rechner mischt seine p erhaltenen sortierten Folgen.// Zeit ?

Sortieren Theoretische Informatik 1 31. Oktober 2019 85 / 90

Page 402: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort

(1) Jeder Rechner sortiert seine np Schlüsssel und sendet eine

Stichprobe der Größe p an Rechner 1. // Zeit O (n/p log2 n/p).

(2) Rechner 1 sortiert die erhaltenen (p − 1) · p Schlüssel zusammenmit den eigenen p Schlüsseln und versendet eine endgültigeStichprobe S der Größe p − 1 per Broadcast. // Zeit O(p2 log2 p2).

(3) Jeder Rechner partitioniert seine Schlüssel in die p durch Sdefinierten Intervalle I1 =]−∞, s1[, I2 = [s1, s2[, . . . , Ip = [sp−1,∞[.Dann werden die Schlüssel aus dem Intervall Ij an Rechner j mitpersonalisiertem Broadcast weitergeleitet. // Zeit

O (n/p · log2 p).

(4) Jeder Rechner mischt seine p erhaltenen sortierten Folgen.// Zeit ?

Sortieren Theoretische Informatik 1 31. Oktober 2019 85 / 90

Page 403: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort

(1) Jeder Rechner sortiert seine np Schlüsssel und sendet eine

Stichprobe der Größe p an Rechner 1. // Zeit O (n/p log2 n/p).

(2) Rechner 1 sortiert die erhaltenen (p − 1) · p Schlüssel zusammenmit den eigenen p Schlüsseln und versendet eine endgültigeStichprobe S der Größe p − 1 per Broadcast. // Zeit O(p2 log2 p2).

(3) Jeder Rechner partitioniert seine Schlüssel in die p durch Sdefinierten Intervalle I1 =]−∞, s1[, I2 = [s1, s2[, . . . , Ip = [sp−1,∞[.Dann werden die Schlüssel aus dem Intervall Ij an Rechner j mitpersonalisiertem Broadcast weitergeleitet. // Zeit O (n/p · log2 p).

(4) Jeder Rechner mischt seine p erhaltenen sortierten Folgen.// Zeit ?

Sortieren Theoretische Informatik 1 31. Oktober 2019 85 / 90

Page 404: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort

(1) Jeder Rechner sortiert seine np Schlüsssel und sendet eine

Stichprobe der Größe p an Rechner 1. // Zeit O (n/p log2 n/p).

(2) Rechner 1 sortiert die erhaltenen (p − 1) · p Schlüssel zusammenmit den eigenen p Schlüsseln und versendet eine endgültigeStichprobe S der Größe p − 1 per Broadcast. // Zeit O(p2 log2 p2).

(3) Jeder Rechner partitioniert seine Schlüssel in die p durch Sdefinierten Intervalle I1 =]−∞, s1[, I2 = [s1, s2[, . . . , Ip = [sp−1,∞[.Dann werden die Schlüssel aus dem Intervall Ij an Rechner j mitpersonalisiertem Broadcast weitergeleitet. // Zeit O (n/p · log2 p).

(4) Jeder Rechner mischt seine p erhaltenen sortierten Folgen.// Zeit ?

Sortieren Theoretische Informatik 1 31. Oktober 2019 85 / 90

Page 405: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort: Die Laufzeit

Wenn man die Kommunikationskosten NICHT zählt, ist die Zeit durch

np

log2np

+

p2 log2 p2 +np· log2 p+?

6 2np

log2 n + p2 log2 p2+?

asymptotisch beschränkt. Wenn p2 6 np , also wenn p 6 n1/3, dann ist

die Laufzeit höchstens

O(

np

log2 n+?

).

Eine perfekte Parallelisierung:Die sequentielle Laufzeit wird durch den Einsatz von p Prozessorenum den Faktor Ω(p) gesenkt – falls ? = O

(np log2 n

).

Sortieren Theoretische Informatik 1 31. Oktober 2019 86 / 90

Page 406: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort: Die Laufzeit

Wenn man die Kommunikationskosten NICHT zählt, ist die Zeit durch

np

log2np

+ p2 log2 p2 +

np· log2 p+?

6 2np

log2 n + p2 log2 p2+?

asymptotisch beschränkt. Wenn p2 6 np , also wenn p 6 n1/3, dann ist

die Laufzeit höchstens

O(

np

log2 n+?

).

Eine perfekte Parallelisierung:Die sequentielle Laufzeit wird durch den Einsatz von p Prozessorenum den Faktor Ω(p) gesenkt – falls ? = O

(np log2 n

).

Sortieren Theoretische Informatik 1 31. Oktober 2019 86 / 90

Page 407: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort: Die Laufzeit

Wenn man die Kommunikationskosten NICHT zählt, ist die Zeit durch

np

log2np

+ p2 log2 p2 +np· log2 p+?

6 2np

log2 n + p2 log2 p2+?

asymptotisch beschränkt. Wenn p2 6 np , also wenn p 6 n1/3, dann ist

die Laufzeit höchstens

O(

np

log2 n+?

).

Eine perfekte Parallelisierung:Die sequentielle Laufzeit wird durch den Einsatz von p Prozessorenum den Faktor Ω(p) gesenkt – falls ? = O

(np log2 n

).

Sortieren Theoretische Informatik 1 31. Oktober 2019 86 / 90

Page 408: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort: Die Laufzeit

Wenn man die Kommunikationskosten NICHT zählt, ist die Zeit durch

np

log2np

+ p2 log2 p2 +np· log2 p+?

6 2np

log2 n +

p2 log2 p2+?

asymptotisch beschränkt. Wenn p2 6 np , also wenn p 6 n1/3, dann ist

die Laufzeit höchstens

O(

np

log2 n+?

).

Eine perfekte Parallelisierung:Die sequentielle Laufzeit wird durch den Einsatz von p Prozessorenum den Faktor Ω(p) gesenkt – falls ? = O

(np log2 n

).

Sortieren Theoretische Informatik 1 31. Oktober 2019 86 / 90

Page 409: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort: Die Laufzeit

Wenn man die Kommunikationskosten NICHT zählt, ist die Zeit durch

np

log2np

+ p2 log2 p2 +np· log2 p+?

6 2np

log2 n + p2 log2 p2+?

asymptotisch beschränkt.

Wenn p2 6 np , also wenn p 6 n1/3, dann ist

die Laufzeit höchstens

O(

np

log2 n+?

).

Eine perfekte Parallelisierung:Die sequentielle Laufzeit wird durch den Einsatz von p Prozessorenum den Faktor Ω(p) gesenkt – falls ? = O

(np log2 n

).

Sortieren Theoretische Informatik 1 31. Oktober 2019 86 / 90

Page 410: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort: Die Laufzeit

Wenn man die Kommunikationskosten NICHT zählt, ist die Zeit durch

np

log2np

+ p2 log2 p2 +np· log2 p+?

6 2np

log2 n + p2 log2 p2+?

asymptotisch beschränkt. Wenn p2 6 np , also wenn p 6 n1/3,

dann istdie Laufzeit höchstens

O(

np

log2 n+?

).

Eine perfekte Parallelisierung:Die sequentielle Laufzeit wird durch den Einsatz von p Prozessorenum den Faktor Ω(p) gesenkt – falls ? = O

(np log2 n

).

Sortieren Theoretische Informatik 1 31. Oktober 2019 86 / 90

Page 411: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort: Die Laufzeit

Wenn man die Kommunikationskosten NICHT zählt, ist die Zeit durch

np

log2np

+ p2 log2 p2 +np· log2 p+?

6 2np

log2 n + p2 log2 p2+?

asymptotisch beschränkt. Wenn p2 6 np , also wenn p 6 n1/3, dann ist

die Laufzeit höchstens

O(

np

log2 n+?

).

Eine perfekte Parallelisierung:Die sequentielle Laufzeit wird durch den Einsatz von p Prozessorenum den Faktor Ω(p) gesenkt – falls ? = O

(np log2 n

).

Sortieren Theoretische Informatik 1 31. Oktober 2019 86 / 90

Page 412: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sample Sort: Die Laufzeit

Wenn man die Kommunikationskosten NICHT zählt, ist die Zeit durch

np

log2np

+ p2 log2 p2 +np· log2 p+?

6 2np

log2 n + p2 log2 p2+?

asymptotisch beschränkt. Wenn p2 6 np , also wenn p 6 n1/3, dann ist

die Laufzeit höchstens

O(

np

log2 n+?

).

Eine perfekte Parallelisierung:Die sequentielle Laufzeit wird durch den Einsatz von p Prozessorenum den Faktor Ω(p) gesenkt – falls ? = O

(np log2 n

).

Sortieren Theoretische Informatik 1 31. Oktober 2019 86 / 90

Page 413: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortieren: Zusammenfassung

Quicksort:I Ein schnelles in place Sortierverfahren. Quicksort ist ideal, wenn

alle Daten in den Hauptspeicher passen.

I Die zufällige Pivotwahl garantiert, dass jede Folge von n Zahlen inerwarteter Zeit O(n · log2 n) sortiert wird.

I Eine Quicksort-Variante löst das Auswahlproblem in Zeit O(n).Mergesort:

I Sortiert jede Folge von n Zahlen in worst case Zeit O(n · log2 n).I Eine nicht-rekursive Variante sortiert n auf einem Externspeicher

gespeicherte Zahlen mit höchstens O( nB log M

B

nM )

Speicherzugriffen, solange B Zahlen in einem „Schwung“ vomExternspeicher in den Hauptspeicher der Größe M gebrachtwerden können.

Jedes vergleichsorientierte Sortierverfahren benötigt mindestensΩ(n · log2 n) Vergleiche, aberRadixsort sortiert n Zahlen aus der Menge 0, . . . ,nL − 1 in ZeitO(n · L) ohne irgendeinen Vergleich auszuführen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 87 / 90

Page 414: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortieren: Zusammenfassung

Quicksort:I Ein schnelles in place Sortierverfahren. Quicksort ist ideal, wenn

alle Daten in den Hauptspeicher passen.I Die zufällige Pivotwahl garantiert, dass jede Folge von n Zahlen in

erwarteter Zeit O(n · log2 n) sortiert wird.

I Eine Quicksort-Variante löst das Auswahlproblem in Zeit O(n).Mergesort:

I Sortiert jede Folge von n Zahlen in worst case Zeit O(n · log2 n).I Eine nicht-rekursive Variante sortiert n auf einem Externspeicher

gespeicherte Zahlen mit höchstens O( nB log M

B

nM )

Speicherzugriffen, solange B Zahlen in einem „Schwung“ vomExternspeicher in den Hauptspeicher der Größe M gebrachtwerden können.

Jedes vergleichsorientierte Sortierverfahren benötigt mindestensΩ(n · log2 n) Vergleiche, aberRadixsort sortiert n Zahlen aus der Menge 0, . . . ,nL − 1 in ZeitO(n · L) ohne irgendeinen Vergleich auszuführen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 87 / 90

Page 415: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortieren: Zusammenfassung

Quicksort:I Ein schnelles in place Sortierverfahren. Quicksort ist ideal, wenn

alle Daten in den Hauptspeicher passen.I Die zufällige Pivotwahl garantiert, dass jede Folge von n Zahlen in

erwarteter Zeit O(n · log2 n) sortiert wird.I Eine Quicksort-Variante löst das Auswahlproblem in Zeit O(n).

Mergesort:I Sortiert jede Folge von n Zahlen in worst case Zeit O(n · log2 n).I Eine nicht-rekursive Variante sortiert n auf einem Externspeicher

gespeicherte Zahlen mit höchstens O( nB log M

B

nM )

Speicherzugriffen, solange B Zahlen in einem „Schwung“ vomExternspeicher in den Hauptspeicher der Größe M gebrachtwerden können.

Jedes vergleichsorientierte Sortierverfahren benötigt mindestensΩ(n · log2 n) Vergleiche, aberRadixsort sortiert n Zahlen aus der Menge 0, . . . ,nL − 1 in ZeitO(n · L) ohne irgendeinen Vergleich auszuführen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 87 / 90

Page 416: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortieren: Zusammenfassung

Quicksort:I Ein schnelles in place Sortierverfahren. Quicksort ist ideal, wenn

alle Daten in den Hauptspeicher passen.I Die zufällige Pivotwahl garantiert, dass jede Folge von n Zahlen in

erwarteter Zeit O(n · log2 n) sortiert wird.I Eine Quicksort-Variante löst das Auswahlproblem in Zeit O(n).

Mergesort:I Sortiert jede Folge von n Zahlen in worst case Zeit O(n · log2 n).

I Eine nicht-rekursive Variante sortiert n auf einem Externspeichergespeicherte Zahlen mit höchstens O( n

B log MB

nM )

Speicherzugriffen, solange B Zahlen in einem „Schwung“ vomExternspeicher in den Hauptspeicher der Größe M gebrachtwerden können.

Jedes vergleichsorientierte Sortierverfahren benötigt mindestensΩ(n · log2 n) Vergleiche, aberRadixsort sortiert n Zahlen aus der Menge 0, . . . ,nL − 1 in ZeitO(n · L) ohne irgendeinen Vergleich auszuführen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 87 / 90

Page 417: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortieren: Zusammenfassung

Quicksort:I Ein schnelles in place Sortierverfahren. Quicksort ist ideal, wenn

alle Daten in den Hauptspeicher passen.I Die zufällige Pivotwahl garantiert, dass jede Folge von n Zahlen in

erwarteter Zeit O(n · log2 n) sortiert wird.I Eine Quicksort-Variante löst das Auswahlproblem in Zeit O(n).

Mergesort:I Sortiert jede Folge von n Zahlen in worst case Zeit O(n · log2 n).I Eine nicht-rekursive Variante sortiert n auf einem Externspeicher

gespeicherte Zahlen mit höchstens O( nB log M

B

nM )

Speicherzugriffen, solange B Zahlen in einem „Schwung“ vomExternspeicher in den Hauptspeicher der Größe M gebrachtwerden können.

Jedes vergleichsorientierte Sortierverfahren benötigt mindestensΩ(n · log2 n) Vergleiche, aberRadixsort sortiert n Zahlen aus der Menge 0, . . . ,nL − 1 in ZeitO(n · L) ohne irgendeinen Vergleich auszuführen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 87 / 90

Page 418: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortieren: Zusammenfassung

Quicksort:I Ein schnelles in place Sortierverfahren. Quicksort ist ideal, wenn

alle Daten in den Hauptspeicher passen.I Die zufällige Pivotwahl garantiert, dass jede Folge von n Zahlen in

erwarteter Zeit O(n · log2 n) sortiert wird.I Eine Quicksort-Variante löst das Auswahlproblem in Zeit O(n).

Mergesort:I Sortiert jede Folge von n Zahlen in worst case Zeit O(n · log2 n).I Eine nicht-rekursive Variante sortiert n auf einem Externspeicher

gespeicherte Zahlen mit höchstens O( nB log M

B

nM )

Speicherzugriffen, solange B Zahlen in einem „Schwung“ vomExternspeicher in den Hauptspeicher der Größe M gebrachtwerden können.

Jedes vergleichsorientierte Sortierverfahren benötigt mindestensΩ(n · log2 n) Vergleiche, aber

Radixsort sortiert n Zahlen aus der Menge 0, . . . ,nL − 1 in ZeitO(n · L) ohne irgendeinen Vergleich auszuführen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 87 / 90

Page 419: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Sortieren: Zusammenfassung

Quicksort:I Ein schnelles in place Sortierverfahren. Quicksort ist ideal, wenn

alle Daten in den Hauptspeicher passen.I Die zufällige Pivotwahl garantiert, dass jede Folge von n Zahlen in

erwarteter Zeit O(n · log2 n) sortiert wird.I Eine Quicksort-Variante löst das Auswahlproblem in Zeit O(n).

Mergesort:I Sortiert jede Folge von n Zahlen in worst case Zeit O(n · log2 n).I Eine nicht-rekursive Variante sortiert n auf einem Externspeicher

gespeicherte Zahlen mit höchstens O( nB log M

B

nM )

Speicherzugriffen, solange B Zahlen in einem „Schwung“ vomExternspeicher in den Hauptspeicher der Größe M gebrachtwerden können.

Jedes vergleichsorientierte Sortierverfahren benötigt mindestensΩ(n · log2 n) Vergleiche, aberRadixsort sortiert n Zahlen aus der Menge 0, . . . ,nL − 1 in ZeitO(n · L) ohne irgendeinen Vergleich auszuführen.

Sortieren Theoretische Informatik 1 31. Oktober 2019 87 / 90

Page 420: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (1/3)

Suche in einem ArrayEingabe: Ein Array A mit n Schlüsseln und ein Schlüssel x .

Frage: Kommt x in A vor?

Wenn A nicht sortiert ist:I Wir müssen im schlimmsten Fall alle n Schlüssel von A inspizieren.I ⇒: Laufzeit O(n).

Wenn A sortiert ist:I Suche x mit Binärsuche!I ⇒: Laufzeit O(log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 88 / 90

Page 421: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (1/3)

Suche in einem ArrayEingabe: Ein Array A mit n Schlüsseln und ein Schlüssel x .

Frage: Kommt x in A vor?

Wenn A nicht sortiert ist:I Wir müssen im schlimmsten Fall alle n Schlüssel von A inspizieren.I ⇒: Laufzeit

O(n).Wenn A sortiert ist:

I Suche x mit Binärsuche!I ⇒: Laufzeit O(log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 88 / 90

Page 422: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (1/3)

Suche in einem ArrayEingabe: Ein Array A mit n Schlüsseln und ein Schlüssel x .

Frage: Kommt x in A vor?

Wenn A nicht sortiert ist:I Wir müssen im schlimmsten Fall alle n Schlüssel von A inspizieren.I ⇒: Laufzeit O(n).

Wenn A sortiert ist:I Suche x mit Binärsuche!I ⇒: Laufzeit O(log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 88 / 90

Page 423: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (1/3)

Suche in einem ArrayEingabe: Ein Array A mit n Schlüsseln und ein Schlüssel x .

Frage: Kommt x in A vor?

Wenn A nicht sortiert ist:I Wir müssen im schlimmsten Fall alle n Schlüssel von A inspizieren.I ⇒: Laufzeit O(n).

Wenn A sortiert ist:I Suche x mit Binärsuche!

I ⇒: Laufzeit O(log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 88 / 90

Page 424: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (1/3)

Suche in einem ArrayEingabe: Ein Array A mit n Schlüsseln und ein Schlüssel x .

Frage: Kommt x in A vor?

Wenn A nicht sortiert ist:I Wir müssen im schlimmsten Fall alle n Schlüssel von A inspizieren.I ⇒: Laufzeit O(n).

Wenn A sortiert ist:I Suche x mit Binärsuche!I ⇒: Laufzeit

O(log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 88 / 90

Page 425: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (1/3)

Suche in einem ArrayEingabe: Ein Array A mit n Schlüsseln und ein Schlüssel x .

Frage: Kommt x in A vor?

Wenn A nicht sortiert ist:I Wir müssen im schlimmsten Fall alle n Schlüssel von A inspizieren.I ⇒: Laufzeit O(n).

Wenn A sortiert ist:I Suche x mit Binärsuche!I ⇒: Laufzeit O(log2 n).

Sortieren Theoretische Informatik 1 31. Oktober 2019 88 / 90

Page 426: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit = O(m · n).

Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit = O(n · log2 n + m · log2 n).Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit = O(m · log2 m + n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 427: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit = O(m · n).

Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit = O(n · log2 n + m · log2 n).Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit = O(m · log2 m + n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 428: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit

= O(m · n).Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit = O(n · log2 n + m · log2 n).Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit = O(m · log2 m + n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 429: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit = O(m · n).

Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit = O(n · log2 n + m · log2 n).Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit = O(m · log2 m + n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 430: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit = O(m · n).

Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit =

O(n · log2 n + m · log2 n).Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit = O(m · log2 m + n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 431: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit = O(m · n).

Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit = O(n · log2 n +

m · log2 n).Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit = O(m · log2 m + n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 432: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit = O(m · n).

Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit = O(n · log2 n + m · log2 n).

Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit = O(m · log2 m + n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 433: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit = O(m · n).

Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit = O(n · log2 n + m · log2 n).Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit =

O(m · log2 m + n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 434: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit = O(m · n).

Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit = O(n · log2 n + m · log2 n).Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit = O(m · log2 m +

n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 435: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (2/3)

Wer hat bezahlt?Eingabe: Eine Liste A von n ausgestellten Rechnungen sowie

eine Liste B von m < n bezahlten Rechnungen.Aufgabe: Bestimme die Liste C der nicht bezahlten

Rechnungen.

Naiver Ansatz: Durchlaufe B und vermerke für jede bezahlteRechnung in A, dass bezahlt wurde.

I Für jede der m bezahlten Rechnungen sind bis zu n Operationennotwendig.⇒ Zeit = O(m · n).

Schneller: Sortiere die Liste A. Dann durchlaufe B und vermerkefür jede bezahlte Rechnung in A, dass bezahlt wurde.

I ⇒ Zeit = O(n · log2 n + m · log2 n).Noch schneller: Sortierte die Liste B. Dann durchlaufe A undvermerke, ob Rechnung bezahlt.

I ⇒ Zeit = O(m · log2 m + n · log2 m).

Sortieren Theoretische Informatik 1 31. Oktober 2019 89 / 90

Page 436: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (3/3)

Wann sind alle da?Eingabe: Eine Liste von genehmigten Urlauben der Form

(1. Urlaubstag, 1. Arbeitstag nach dem Urlaub).Aufgabe: Bestimme zu einem Stichtag t den frühstmöglichen

Termin nach t , zu dem kein Mitarbeiter im Urlaub ist.

- Sortiere die Urlaube nach dem ersten Urlaubstag,- Durchlaufe die sortierten Urlaube und erinnere dich jeweils an den

gegenwärtig möglichen ersten Arbeitstag T > t .- Der früheste Termin T ist gefunden, falls T vor dem nächsten

ersten Urlaubstag liegt.- Zeit = O(n · log2 n) für n Urlaube.

Sortieren Theoretische Informatik 1 31. Oktober 2019 90 / 90

Page 437: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (3/3)

Wann sind alle da?Eingabe: Eine Liste von genehmigten Urlauben der Form

(1. Urlaubstag, 1. Arbeitstag nach dem Urlaub).Aufgabe: Bestimme zu einem Stichtag t den frühstmöglichen

Termin nach t , zu dem kein Mitarbeiter im Urlaub ist.

- Sortiere die Urlaube nach dem ersten Urlaubstag,

- Durchlaufe die sortierten Urlaube und erinnere dich jeweils an dengegenwärtig möglichen ersten Arbeitstag T > t .

- Der früheste Termin T ist gefunden, falls T vor dem nächstenersten Urlaubstag liegt.

- Zeit = O(n · log2 n) für n Urlaube.

Sortieren Theoretische Informatik 1 31. Oktober 2019 90 / 90

Page 438: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (3/3)

Wann sind alle da?Eingabe: Eine Liste von genehmigten Urlauben der Form

(1. Urlaubstag, 1. Arbeitstag nach dem Urlaub).Aufgabe: Bestimme zu einem Stichtag t den frühstmöglichen

Termin nach t , zu dem kein Mitarbeiter im Urlaub ist.

- Sortiere die Urlaube nach dem ersten Urlaubstag,- Durchlaufe die sortierten Urlaube und erinnere dich jeweils an den

gegenwärtig möglichen ersten Arbeitstag T > t .

- Der früheste Termin T ist gefunden, falls T vor dem nächstenersten Urlaubstag liegt.

- Zeit = O(n · log2 n) für n Urlaube.

Sortieren Theoretische Informatik 1 31. Oktober 2019 90 / 90

Page 439: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (3/3)

Wann sind alle da?Eingabe: Eine Liste von genehmigten Urlauben der Form

(1. Urlaubstag, 1. Arbeitstag nach dem Urlaub).Aufgabe: Bestimme zu einem Stichtag t den frühstmöglichen

Termin nach t , zu dem kein Mitarbeiter im Urlaub ist.

- Sortiere die Urlaube nach dem ersten Urlaubstag,- Durchlaufe die sortierten Urlaube und erinnere dich jeweils an den

gegenwärtig möglichen ersten Arbeitstag T > t .- Der früheste Termin T ist gefunden, falls

T vor dem nächstenersten Urlaubstag liegt.

- Zeit = O(n · log2 n) für n Urlaube.

Sortieren Theoretische Informatik 1 31. Oktober 2019 90 / 90

Page 440: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (3/3)

Wann sind alle da?Eingabe: Eine Liste von genehmigten Urlauben der Form

(1. Urlaubstag, 1. Arbeitstag nach dem Urlaub).Aufgabe: Bestimme zu einem Stichtag t den frühstmöglichen

Termin nach t , zu dem kein Mitarbeiter im Urlaub ist.

- Sortiere die Urlaube nach dem ersten Urlaubstag,- Durchlaufe die sortierten Urlaube und erinnere dich jeweils an den

gegenwärtig möglichen ersten Arbeitstag T > t .- Der früheste Termin T ist gefunden, falls T vor dem nächsten

ersten Urlaubstag liegt.

- Zeit = O(n · log2 n) für n Urlaube.

Sortieren Theoretische Informatik 1 31. Oktober 2019 90 / 90

Page 441: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (3/3)

Wann sind alle da?Eingabe: Eine Liste von genehmigten Urlauben der Form

(1. Urlaubstag, 1. Arbeitstag nach dem Urlaub).Aufgabe: Bestimme zu einem Stichtag t den frühstmöglichen

Termin nach t , zu dem kein Mitarbeiter im Urlaub ist.

- Sortiere die Urlaube nach dem ersten Urlaubstag,- Durchlaufe die sortierten Urlaube und erinnere dich jeweils an den

gegenwärtig möglichen ersten Arbeitstag T > t .- Der früheste Termin T ist gefunden, falls T vor dem nächsten

ersten Urlaubstag liegt.- Zeit =

O(n · log2 n) für n Urlaube.

Sortieren Theoretische Informatik 1 31. Oktober 2019 90 / 90

Page 442: Theoretische Informatik 1 1 Wintersemester 2019/20algo.cs.uni-frankfurt.de/lehre/algo2/winter1920/folien/kapitel2-folien.… · Theoretische Informatik 1 1 Wintersemester 2019/20

Anwendungen (3/3)

Wann sind alle da?Eingabe: Eine Liste von genehmigten Urlauben der Form

(1. Urlaubstag, 1. Arbeitstag nach dem Urlaub).Aufgabe: Bestimme zu einem Stichtag t den frühstmöglichen

Termin nach t , zu dem kein Mitarbeiter im Urlaub ist.

- Sortiere die Urlaube nach dem ersten Urlaubstag,- Durchlaufe die sortierten Urlaube und erinnere dich jeweils an den

gegenwärtig möglichen ersten Arbeitstag T > t .- Der früheste Termin T ist gefunden, falls T vor dem nächsten

ersten Urlaubstag liegt.- Zeit = O(n · log2 n) für n Urlaube.

Sortieren Theoretische Informatik 1 31. Oktober 2019 90 / 90