Platzeffiziente Datenstrukturen (succinct data structures) sind solche, die Anfragen effizient beantworten können und deren Speicherplatzverbrauch dabei möglichst nah an der theoretischen unteren Schranke liegt. Ein einfaches Beispiel ist das Zählen von 0- oder 1-Bits in Bitstrings bis zu einer bestimmten Position: Ohne Vorverarbeitung ist dies einfach in linearer Zeit in der Länge des Strings möglich. Es gibt jedoch platzeffiziente Datenstrukturen, die diese so genannten rank-Anfragen in konstanter Zeit beantworten und dabei nur sublinear viel Speicherplatz benötigen. Diese bieten u. a. die Grundlage für platzeffiziente Darstellungen von Bäumen mit nur 2n + o(n) Bits (bei Knotenzahl n).
Ziel der Projektgruppe ist der Entwurf und die Implementierung einer hochperformanten, erweiterbaren C++-Bibliothek verschiedener platzeffizienter Datenstrukturen sowie das Benchmarking dieser Bibliothek im Rahmen typischer Anwendungsfälle der entwickelten Datenstrukturen.
Die zu implementierenden Datenstrukturen gehören zu folgenden Themenbereichen:
Aufgabe im Seminar ist das Zusammentragen der in der vorgegebenen Literatur vorgestellten platzeffizienten Datenstrukturen. Dies umfasst
Der Vortrag dient hauptsächlich dem Zweck, den anderen PG-Mitgliedern einen Überblick über das erarbeitete Thema zu geben. Es geht hier also weniger um die formale Vollständigkeit (Beweise usw.) als um eine didaktisch wertvolle Darbietung des Themas, so dass die anderen Mitglieder die Funktionsweise verstehen. Versetzen Sie sich in diese und überlegen Sie, welche Informationen wirklich zum Verständnis notwendig sind. Die Ausarbeitung sollte dann etwas tiefgreifender werden. Grundsätzlich richten Sie sich am besten an unsere allgemeinen Seminarhinweise (Abschnitte 5-7, wobei der Vortrag eben nur rund 25 Minuten dauern soll).
Die folgenden Punkte sollten rüberkommen:
Die Ausarbeitungen sollen mit LaTeX geschrieben werden. Verwenden Sie hierzu den LIPIcs-Stil - eine Vorlage befindet sich hier (lipics-v2019-authors.zip
).
Das PG-Blockseminar findet einmalig am Do, 10.10.2019 und Fr., 11.10.2019 jeweils ab 10:00 Uhr statt.
Das Seminar umfasst folgende Themen. Die Literatur wird bereitgestellt, ist aus dem Uninetz aber auch unter den angegebenen Links abrufbar.
# | Thema | Literatur | Stichworte | Zugewiesen an |
---|---|---|---|---|
1 | Baumähnliche Graphen | Fischer & Peters: GLOUDS - Representing tree-like graphs | LOUDS, Wavelet Tree | M.F. |
2 | Document Retrieval | Hon et al: Indexes for Document Retrieval with Relevance (ohne External Memory) | Suffixbaum, Compressed Suffix Array | M.T. |
3 | Dynamische Bitvektoren mit Rank/Select | Navarro: Compact Data Structures (Kapitel 12.1) | komprimierter Bitvektor, balancierter Suchbaum | J.-P.T. |
4 | Grammatiken (SLPs) | Tabei et al.: A Succinct Grammar Compression | Dictionary, Wavelet Tree | J.T. |
5 | Grammatikkompression | Furuya et al.: MR-RePair Grammar Compression based on Maximal Repeats | Maximaler Repeat, Re-Pair | J.M. |
6 | Minimal Perfect Hashing | Müller et al.: Retrieval and Perfect Hashing Using Fingerprinting | Hashing, Karp-Rabin-Fingerprint | A.H. |
7 | Minimal Perfect Hashing | Genuzio et al.: Fast Scalable Construction of (Minimal Perfect Hash) Functions | Broadword Programming, Gaussian Elimination | H.D.D. |
8 | Planare Graphen | Ferres et al.: Fast and Compact Planar Embeddings | Duale Graphen, Spannbäume, Turán-Repräsentation | A.K. |
9 | | Kowalski & Gabrowski: Faster range minimum queries | kartesischer Baum | (nicht vergeben) |
Gawrychowski et al.: Compressed Range Minimum Queries | Sparse Table | |||
10 | | Matsuoka et al.: Semi-dynamic Compact Index for Short Patterns and Succinct van Emde Boas Tree (nur Abschnitt 3) | van Emde Boas Tree, b-Bäume | (nicht vergeben) |
Dementiev et al.: Engineering a Sorted List Data Structure for 32 Bit Keys | van Emde Boas Tree, Hashing |
Ort: OH12 3.030
Zeit (s.t.) | Vortrag |
---|---|
10:00 - 10:15 | Einführung |
10:15 - 11:00 | Document Retrieval (M.T.) |
11:00 - 11:45 | Baumähnliche Graphen (M.F.) |
11:45 - 12:30 | Planare Graphen (A.K.) |
12:30 - 13:30 | Mittagspause |
13:30 - 14:15 | Dynamische Bitvektoren mit Rank/Select (J.-P.T.) |
Ort: OH14 202
Zeit (s.t.) | Vortrag |
---|---|
10:00 - 10:45 | Minimal Perfect Hashing 1 (A.H.) |
10:45 - 11:30 | Minimal Perfect Hashing 2 (H.D.D.) |
11:30 - 12:15 | Grammatikkompression (J.M.) |
12:15 - 13:00 | Grammatiken / SLPs (J.T.) |
13:00 - 14:00 | Mittagspause |
14:00 - 15:00 | Bit Vector Coding Challenge |
In der Bit Vector Coding Challenge soll die Programmierung mit C++ im Rahmen von platzeffizienten Datenstrukturen aufgebaut bzw. aufgefrischt und vertieft werden.
Der Code-Rahmen und die Aufgabenstellung befinden sich hier: https://github.com/pdinklag/bvcc
Die Aufgaben sind zum Blockseminar zu erarbeiten, wo dann ein Benchmark durchgeführt wird, um den oder die Sieger zu ermitteln. Der Code-Rahmen enthält eine funktionale, aber wenig platzeffiziente Implementierung für Bitvektoren, Rank und Select, die durch eine eigene ersetzt werden soll.
Folgendes Bild hatten wir in der ersten PG-Sitzung zur Rank1-Datenstruktur nach dem Buch von Navarro (Compact Data Structures) produziert: pg-rank.pdf