Table of Contents

Projektgruppe PlaDs

News

Info

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

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.

Themenbereiche

Die zu implementierenden Datenstrukturen gehören zu folgenden Themenbereichen:

Seminar

Aufgabe im Seminar ist das Zusammentragen der in der vorgegebenen Literatur vorgestellten platzeffizienten Datenstrukturen. Dies umfasst

  1. einen 25-30-minütigen Vortrag im Blockseminar und
  2. eine 8-10-seitige Ausarbeitung mit der Idee, dass sie später in den PG-Bericht übernommen werden kann.

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.

Themen und Zuordnung

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 Range Minimum Queries Kowalski & Gabrowski: Faster range minimum queries kartesischer Baum (nicht vergeben)
Gawrychowski et al.: Compressed Range Minimum Queries Sparse Table
10 Vorgängerdatenstrukturen 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

Ablauf

Donnerstag, 10.10.2019

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.)
Freitag, 11.10.2019

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

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