Grundzüge von Algorithmen und Datenstrukturen Vorlesung 1

Werbung
Generelle Informationen
Grundideen
Grundzüge von Algorithmen und
Datenstrukturen
Vorlesung 1
Raimund Seidel und Stefanie Wuhrer
Sortierproblem
Generelle Informationen
Grundideen
Sortierproblem
Informationen zur Vorlesung
Assistenten: Lázló Korma, Lavinia Dinu
Website: http://www-tcs.cs.uni-saarland.de/course/58/
Informationen zur Benotung sind auf Website zu finden
Wichtig: Registrieren und Übungsgruppenpräferenz
angeben
Literatur:
Cormen, Leiserson, Rivest, Stein: Algorithmen - Eine
Einführung, Olderbourg, 2010
Mehlhorn, Sanders: Algorithms and Data Structures - The
Basic Toolbox, Springer, 2008
Jedes andere Buch mit ”Entwurf und Analyse von
Algorithmen” im Titel
Generelle Informationen
Grundideen
Sortierproblem
Algorithmen - Programme
Beispiel: finde die größte Zahl in einer Menge S von
Zahlen
Verschiedene Abstraktionsebenen anhand des Beispiels
besprochen
Wir verwenden: explizite Darstellung von S
Wir möchten unrealistische Programme vermeiden
(Beispiel: Erzeugen großer Zahlen als Zwischenergebnis)
Generelle Informationen
Grundideen
Sortierproblem
Maschinenmodell
Grundeinheiten (Zellen) speichern Werte
Operationen (+, −, ∗, /, . . .) brauchen konstante Zeit
Auf Zellen kann in konstanter Zeit zugegriffen werden
Es können Folgen von Zellen betrachtet werden (Felder)
Zugriff auf Element eines Felds in konstanter Zeit
Generelle Informationen
Grundideen
Sortierproblem
Laufzeit
TA (S) = Laufzeit des Algorithmus A bei Eingabe S
Für die Laufzeitanalyse eines Algorithmus A betrachten wir
Klassen von Eingabedaten S derselben Größe |S|
Mögliche Analysen:
Best-case Analyse: min TA (S) |S|
=n Worst-case Analyse: max TA (S) |S| = n
– Interessant
Durchschnittliche Analyse anhand einer Verteilung der
Eingabedaten mit |S| = n
– Interessant, setzt Wissen über Verteilung voraus
Generelle Informationen
Grundideen
Sortierproblem
Sortierproblem
S ist eine Menge von n Zahlen (gespeichert in einem Feld)
Ziel: bringe die Zahlen in aufsteigende Reihenfolge
Die folgenden drei Algorithmen wurden besprochen
Generelle Informationen
Grundideen
Sortierproblem
Selection Sort
Grundidee:
Finde größtes Element
Tausche es an die letzte Stelle des Feldes
Sortiere den Rest
Laufzeit (mit in der Vorlesung berechneten Konstanten Ci ):
Worst Case: C1 n(n + 1) + C2 n
Best Case: C3 n(n + 1) + C4 n
⇒ Selbst für sortiertes Feld braucht der Algorithmus lange
Generelle Informationen
Grundideen
Sortierproblem
Insertion Sort
Grundidee:
Nimm an A[0 . . . i − 1] ist sortiert
Füge A[i] in die Sortierung ein
Wiederhole
Laufzeit (mit in der Vorlesung berechneten Konstanten Ci ):
Worst Case: C1 n(n − 1) + C2 (n − 1)
Best Case: C3 (n − 1)
⇒ Großer Unterschied zwischen Worst Case und Best Case
Generelle Informationen
Grundideen
Sortierproblem
Merge Sort
Grundidee:
Teile S in zwei gleich große Teile S 0 und S 00
Sortiere S 0 und S 00
Verschmelze (merge) die Teile
Laufzeit:
Zeit für Verschmelzung zweier Felder der Größe n:
cn mit in der Vorlesung berechneter Konstante c
Laufzeit insgesamt:
cn + 2c n2 + 4c n4 + . . . + 2log2 n c 2logn2 n = cn log2 n
cn
2c n2
2log2 nc logn2 n
2
Herunterladen