Folien Zur Vorlesung Sortierverfahren
Total Page:16
File Type:pdf, Size:1020Kb
Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Sortierverfahren Einleitung Lutz Wegner 17. April 2014 1 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Inhaltsverzeichnis 1 Einleitung Warum Sortierverfahren? Sortieren und Suchen als algorithmische Herausforderung 2 Modellannahmen Ein realistisches Modell Offen gelassene Punkte 3 Internes vs Externes Sortieren Internes Sortieren (Hauptspeichersort) Externes Sortieren (Plattensortierung) 4 Qualit¨atsbeurteilungen Asymptotische und gemessene Laufzeiten Zus¨atzlicher Platz Stabilit¨at und Smoothness Praktische Ub¨ erlegungen Taxonomie 5 Leistungsnachweis Ihre Aufgabe 2 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Warum Sortierverfahren? Einer Studie aus den Achtzigern zufolge verbringen Mainframes 25 % ihrer CPU-Zeit mit Sortiervorg¨angen. Betrachte hierzu Join und Projektion in Datenbanken. select STUDENTS.NAME, COURSE, DEPT from SIGN_UP, STUDENTS where SIGN_UP.NAME = STUDENTS.NAME 3 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Tabelle 1: SIGN UP Tabelle 2: STUDENTS NAME COURSE NAME SEM DEPT Jones ALG+DS Smith 1 CSC Smith DB1 Miller 5 MATH Miller ALG+DS Jones 1 MATH Smith PROG1 Clark 3 CSC Clark DB1 Jones PROG1 Tabelle 3: SIGN UP ./ STUDENTS NAME COURSE DEPT Jones ALG+DS MATH Smith DB1 CSC Miller ALG+DS MATH Smith PROG1 CSC Clark DB1 CSC Jones PROG1 MATH 4 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Das Datenbankbeispiel deutet auch an, wie wichtig die Erkennung und Eliminierung von Duplikaten ist, z. B. nach einer Projektion auf NAME im Ergebnis oben, wenn im SQL-Befehl die DISTINCT-Klausel enthalten war. Indeed, I believe that virtually every important aspect of programming arises somewhere in the context of sorting and searching! [Knu98, p. v] 5 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Sortieren ist ein ideales Anwendungsgebiet fur¨ Algorithmenentwurf und Software Engineering Studien zu Effizienz und Laufzeitverhalten (performance evaluation) konkrete Komplexit¨atstheorie und hatte seinen ersten H¨ohepunkt in den funfziger¨ und sechziger Jahren, wie man an den Referenzen hier sieht ACM Symp. on Sorting, Nov. 1962 and CACM May 1963 Knuth’s bibliography in Computing Reviews 13 (1972) wurde aber immer wieder neu belebt, z. B. in dem Uberblicksartikel¨ IEEE TC Special issue on sorting, April 1985 6 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Realistische Modellannahmen Knuth [Knu98, p. 4] schl¨agt das folgende Modell vor. Gegeben sind N S¨atze (Objekte, items, records) R1, R2, ..., RN die zusammen eine Datei (a file) bilden. Jeder Satz Rj hat einen Schlussel¨ (key), Kj , der die Sortierung bestimmt. Zus¨atzlich kann der Satz weitere Informationen (sog “satellite information”) enthalten. Man definiert dann eine Ordnungsrelation (ordering relation)“<” uber¨ dem Schlusselraum¨ mit der Eigenschaft, dass fur¨ beliebige drei Schlusselwerte¨ a, b, c, gilt: genau eine der M¨oglichkeiten a < b, a = b, b < a ist wahr (law of trichotomy) wenn a < b und b < c, dann auch a < c (law of transitivity) Somit wird eine lineare (totale) Ordnung vorausgesetzt. 7 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Offen gelassene Punkte Das Ziel einer Sortierung ist es, eine Permutation p(1)p(2) ... p(N) der S¨atze zu finden, bei der die Schlussel¨ in nicht-absteigender Reihenfolge stehen: Kp(1) ≤ Kp(2) ≤ · · · ≤ Kp(N). Die folgenden Punkte bleiben offen: Wie werden die Datens¨atze geliefert (Band, Platte, on-line)? Wie viele S¨atze sind gegeben und ist die Anzahl vorher bekannt? Ist der Wertebereich der Schlussel¨ bekannt (begrenzt)? Welche Operationen sind erlaubt (nur Schlusselvergleiche,¨ arithmetische Operationen)? Wie erfolgt die Umordnung der S¨atze? Gibt es eine bekannte Anfangsordnung? Wie viel Extraplatz ist verfugbar?¨ 8 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Internes versus Externes Sortieren Traditionell unterscheidet man zwei Untermodelle Sortieren eines Array (eines per Index adressierbaren Felds) im Hauptspeicher Sortieren einer Plattendatei 9 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Internes Sortieren (Hauptspeichersortierung) Dieses Modell setzt eine Datenstruktur ¨ahnlich zu der unten in PASCAL-Notation gegebenen voraus. TYPE item = RECORD key : integer; info : infotype END; sequence = ARRAY[1..N] OF item; VAR a : sequence; Wir wollen jetzt eine Prozedur XYZ-Sort(VAR s : sequence); erstellen, die – bei Aufruf mit XYZ-Sort(a) – den Array a so umordnet, dass danach gilt a[i].key ≤ a[i+1].key ∀ i (1 ≤ i < N). 10 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Modellannahmen fur¨ Hauptspeichersortierung Die Annahmen in diesem Modell sind: Die S¨atze k¨onnen getauscht werden, was u. U. gleiche, feste L¨angen voraussetzt. Der Zugriff auf jeden Satz erfolgt mit gleichen Kosten (uniform cost model). Die Ordnung bestimmt sich nur uber¨ Schlusselvergleiche.¨ Alle S¨atze passen in den Hauptspeicher. Im einfachen Fall bleiben auch alle Parallelit¨atsaspekte außen vor. 11 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Externes Sortieren (Plattensortierung) Der Begriff “Plattendatei” (disc file) bezieht sich auf alle Dateien auf externen Medien mit wahlfreiem Zugriff auf einzelne S¨atze (random access), im Gegensatz zu B¨andern oder Streams. Die entsprechende Datenstruktur sieht jetzt wie folgt aus (wieder in PASCAL-Notation). TYPE page = ARRAY[1..s] OF item; file = ARRAY[1..M] OF page; buffer = ARRAY[1..k] OF page; VAR f : file; 12 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Modellannahmen fur¨ Plattensortierung Die Annahmen fur¨ eine sinnvolle Diskussion spiegeln die klassische Speicherhierarchie wider: k M und k ist fest w¨ahrend der Ausfuhrung¨ die Seitengr¨oße ist fest vorgegeben, z. B. 4 KB die Datei passt nicht in den Hauptspeicher der Zugriff ist nicht gleich teuer fur¨ alle Seiten auf der Platte Ein-/Ausgabezeiten bestimmen die Gesamtausfuhrungszeit¨ (mit Ausnahmen) innerhalb einer Seite sind die S¨atze linear geordnet Seiten, die die Datei belegt, sind nicht notwendigerweise aufeinanderfolgend und linear geordnet innerhalb der Zylinder Zylinder, die die Datei belegt, sind nicht notwendigerweise aufeinanderfolgend und linear geordnet die Seitenersetzung kann vom Anwender kontrolliert werden 13 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Andere Modelle Andere untersuchenswerte Modelle sind: Sortieren linearer Listen (chained nodes, internes Sortieren) Sortieren mit Parallelverarbeitung (VLSI, SIMD) Sortieren in Netzwerken (LAN, WAN) Sortieren von B¨andern (auch bubble memory) Hauptspeichersortierverfahren im virtuellen Adressraum (paged memory sorting) 14 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Asymptotische und gemessene Laufzeiten Neben der Messung der tats¨achlichen Laufzeiten eines Programms fur¨ verschiedene Eingaben, die von der Programmiersprache und dem Rechner abh¨angen, ist es ublich¨ die Leistungsf¨ahigkeit in einer abstrakteren Art zu messen (zu analysieren). Z¨ahlen kann man Schlusselvergleiche¨ Plattenzugriffe MIX-Instruktionen elementare PASCAL-, C-, Java-, . Instruktionen Schleifendurchg¨ange (Iterationen) Satzvertauschungen (record exchanges, moves) im besten, mittleren, schlechtesten Fall, fur¨ bestimmte Schlusselbereiche,¨ unterschiedliche Dateigr¨oßen, Vorsortierungen und Multimengen. Das Ergebnis schreibt man immer als Funktion der L¨ange n der Eingabe auf, meist in der “Big-Oh-Notation”. 15 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Big-Oh- und Big-Omega-Notation Es gelte f (n) = O(g(n)) gdw. es Konstanten k und n0 gibt, so dass |f (n)| ≤ k · |g(n)| ∀n > n0. Damit gibt man eine obere Schranke fur¨ die Wachstumsrate der Funktion an, die multiplikative und additive Konstanten ignoriert. Das rechtfertigt dann den Begriff der asymptotischen Laufzeit. Eine untere Schranke gibt man in der “Big-Omega-Notation” an: f (n) = Ω(g(n)) gdw. g(n) = O(f (n)) Genauer, es gibt eine Konstante k, so dass f (n) ≥ k · g(n) unendlich oft. 16 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Little-oh- und Big-Theta-Notation Weniger h¨aufig ist die “Little-oh-Notation” f (n) f (n) = o(g(n)) gdw. lim = 0 n→∞ g(n) die angibt, dass f (n) asymptotisch langsamer w¨achst als g(n). Insbesondere setzen wir voraus, dass – bei Angabe einer Funktion f (n) = O(g(n)) – man keine Funktion h(n) = o(g(n)) kennt, so dass f (n) = O(h(n)), d. h. wenn wir eine obere Schranke benennen, dann sollte sie die knappm¨oglichste sein. Obere und untere Schranke zusammen bilden die “Big-Theta-Notation” f (n) = Θ(g(n)) gdw. f (n) = O(g(n)) und f (n) = Ω(g(n)). 17 / 34 Einleitung Modellannahmen Internes vs Externes Sortieren Qualit¨atsbeurteilungen Leistungsnachweis Gemessene Laufzeiten I Auch wenn es gelingt, die asymptotische Laufzeit zu analysieren