Planeamento
Aulas Laboratoriais
Project Introduction
"Hello World" program in C and input parsing.
Pairing Heap Implementation
Project support. Drawing binomial heaps with graphviz. Loading heaps from a description.
Pairing Heap Implementation
Implementing the Unite operation.
Pairing Heap Implementation
Implementing the ExtractMin operation.
Modeling Second Project
Modeling the airport connection problem.
Implementing Union Find
Implementing the weighted quick-union data structure for the second project.
Kruskal Algorithm
Implementing Kruskal algorithm.
Borůvka's algorithm
Implementing Borůvka's algorithm.
Implementing a Suffix Tree
Discussion of structures for representing nodes.
Implementing Suffix Trees
Implementing tree construction and traversal operations.
Implementing Suffix Trees
Implementing the skip count trick operation. Solving exam exercises.
Implementing Suffix Trees
Debugging Ukkonen's algorithm.
Ukkonen's Algorithm
Final details on implementing Ukkonen's algorithm in linear time.
Aulas Teóricas
Course Introduction
Introduction to the AA course. O notation, see Introduction to Algorithms [CLRS Cap. 3]. Binomial heaps [CLRS Cap. 19].
Amortized Analysis and Fibonacci Heaps
Search Trees and graphs
Binary search trees, 2-3 Trees and B-Trees. Graph representation, simple searches on graphs, DFS+BFS. Minimum Spanning trees, algorithms, Prim, Kruskal and Boruvka.
Union-Find and String Matching
String Algorithms and Data structures
Online matching, Boyer-Moore. Suffix trees, definition, liner space bound, suffix links, Ukkonen's Algorithm.
Applications of Suffix Trees
Lowest Common Ancestors
Suffix Arrays [Gusfield 7.14]. The Lowest Common Ancestor problem, reduction to Range Minimum Queries. Sparse table solution to RMQ. Optimal solution to RMQ +-1. Optimal solution to general RMQ with Cartesian trees. Finding all maximal palindromes in linear time [Gusfield 9.2].
Probabilistic techniques
Probabilistic Analysis
Markov Chains and Random Walks
Markov Chains definitions, hitting time, commute time and cover time. An algorithm for 2SAT. Stationary distribution. Random walks on undirected graphs. Bounds on commute and cover time. An algorithm for s-t path. Uniform generation of spanning trees.
Linear Time MSTs and Yao's Minimax Principle
Computing a Minimum Spanning Tree in expected linear time. Introduction to game theory and Yao's minimax principle.
Splay trees and Succint data structures
Move to front, competitive analysis. Splay trees, Optimality results. Succinct data structures, rank and select in constant time. Wavelet trees, Burrows wheeler transform and backward search.
Revisions
Solving exam exercises.