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().