Questa è una vecchia versione del documento!
Indice
Year 2022-2023
Announcements
- The course will start on Feb. 22, 2023.
Schedule (work in progress)
- Class hours: Mon 09‑11 (Fib-X1), Wed 09‑11 (Fib-L1), Fri 11-13 (Fib-L1)
- MS Teams channel here, please subscribe
- Office hours: remotely by appointment
Overview
The advanced nature of this course focuses on developing algorithmic design skills, exposing the students to complex problems that cannot be directly handled by standard libraries (being aware that several basic algorithms and data structures are already covered by the libraries of modern programming languages), thus requiring a significant effort in problem solving. These problems involve all basic data types, such as integers, strings, (geometric) points, trees and graphs as a starting point. The syllabus is structured to highlight the applicative situations in which the corresponding algorithms can be successfully employed, making references to software applications and libraries. The level of detail in each argument can change year-by-year, and will be decided according to requests coming from other courses in the curriculum and/or specific issues arising in, possibly novel, applicative scenarios.
Exams
Written exam: weekly hands-on in classroom (attendance is highly suggested).
Oral exam: topics discussed in class, please read the references in the notes.
Syllabus: programma d'esame
Topics
- Please see the topics listed below. Handouts are are available in the MS Teams channel.
Activity in class
- The screen snapshots shown during the classes are available in the MS Teams channel.
Official forms for the course
- Access to the course evaluation form (questionario studenti) before taking examination.
Class schedule
Date | Topics | References and notes |
---|---|---|
22.02.2023 | Introduction to the class. | |
24.02.2023 | Playing with probability. Random indicator variables: secretary problem and random permuting (suggested reading: birthday paradox). Randomized quick sort. | [CLRS 5.1-5.3 (optional 5.4.1), par. 7.3] code |
27.02.2023 | Virus scan and stream analysis with Karp-Rabin fingerprints: randomized checking and pattern matching. Montecarlo and Las Vegas algorithms. | [RM par.7.4-7.6] code |
01.03.2023 | Universal hashing. Markov's inequality. Perfect hashing. | [CLRS 11.2, 11.3.3, CLRS 11.5 ] code |
20.03.2023 | Worst-case constant-time lookup: Cuckoo hashing. | Notes Notes code |
22.03.2023 | Proxy caches and dictionaries with errors: Bloom filters. | Survey: except par.2.5-2.6 (optional: par.2.2) |
27.03.2023 | Space-efficient storage of sets with approximate memberships: upper and lower bounds. | Notes (second part) |
29.03.2023 | Distributed server and load balancing through hashing. | blog Sect.7 and 8.1 |
03.04.2023 | Document resemblance with MinHash, k-sketches and the Jaccard similarity index. Azuma-Hoeffding bound. Triangle counting. | paper paper Azuma-Hoeffding code |
05.04.2023 | Count-Min sketches for frequent elements. | sects.1-3, 4.1 Site Notes code |
08.05.2023 | Fixed-parameter tractable (FPT) algorithms. Kernelization. Bounded search tree. Case study: min-vertex cover in graphs. | sect. 2.2.1, 3.1 |
10.05.2023 | Randomized FPT algorithms: color coding and randomized separation. Case study: longest path in graphs and subgraph isomorphism. | sect. 5.2, 5.3 |
24.04.2023 | Networked data and randomized min-cut algorithm for graphs. | par.1.1 |
26.04.2023 | Approximation in fine-grained algorithms and limitations. Case study: diameter in undirected unweighted graphs. | notes |
03.05.2023 | Fine-grained algorithms. SETH conjecture and conditional lower bounds. Guaranteed heuristics. Case study: diameter in undirected unweighted graphs. | notes sect. 2.3, 2.4, 3, 4 |
12.05.2023 | Local search, Greedy, Randomized: case study of max cut for graphs. | Notes |
15.05.2023 | NP-hard problems: download file manager and the knapsack problem. Dynamic programming algorithms for Knapsack: Case 1: integer weights, complexity O(nW). Case 2: integer values, complexity O(n2vmax). Examples. General inapproximability results. Case study: travel salesman problem (TSP). 2-approximation algorithms for metric TSP. | [CLRS 35.2] notes |
17.05.2023 | NP-hard problems: fully polynomial-time randomized approximation schemes (FPRASs). Case study: #knapsack problem. | notes notes code |