Algorithmen und Datenstrukturen 1 - 4. Seminar
Transcription
Algorithmen und Datenstrukturen 1 - 4. Seminar
Algorithmen und Datenstrukturen 1 - 4. Seminar Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Outline • 4. Übungsserie 4. Übungsserie 4 Aufgaben, insgesamt 35 Punkte A13 Bucket-Sort (Distribution-Sort) (8 Punkte) A14 Heap-Sort (5 Punkte) A15 Simpsons: Selection-,Merge-,Quick-Sort (12 Punkte) A16 Binärbäume (10 Punkte) Aufgabe 13 In dem uns nicht so fernen Land “Formularien” wird jedes Jahr eine Volkszählung durchgeführt. Dazu ist jeder Bürger in jeder Gemeinde verpflichtet! Die ausgefüllten Formulare sollen nach bestehender Amtsanweisung innerhalb jeder Gemeinde nach dem Geburtsdatum sortiert werden. Jedem Gemeindevorsteher steht hierbei offen, ob er sich für das Sortieren nach dem Bucketsort-Verfahren oder für ein anderes Sortierverfahren mit Θ(nlog2 n) an Aufwand entscheidet. Es ist von ihm allerdings in jedem Fall sicherzustellen, dass es immer das günstigste Verfahren in Abhängigkeit zur Anzahl der Gemeindebewohner darstellt, da die Mitarbeiter der örtlichen Behörde tunlichst mehr Falschparker notieren sollen, anstatt stupides Sortierwerk zu bewerkstelligen. Für das Sortieren nach Bucketsort stehen in jeder Gemeinde drei Klassen von Waschkörben bereit, die mit Y , M und D bezeichnet sind und in Quantitäten von Y = 100 StÜck, M = 12 Stück und D = 31 Stück geliefert wurden. Wiederholung: Bucket-Sort • Sortieren durch Streuen und Sammeln • Voraussetzung: kleiner/endlicher Schlüsselbereich 1..m • Streuen: Bestimmung der Häufigkeit des Vorkommens für jeden der m Schlüsselwerte • Sammeln: Von 1..m, falls COUNT [i] > 0, i-ten Schlüsselwert COUNT [i]-mal ausgeben Wiederholung: Bucket-Sort Streuen: Sammeln: Aufgabe 13 - Bucket-Sort (BS) (a) Geben Sie in Abhängigkeit der Gemeindegröße n an, für welches Sortierverfahren der Gemeindevorsteher sich entscheiden soll. Für Bucketsort wird angenommen, dass Duplikate immer erst hinzugefügt werden, wenn jeder einzelne Korb einer Klasse mit mindestens einem Formular belegt wurde. Für die konstanten Kosten für das Streuen und Sammeln wird entsprechend der zusätzliche Aufwand von C1 = 1 und C2 = 1 amtlich festgelegt. • 3 Klassen Y , M, D = Jahr, Monat, Tag → 3x BS • Gesamtaufwand: T (n) = TJahr + TMonat + TTag • Y = 100 → “Platz” für 100 Jahre bzw 100 Formulare, mehrere Formulare ins gleiche Bucket (= Duplikate), erst bei > 100 Formularen. • Problem: Wenige Buckets für Monate bzw Tage (100 Formulare, z.B., können nur mit Duplikaten abgelegt werden). Aufgabe 13 - Bucket-Sort (BS) • Angenommen, wir hätten 10,000 Buckets und nur 3 Formulare, dann muss trotzdem jeder Bucket beim Sammeln besucht werden (→ teuer). • u.U kleine Anzahl von Buckets günstiger → M =Monat oder D =Tag günstiger • Bzgl Laufzeit unterscheiden wir 2 Fälle: keine/mit Duplikate • Skript, Kosten für Bucket-Sort: • keine Duplikate: Streuen C1 · n, Sammeln C2 · m • mit d Duplikaten: Streuen: C1 · n, Sammeln C2 · (m + d) • n =Feldlänge, m =Anzahl der Buckets Aufgabe 13 - Bucket-Sort (BS) keine Duplikate: Streuen C1 · n, Sammeln C2 · m mit d Duplikaten: Streuen: C1 · n, Sammeln C2 · (m + d) • C1 = C2 = 1 • nach Jahren (100) sortieren • Annahme: Keine Duplikate, weil große Stückzahl (Vermutung: Für kleine n ist O(nlogn) Verfahren besser, für große wahrscheinl. BS mit O(n)). • Streuen+Sammeln kostet 1n + 1m = n + 100 • nach Monaten (12) sortieren: • jetzt mit Duplikate: 1n + 1(m + d) = 1n + 1n = 2n • nach Tagen (31) sortieren: • auch mit Duplikaten: 1n + 1(m + d) = 1n + 1n = 2n • Insgesamt: T (n) = (n + 100) + (2n) + (2n) = 5n + 100 Aufgabe 13 - Bucket-Sort (BS) T (n) = 5n + 100 ... Größe Größe Größe Größe Größe Größe Größe Größe Größe Größe Größe der der der der der der der der der der der Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde 65 66 67 68 69 70 71 72 73 74 75 BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS ... 425 430 435 440 445 450 455 460 465 470 475 nlogn nlogn nlogn nlogn nlogn nlogn nlogn nlogn nlogn nlogn nlogn 391.453907846850 398.930011877658 406.427975760671 413.947473205023 421.488187517694 429.049811186148 436.632045484832 444.234600103846 451.857192798241 459.499549056542 467.161401787191 Aufgabe 13 - Bucket-Sort (BS) ... Größe Größe Größe Größe Größe Größe Größe Größe Größe Größe der der der der der der der der der der Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde Gemeinde 76 77 78 79 80 81 82 83 84 85 BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS BUCKETS ... 480 485 490 495 500 505 510 515 520 525 nlogn nlogn nlogn nlogn nlogn nlogn nlogn nlogn nlogn nlogn 474.842491021713 482.542563633507 490.261373071255 497.998679105991 505.754247590989 513.527850233655 521.319264378683 529.128272801795 536.954663513416 544.798229571705 Aufgabe 13 - Bucket-Sort (BS) (b) Alternative Lösungstrategien? Aufgabe 14 - Heap-Sort Sortieren Sie das Array A = [6, 38, 14, 25, 4, 14] mittels des Ihnen in der Vorlesung vorgestellten Heap-Sort Algorithmus unter Verwendung eines Max-Heaps. Geben Sie alle Zwischenschritte, zB das Wiederherstellen der Heap-Eigenschaft, an und markieren Sie die bereits sortierte Teilliste. Aufgabe 14 - Heap-Sort n → 2n, 2n + 1 Aufgabe 14 - Heap-Sort n → 2n, 2n + 1 Aufgabe 14 - Heap-Sort n → 2n, 2n + 1 Aufgabe 14 - Heap-Sort n → 2n, 2n + 1 Aufgabe 15 - Simpsons Gegeben sei die folgende Namensliste: Simpson, Lisa Flanders, Ned Flanders, Maude Simpson, Bart Wiggum, Chief Simpson, Marge Wiggum. Ralph Springfield, Jebediah Simpson, Homer Aufgabe 15 - Simpsons (a) Geben Sie die Liste nach einer Sortierung mit Selection-Sort, Merge-Sort und Quick-Sort an. Bei Quick-Sort werde das jeweils letzte Element einer Liste als Pivot-Element benutzt. Schlüssel seien nur die Nachnamen, Vornamen werden bei Schlüsselvergleich ignoriert. Bei welchen der Sortierverfahren können Sie bereits anhand dieses Beispiels erkennen, dass sie nicht stabil sortieren? 3x3 Punkte, 2 Punkte für Frage nach Stabilität Aufgabe 15 - Lösung Live Vorführung Sortieren Aufgabe 15 - Lösung Aufgabe 15 - Lösung unsorted Simpson, Lisa Flanders, Ned Flanders, Maude Simpson, Bart Wiggum, Chief Simpson, Marge Wiggum. Ralph Springfield, J. Simpson, Homer Quick-Sort Flanders, Maud Flanders, Ned Simpson, Marge Simpson, Homer Simpson, Lisa Simpson, Bart Springfield, J. Wiggum, Chief Wiggum, Ralph Selection-Sort Flanders, Ned Flanders, Maude Simpson, Lisa Simpson, Bart Simpson, Marge Simpson, Homer Springfield, J. Wiggum, Ralph Wiggum, Chief Merge-Sort Flanders, Ned Flanders, Maude Simpson, Lisa Simpson, Bart Simpson, Marge Simpson, Homer Springfield, J. Wiggum, Chief Wiggum, Ralph Aufgabe 15 - Lösung unsorted Simpson, Lisa Flanders, Ned Flanders, Maude Simpson, Bart Wiggum, Chief Simpson, Marge Wiggum. Ralph Springfield, J. Simpson, Homer Quick-Sort Flanders, Maud Flanders, Ned Simpson, Marge Simpson, Homer Simpson, Lisa Simpson, Bart Springfield, J. Wiggum, Chief Wiggum, Ralph Selection-Sort Flanders, Ned Flanders, Maude Simpson, Lisa Simpson, Bart Simpson, Marge Simpson, Homer Springfield, J. Wiggum, Ralph Wiggum, Chief Merge-Sort Flanders, Ned Flanders, Maude Simpson, Lisa Simpson, Bart Simpson, Marge Simpson, Homer Springfield, J. Wiggum, Chief Wiggum, Ralph Es gilt: Weder Quick-Sort noch Selection-Sort sind in ihrer einfachsten Implementierung stabil. Einzig Merge-Sort behält die relative Ordnung der Input Daten bei. Aufgabe 15 - Lösung (b) Geben Sie einen möglichst einfachen Trick an, durch den jedes auf paarweisen Schlüsselvergleichen beruhende Sortierverfahren stabil gemacht werden kann. Aufgabe 15 - Lösung (b) Geben Sie einen möglichst einfachen Trick an, durch den jedes auf paarweisen Schlüsselvergleichen beruhende Sortierverfahren stabil gemacht werden kann. Eine einfache Möglichlkeit wäre, mehrfach auftretende Schlüssel der Ausgangsfolge mit einem besonderen ‘TAG’ zu kennzeichnen. Zum Beispiel lassen sich alle Simpsons der Aufgabenfolge als Simpson:1 für Lisa, Simpson:2 für Bart etc. kennzeichnen. Nach dem Sortieren muss man diese natürlich wieder entfernen. (1 Punkt) Aufgabe 16 - Bäume (a) Geben Sie für jeden der Bäume (i) − (vi) dessen Höhe an, und ob er die folgenden Eigenschaften hat (ja/nein): strikt, ausgeglichen, fast vollständig, vollständig. Geben Sie Ihre Ergebnisse in Form einer Tabelle, in der zu jedem der Bäume jeweils eine Spalte steht. (6 Punkte) Aufgabe 16 - Lösung i Höhe??? strikt ausgeglichen fast vollst. vollst. ii iii iv v vi Aufgabe 16 - Lösung i ii iii iv v vi Höhe??? strikt ausgeglichen fast vollst. vollst. Definition “Höhe”: Anzahl der Knoten entlang des längsten Pfades von Wurzel bis zum (“höchsten”) Kind. Der leere Baum hat Höhe 0. Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst. vollst. i 2 ii 2 iii 3 iv 3 v 4 vi 4 Definition “Höhe”: Anzahl der Knoten entlang des längsten Pfades von Wurzel bis zum (“höchsten”) Kind. Der leere Baum hat Höhe 0 Aufgabe 16 - Lösung Höhe strikt??? ausgeglichen fast vollst. vollst. i 2 ii 2 iii 3 iv 3 v 4 vi 4 Aufgabe 16 - Lösung Höhe strikt??? ausgeglichen fast vollst. vollst. i 2 ii 2 iii 3 iv 3 Definition “strikt”: In einem strikten Binärbaum besitzt jeder innere Knoten nicht-leere linke und rechte Unterbäume. v 4 vi 4 Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst. vollst. i 2 n ii 2 j iii 3 n iv 3 j v 4 n Definition “strikt”: In einem strikten Binärbaum besitzt jeder innere Knoten nicht-leere linke und rechte Unterbäume. vi 4 n Aufgabe 16 - Lösung Höhe strikt ausgeglichen??? fast vollst. vollst. i 2 n ii 2 j iii 3 n iv 3 j v 4 n vi 4 n Aufgabe 16 - Lösung Höhe strikt ausgeglichen??? fast vollst. vollst. i 2 n ii 2 j iii 3 n iv 3 j v 4 n vi 4 n Definition “ausgeglichen”: Ein ausgeglichener Binärbaum ist ein Binärbaum, so dass gilt: 1. Jedes Blatt im Baum ist auf Stufe k oder k + 1, (k ≥ 0). 2. Jeder Knoten auf Stufe < k hat nicht-leere linke und rechte Teilbäume. Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst. vollst. i 2 n j ii 2 j j iii 3 n n iv 3 j j v 4 n n vi 4 n n Definition “ausgeglichen”: Ein ausgeglichener Binärbaum ist ein Binärbaum, so dass gilt: 1. Jedes Blatt im Baum ist auf Stufe k oder k + 1, (k ≥ 0). 2. Jeder Knoten auf Stufe < k hat nicht-leere linke und rechte Teilbäume. Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst.??? vollst. i 2 n j ii 2 j j iii 3 n n iv 3 j j v 4 n n vi 4 n n Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst.??? vollst. i 2 n j ii 2 j j iii 3 n n iv 3 j j v 4 n n vi 4 n n Definition “fast vollständig”: Ein fast vollständiger Binärbaum ist ein ausgeglichener Binärbaum, bei dem zusätzlich gilt: • Falls ein innerer Knoten einen rechten Nachfolger auf Stufe k + 1 besitzt, dann ist sein linker Teilbaum vollständig mit Blättern auf Stufe k + 1. Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst. vollst. i 2 n j n ii 2 j j j iii 3 n n n iv 3 j j j v 4 n n n vi 4 n n n Definition “fast vollständig”: Ein fast vollständiger Binärbaum ist ein ausgeglichener Binärbaum, bei dem zusätzlich gilt: • Falls ein innerer Knoten einen rechten Nachfolger auf Stufe k + 1 besitzt, dann ist sein linker Teilbaum vollständig mit Blättern auf Stufe k + 1. Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst. vollst.??? i 2 n j n ii 2 j j j iii 3 n n n iv 3 j j j v 4 n n n vi 4 n n n Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst. vollst.??? i 2 n j n ii 2 j j j iii 3 n n n iv 3 j j j v 4 n n n vi 4 n n n Definition “vollständig”: Ein vollständiger Binärbaum der Stufe k hat folgende Eigenschaften: • Jeder Knoten der Stufe k ist ein Blatt. • Jeder Knoten auf einer Stufe < k hat nicht-leere linke und rechte Teilbäume. Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst. vollst. i 2 n j n n ii 2 j j j j iii 3 n n n n iv 3 j j j n v 4 n n n n vi 4 n n n n Definition “vollständig”: Ein vollständiger Binärbaum der Stufe k hat folgende Eigenschaften: • Jeder Knoten der Stufe k ist ein Blatt. • Jeder Knoten auf einer Stufe < k hat nicht-leere linke und rechte Teilbäume. Aufgabe 16 - Lösung Höhe strikt ausgeglichen fast vollst. vollst. i 2 nein ja nein nein ii 2 ja ja ja ja iii 3 nein nein nein nein iv 3 ja ja ja nein v 4 nein nein nein nein vi 4 nein nein nein nein Aufgabe 16 - Lösung (b) Geben Sie zu jedem der Bäume (i)-(iv) an, durch welchen Ausdruck er gemäß ADT-Spezifikation BINTREE erzeugt wird. (4 Punkte) Aufgabe 16 - Lösung (b) Geben Sie zu jedem der Bäume (i)-(iv) an, durch welchen Ausdruck er gemäß ADT-Spezifikation BINTREE erzeugt wird. (4 Punkte) (i) BUILD(∅,a,BUILD(∅,b,∅)) Aufgabe 16 - Lösung (b) Geben Sie zu jedem der Bäume (i)-(iv) an, durch welchen Ausdruck er gemäß ADT-Spezifikation BINTREE erzeugt wird. (4 Punkte) (i) BUILD(∅,a,BUILD(∅,b,∅)) (ii) BUILD(BUILD(∅,b,∅),a,BUILD(∅,c,∅)) Aufgabe 16 - Lösung (b) Geben Sie zu jedem der Bäume (i)-(iv) an, durch welchen Ausdruck er gemäß ADT-Spezifikation BINTREE erzeugt wird. (4 Punkte) (i) BUILD(∅,a,BUILD(∅,b,∅)) (ii) BUILD(BUILD(∅,b,∅),a,BUILD(∅,c,∅)) (iii) BUILD(BUILD(BUILD(∅,c,∅),b,∅),a,∅) Aufgabe 16 - Lösung (b) Geben Sie zu jedem der Bäume (i)-(iv) an, durch welchen Ausdruck er gemäß ADT-Spezifikation BINTREE erzeugt wird. (4 Punkte) (i) BUILD(∅,a,BUILD(∅,b,∅)) (ii) BUILD(BUILD(∅,b,∅),a,BUILD(∅,c,∅)) (iii) BUILD(BUILD(BUILD(∅,c,∅),b,∅),a,∅) (iv) BUILD(BUILD(BUILD(∅,c,∅),b,BUILD(∅,d,∅)),a,BUILD(∅,e,∅)) mit dem leeren Baum ∅=CREATE().