Übungen Algorithm Engineering - Blatt 2
Abgabe 3.5.2010, Besprechung 6.5.2010
1. (Spezielle Vorrangwarteschlangen) Geben Sie die (a) 1-level-Bucket, (b) 2-level Bucket, und (c) Radix-heap Datenstruktur für die Elemente 31, 8, 71, 4, 6, 24, 7, 73 an. Wählen SieC= 80.
2. (Dynamische Vektoren)
(a) Zeigen Sie, dass eine Verdopplungsstrategie von dynamischen Arrays zur amortisiert konstan- ten Zeit führt.
(b) Wie sollte verkleinert werden, damit Oszillierungseffekte vermieden werden?
(c) (*) Recherchieren Sie, wie ein dynamischer Vektor verwaltet werden kann, der nicht nur amor- tisiert, sondern auch worst-case konstante Zeit benötigt.
(d) Implementieren Sie so Array-basierte amortisiert/worst-case logarithmische Heaps als Vorrang- warteschlange (zumindest im Pseudo-Code). Beachten Sie dabei die Validität von Iteratoren.
3. (Bitvektormengen)
Berechnen Sie das höchst- oder niedrigst-signifikante Bit einer 32-bitunsigned integerZahl in nahe- zu konstanter Zeit, durch ein Computerprogramm durch mindestens zwei der folgenden Methoden:
(a) Einer Tabelle von216Zahlen; (b) Umwandlung in eine Fließkommazahl; (c) Betrachtung und Verarbeitung vonx&−x; (d) Alternative Bithacks (Stichwörter: mult,mod,deBruijn); oder (e) Rückgriff auf Prozessordirektiven (z.B. in SSE4.2). Nutzen Sie diese Umwandlungsmöglichkeit, um eine effiziente Mengenimplementierung von max. 32 Elementen zu implementieren, die das Einfü- gen (eines gegebenen) und das Löschen (deserstenElements) in konstanter Zeit unterstützt.
4. (Redundante Zahlensysteme)
Ein Heap-Speicher ist eine Sequenz von perfekten Weak-Heaps, geordnet nach ansteigender Baum- höhe. Um einen worst-case effizienten Heap-Speicher mit maximal zwei perfekten Weak-Heaps ei- ner Höhe zu bauen, benötigt man ein redundantes Zahlensystem, in dem Einfügungen von Weak- Heaps der Größe 1 nur konstant viele Join-Operationen nach sich ziehen. Eine redundante Zahl r = (r0, . . . , rk)∈ {0,1,2}k+1ist regulär, wenn jede Zahl 2 von einer Zahl 0 angeführt wird; mit möglichen Einsen dazwischen. So enthältr= (1011202012)drei Blöcke der Form(01l2).
(a) Zeigen Sie: Die redundante Darstellung bleibt durch stete Einfügeoperation (+1) regulär.
(b) Finden Sie (effiziente) Vorschriften, die die redundanten Darstellung von Zahlen in die binäre Darstellung und umgekehrt abbilden.
(c) (*) Funktioniert das Verfahren auch für perfekte Heaps? Recherche!
5. (Allgemeine Vorrangwarteschlangen)
Führen Sie in einer initial leeren Binomial Queue die folgenden Operationen aus:
(a) Insert(65), Insert(43), Insert(38), Insert(31), Insert(27), Insert(21), (b) Insert(12), Insert(9), Insert(7), Insert(4), DeleteMin,
(c) DecreaseKey(43,24), Delete(31), DecreaseKey(38,3), DeleteMin.
Geben Sie die Zwischenergebnisse nach jeder Teilaufgabe an.
1