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