Obiettivi didattici

Questo corso introduce alla topologia computazionale, ed in particolare a concetti, rappresentazioni e algoritmi per strutture topologiche di supporto alla geometria computazionale, alla modellazione geometrica, alla costruzione di mesh per simulazioni, e alla visualizzazione scientifica. Si illustrano tecniche parallele per rappresentare grafi e complessi di enormi dimensioni come matrici sparse, e per codificare algoritmi su grafi e complessi con metodi di algebra lineare.

Programma del corso

  1. Breve introduzione al linguaggio Julia per calcolo scientifico.
  2. Introduzione alla modellazione geometrica e alla visualizzazione scientifica.
  3. Complessi simpliciali, cellulari e di catene.
  4. Operatori di bordo e cobordo. Dualita`.
  5. Operatori algebrici di incidenza e adiacenza.
  6. Estrazione di modelli geometrici da immagini 3D.
  7. Triangolazioni di Delaunay e complessi di Voronoi.
  8. Funzioni di Morse e grafi di Reeb.
  9. Cenni alle strutture topologiche nei bigdata. Omologia persistente.
  10. Operazioni matriciali e sistemi lineari densi: Cenni a BLAS, LAPACK, scaLAPACK.
  11. Sistemi lineari sparsi. CombBLAS, GraphBLAS.
  12. Sviluppo di un progetto collaborativo: modelli 3D da immagini medicali.

Linguaggi di programmazione

Julia: "A fresh approach to technical computing"

Risorse di calcolo

Si utilizzerĂ  per scopi didattici il superserver NVIDIA DGX-1 del Dipartimento di Matematica e Fisica, integrato dalle risorse del laboratorio didattico di Matematica e del Laboratorio di Scienze Computazionali come punti di accesso.

Materiale didattico

  1. Lecture slides and diary

  2. Herbert Edelsbrunner and John Harer, Computational Topology. An Introduction, AMS, 2011.

  3. Jeremy Kepner and John Gilbert, Graph Algorithms in the Language of Linear Algebra, 2011.

  4. Timothy A. Davis, Direct Methods for Sparse Linear Systems, SIAM, 2006