• Keine Ergebnisse gefunden

A7.1LaufzeitanalyseBottom-Up-MergesortA7.2Zusammenfassung A7.1LaufzeitanalyseBottom-Up-Mergesort AlgorithmenundDatenstrukturen AlgorithmenundDatenstrukturen InhaltdieserVeranstaltung

N/A
N/A
Protected

Academic year: 2022

Aktie "A7.1LaufzeitanalyseBottom-Up-MergesortA7.2Zusammenfassung A7.1LaufzeitanalyseBottom-Up-Mergesort AlgorithmenundDatenstrukturen AlgorithmenundDatenstrukturen InhaltdieserVeranstaltung"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen und Datenstrukturen

A7. Laufzeitanalyse: Bottom-Up-Mergesort

Marcel L¨ uthi and Gabriele R¨ oger

Universit¨ at Basel

11. M¨ arz 2021

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 1 / 16

Algorithmen und Datenstrukturen

11. M¨ arz 2021 — A7. Laufzeitanalyse: Bottom-Up-Mergesort

A7.1 Laufzeitanalyse Bottom-Up-Mergesort

A7.2 Zusammenfassung

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 2 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

A7.1 Laufzeitanalyse Bottom-Up-Mergesort

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 3 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Inhalt dieser Veranstaltung

A&D

Sortieren Komplexit¨ ats-

analyse Fundamentale Datenstrukturen

Suchen Graphen

Strings Weiterf¨ uhrende

Themen

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 4 / 16

(2)

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Merge-Schritt

1

def merge(array, tmp, lo, mid, hi):

2

i = lo

3

j = mid + 1

4

for k in range(lo, hi + 1): # k = lo,...,hi

5

if j > hi or (i <= mid and array[i] <= array[j]):

6

tmp[k] = array[i]

7

i += 1

8

else:

9

tmp[k] = array[j]

10

j += 1

11

for k in range(lo, hi + 1): # k = lo,...,hi

12

array[k] = tmp[k]

Wir analysieren Laufzeit f¨ ur m := hi − lo + 1 c 1

c 2

c 3

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 5 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Merge-Schritt: Analyse

T (m) = c 1 + c 2 m + c 3 m

≥ (c 2 + c 3 )m F¨ ur m ≥ 1:

T (m) = c 1 + c 2 m + c 3 m

≤ c 1 m + c 2 m + c 3 m

= (c 1 + c 2 + c 3 )m

Theorem

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

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 6 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Bottom-Up-Mergesort

1

def sort(array):

2

n = len(array)

3

tmp = list(array)

4

length = 1

5

while length < n:

6

lo = 0

7

while lo < n - length:

8

mid = lo + length - 1

9

hi = min(lo + 2 * length - 1, n - 1)

10

merge(array, tmp, lo, mid, hi)

11

lo += 2 * length

12

length *= 2

Wir verwenden f¨ ur die Absch¨ atzung:

c 1 Zeilen 2–4 c 2 Zeilen 6 und 12 c 3 Zeilen 8,9,11

Annahme: merge ben¨ otigt

Annahme: c 4 (hi-lo+1) Operationen.

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 7 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Bottom-Up-Mergesort: Analyse I

Annahme: n = 2 k f¨ ur ein k ∈ N >0

Iterationen der ¨ ausseren Schleife (m f¨ ur hi-lo+1):

I Iteration 1: n/2 mal innere Schleife mit Merge f¨ ur m = 2 c 2 + n/2(c 3 + 2c 4 ) = c 2 + 0.5c 3 n + c 4 n

I Iteration 2: n/4 mal innere Schleife mit Merge f¨ ur m = 4 c 2 + n/4(c 3 + 4c 4 ) = c 2 + 0.25c 3 n + c 4 n

I . . .

I Aussere Schleife endet nach letzter Iteration ¨ `.

I Iteration `: 1 mal innere Schleife mit Merge f¨ ur m = n c 2 + n/n(c 3 + nc 4 ) = c 2 + c 3 + c 4 n

Insgesamt T (n) ≤ c 1 + `(c 2 + c 3 n + c 4 n) ≤ `(c 1 + c 2 + c 3 + c 4 )n

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 8 / 16

(3)

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Bottom-Up-Mergesort: Analyse II

Wie gross ist `?

I In Iteration i ist f¨ ur den Merge-Schritt m = 2 i I In Iteration ` hat Merge-Schritt m = 2 ` = n I Da n = 2 k ist ` = k = log 2 n.

Mit c := c 1 + c 2 + c 3 + c 4 erhalten wir T (n) ≤ cn log 2 n.

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 9 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Bottom-Up-Mergesort: Analyse III

Was, wenn n keine Zweierpotenz, also 2 k−1 < n < 2 k ? I Trotzdem k Iterationen der ¨ ausseren Schleife.

I Innere Schleife verwendet nicht mehr Operationen.

I T (n) ≤ cnk = cn(blog 2 nc + 1) ≤ 2cn log 2 n (f¨ ur k > 2)

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 10 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Bottom-Up-Mergesort: Analyse IV

Ahnliche Absch¨ ¨ atzung auch f¨ ur untere Schranke m¨ oglich.

→ Ubung ¨

Theorem

Bottom-Up-Mergesort hat leicht ¨ uberlineare Laufzeit, d.h.

es gibt Konstanten c , c 0 , n 0 > 0, so dass f¨ ur alle n ≥ n 0 gilt cn log 2 n ≤ T (n) ≤ c 0 n log 2 n.

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 11 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Leicht ¨ uberlineare Laufzeit

Leicht ¨ uberlineare Laufzeit n log 2 n:

→ doppelt so grosse Eingabe, etwas mehr als doppelt so lange Laufzeit Was bedeutet das in der Praxis?

I Annahme: c = 1, eine Operation dauert im Schnitt 10

−8

Sek.

I Bei 1 Tsd. Elementen warten wir

10

−8

· 10

3

log

2

(10

3

) ≈ 0.0001 Sekunden.

I Bei 10 Tsd. Elementen ≈ 0.0013 Sekunden I Bei 100 Tsd. Elementen ≈ 0.017 Sekunden I Bei 1 Mio. Elementen ≈ 0.2 Sekunden I Bei 1 Mrd. Elementen ≈ 299 Sekunden

Laufzeit n log

2

n nicht viel schlechter als lineare Laufzeit

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 12 / 16

(4)

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Mergesort mit Kostenmodell I

Schl¨ usselvergleiche

I Werden nur in merge durchgef¨ uhrt.

I Mergen zweier Teilfolgen der L¨ ange m und n ben¨ otigt bestenfalls min(n, m) und schlimmstenfalls n + m − 1 Vergleiche.

I Bei zwei etwa gleich langen Teilfolgen sind das linear viele Vergleiche, d.h. es gibt c , c 0 > 0, so dass Anzahl Vergleiche zwischen cn und c 0 n liegt.

→ Anzahl der zum Sortieren einer Sequenz notwendigen Schl¨ usselvergleiche ist leicht ¨ uberlinear in der L¨ ange der Sequenz (analog zu Laufzeitanalyse).

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 13 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Laufzeitanalyse Bottom-Up-Mergesort

Mergesort mit Kostenmodell II

Elementbewegungen

I Werden nur in merge durchgef¨ uhrt.

I 2n Bewegungen f¨ ur Sequenz der L¨ ange n.

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

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 14 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Zusammenfassung

A7.2 Zusammenfassung

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 15 / 16

A7. Laufzeitanalyse: Bottom-Up-Mergesort Zusammenfassung

Zusammenfassung

I Mergesort hat leicht ¨ uberlineare Laufzeit, Schl¨ usselvergleiche und Elementbewegungen.

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 11. M¨arz 2021 16 / 16

Referenzen

ÄHNLICHE DOKUMENTE

I Insertionsort betrachtet die Elemente von vorne nach hinten und sortiert sie in den bereits sortierten Bereich am.

Wir wissen bereits, dass der Merge-Schritt korrekt ist, also ist am Ende der gesamte Bereich zwischen lo und hi sortiert. Mergesort: Ruft sort aux f¨ ur gesamten Bereich auf,

A5.1 Laufzeitanalyse Allgemein A5.2 Beispiel: Selectionsort A5.3 Zusammenfassung.. R¨ oger (Universit¨ at Basel) Algorithmen und

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

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

I Beispiel: GTA online hatte viele Jahre eine Ladezeit von mehreren Minuten. I mehrere Minuten zum Parsen von 10

Beispiel: pos0 7→ pos2, pos1 7→ pos1, pos2 7→ pos0 I Da alle m¨ oglichen Eingaben der Gr¨ osse n korrekt gel¨ osst. werden m¨ ussen, muss der Algorithmus

I Insertionsort ist auf kleinen Sequenzen sehr schnell und wird daher zum Beispiel zur Verbesserung von Mergesort und Quicksort f¨ ur kurze Aufrufe eingesetzt.. I Quicksort hat