Praxisprojekt: Implementierung von theoretischen Algorithmen und Datenstrukturen mit Rust
Prof. Dr. Johannes Köster
Universität Duisburg-Essen
Sommersemester 24
Rust
fn hello(who: &str) {
println!("Hello {}!", who);
}
fn main() {
let who = "World";
hello(who);
}
- Typ-Inferenz
- Macros: Code-Generierung zur Compilezeit
- Ownership and Borrowing: Speicher-Management zur Compilezeit, keine ungültigen Zeiger
Wavelet trees
alabar a la alabarda
01000100010001000110
00100000000100
010010
111010101111
1110
00
00
000000000
0
000
000
Operationen
alabar a la alabarda
01000100010001000110
00100000000100
010010
111010101111
1110
00
00
000000000
0
000
000
- \(access(i)\): Zeichen an Position \(i\)
- \(rank_x(i)\): Anzahl der Vorkommen von \(x\) bis Position \(i\)
- \(select_x(i)\): Position des \(i\)-ten Vorkommens von \(x\)
Anwendungen
- Sequenz von Werten
- Sortierung (Blätter) mit Zugriff auf Originalposition
- Permutation
- Koordinatengitter
- Volltextindex
- Gerichteter Graph
Unser Ziel
Eine vollständige Graphbibliothek auf Basis von Wavelet-Trees.
Schwierigkeit:
Wavelet-Trees sind statisch und lassen sich nicht (in dem Maße wie benötigt) updaten.
Welche Strategien lassen sich entwickeln um die Vorteile von Wavelet-Trees auszunutzen und trotzdem eine Graphbibliothek mit Updateoperationen zu ermöglichen?
Semesterplan
Tag | Thema |
---|---|
10.4.2024 | Einführung, Rust lernen + Manuskript vorbereiten |
17.4.2024 | Rust lernen + Manuskript vorbereiten |
24.4.2024 | Rust lernen + Manuskript vorbereiten |
1.5.2024 | Feiertag |
8.5.2024 | Journal Club |
15.5.2024 | Implementierung der Rust-Bibliothek |
22.5.2024 | Implementierung der Rust-Bibliothek |
29.5.2024 | Implementierung der Rust-Bibliothek |
5.6.2024 | Implementierung der Rust-Bibliothek |
12.6.2024 | Implementierung der Rust-Bibliothek |
19.6.2024 | Implementierung der Rust-Bibliothek |
26.6.2024 | Implementierung der Rust-Bibliothek |
3.7.2024 | Implementierung der Rust-Bibliothek |
10.7.2024 | Vorbereitung der Abschlusspräsentationen |
17.7.2024 | Abschlusspräsentationen |
10-16 Uhr, 4h Anwesenheit + 2h frei planbar
Journal Club (1/3 Note)
Eigene visuelle Beispiele zu wavelet matrix, rank, select, access, und Graph-Kodierung
Graphbibliothek (1/3 Note)
- Vollständigkeit (gerichtet, ungerichtet, Edit-Operationen, load&store, klassische Graph-Algorithmen, Vergleich mit anderen Gruppen)
- Effizienz der entwickelten Lösung
- Codequalität
- Testabdeckung
- Innovationsgrad hinsichtlich des Umgangs mit den Wavelet-Tree-Beschränkungen
- Dokumentation
Präsentation (1/3 Note)
- Inhaltliche Vollständigkeit der Folien (auch Fehlschläge oder verworfene Ideen sind wertvoller Inhalt)
- Verständlichkeit der Folien und des Vortrags
Semesterplan
Gruppenarbeit
Phase 1 (Rust+Manuscript):
Jeder macht die Übungen und liest den Text, aber Austausch und Kooperation sind erwünscht.
Phase 2 (Implementierung):
3/4er-Gruppen
Praxisprojekt:
By Johannes Köster
Praxisprojekt:
- 374