BIE-EFA – Efficient Algorithms
Students get a solid overview of efficient algorithms for solving classical algorithmic problems: selecting, searching, sorting, and other basic forms of reshaping and processing tree-like data structures. Students are able to design and implement such algorithms, analyze their complexity, and develop an optimized efficient algorithm under specific requirements or constraints. They are able to recognize a proper algorithm variant for any specific usage.
- Mathematical foundations for the theory of algorithmic complexity.
- Sorting in $n\log n$, advanced analysis of QuickSort.
- Sorting in linear time, sorting in external memory.
- Recursion, complexity analysis of recursive algorithms, transformation to iterative algorithms.
- Binary heaps, priority queues, binomial and Fibonacci heap.
- Dynamic programming.
- Search problem, 1D address search, mapping function.
- Hash tables, open and chained addressing, hash functions.
- Associative search, binary search trees, pattern matching in a text.
- Multidimensional search, multidimensional search trees.
- Balancing of search trees.
- Recap of discrete and asymptotic mathematics.
-  Implementation, stabilization, and in-depth complexity analysis of sorting algorithms.
- Implementation and complexity analysis of sorting in external memory.
- Comparison of recursive and iterative algorithm designs, mutual transformations.
- Advanced heaps.
- Dynamic programming techniques.
- Address search, design of mapping functions.
- Hash table usage, open and chained addressing.
- Search trees, binary search trees, pattern matching.
- Multidimensional search trees, closest neighbor.
- Balanced search trees.